Commit graph

43 commits

Author SHA1 Message Date
5b5dadce39 Restructuring the geometry and pushers
The geometry and push structure has been reworked to allow eassy adding
new pushers.

Documentation not updated yet.

Baseline for merging Cartesian pushers into one.
2022-04-08 19:06:12 +02:00
9af3429395 Issue with random position in volumes
Fixed an issue in which  the position in triangular an thetrahedron
elements were not correctly being computed.

Other minor issues fixed:
  - Units in input file now do not use '/'.
  - Collisions accuratly conserve momentum.
  - Minor improvements in mass calculation in collisions.
2021-05-24 12:37:16 +02:00
b40d867d74 Removed innnecesary input from input file 2021-04-13 21:51:08 +02:00
a681b9f533 0D Grid geometry
Implementation of the 0D grid to test collisional processes.

An OMP_LOCK was added to the nodes to properly write perform the
scattering (it is weird that multiple threads work in the same node at
the same time, but in 0D happens everytime).

Added a new case to test the 0D geometry.

User Manual updated with the new options.
2021-04-13 21:48:44 +02:00
cbcefb06c8 Final implementation of a specific mesh for MCC, added a case for
cylFlow that used two meshes and the User Manual has been updated.
2021-04-05 09:45:57 +02:00
a2631f6b78 Impliementation of a collision mesh which is independent for the mesh
used to scatter particles and compute the EM field.
2021-04-03 09:20:46 +02:00
3f91d9e1ed Reading of mesh files has been made independent from geometry and
prepared to accept different formats.
2021-03-29 09:45:51 +02:00
6431120734 Small modifications to the 1D Cathode case. 2021-03-28 15:17:10 +02:00
95d5a1200d Included a new cases of 1D Cathode emission based on plasma background
previously computed.
2021-03-11 12:54:51 +01:00
1f077eeb91 Modifications to cases to fix minor issues. Work in having a 1D Cathode
model working
2021-03-06 19:19:46 +01:00
ac2965621a Structure for 3D Cartesian Grid created.
Unification of boundary conditions into one file.

Some changes to input file for reference cases. This should have been
done in another branch but I wanto to commit to save progress and I
don't want to deal with tswitching branches right now, I'm very busy
watching Futurama.
2021-02-27 16:24:44 +01:00
9d146b9bcc Number of threads set to 24. 2021-01-27 10:01:19 +01:00
20bc1abc29 Fixed an issue in which the logical coordinates of the particle (xi)
were not being initialized and was causing particles to get stuck in
  the iteration loop.
2021-01-27 09:59:37 +01:00
2eae95002d Small modifications to 1D input files to make them start from a small
x/r position to avoid huge fields in Radial case when r -> 0 due to
charge accumulation.

Added a Gnuplot script to plot both potential profiles extracted from
Gmsh.
2021-01-23 10:58:39 +01:00
2a6628d529 Added and option to include an output folder name. The date and time of
creation is still appended to the folder name provided.
2021-01-20 16:36:01 +01:00
fc272be08f New version of the manual explaining briefly collisional processes and
the examples.

README.md updated to include basic installation instructions.

Small changes to input files (just formatting)
2021-01-19 10:46:09 +01:00
5516e46ec3 Particles are injected in each iteration and pushed with tauMin when
injected. Then, particles are pushed as normal in their own time step.
2021-01-02 16:31:31 +01:00
874d573e89 New and improved method to calculate collisions per iteration:
In each iteration, number of collisions are calculate as a REAL variable
(collFrac) and stored in each cell. The number of collisions is
calculated as FLOOR(collFrac) and, if it is >1 collisions are computed
as usual. Per each collision calculated, 1.0 is removed from collFrac
2021-01-02 14:09:27 +01:00
4ba08e74af Method to divide collisions from a collisional iteration into multiple
pushing iterations.
2021-01-02 12:50:22 +01:00
e50cc3325b Implementation of ionization process.
Now collisions can have a different time step.

Added species name to output names as it was starting to get confusing
in Gmsh for multiple species.

Output filenames adapted to match any number of iterations.
2020-12-25 23:08:59 +01:00
159d1527e6 Fixed a bug related with reading information on linking species. 2020-12-22 16:52:05 +01:00
35936ea918 Implementation of charge exchange and structure for ionization
processes.
2020-12-22 10:41:30 +01:00
9e3a1a771b Modification in boundary conditions:
- Now absorption scatte the particle  properties into the edge nodes.
  - New boundary condition 'transparent' subsitute old absorption.
2020-12-17 21:16:35 +01:00
2c3e25b40e Added the possibility to have different boundary conditions per species.
A boundary condition for each species must be indicated in the case
file.
This opens the door to use boundary conditions with different parameters
(for example, a wall temperature, coefficients for reflection or
 absorption...)

The examples included with the code have been updated accordently.
2020-12-17 18:21:27 +01:00
dc98fe9399 New version of the user manual.
Small modification 1D_Cathode cases.
2020-12-15 15:27:06 +01:00
d3d070a367 First implementation of 1D radial case. Only charged particles taked
into account (as in 1D Cartesian case).

The 1D Cathode example case has been modified, having now 2 input files:
  - inputCart.json: Used for Cartesian coordinates
  - inputRad.json:  Used for Radial coordinates

Pusher is a Boris pusher but without z direction.
2020-12-13 22:14:37 +01:00
f151f3cd0e Renaming the generic 'non-analogue' scheme for 'weighting' scheme. 2020-12-13 17:04:52 +01:00
37b0139b1f Implementation of different distribution functions for velocities.
Maxwellian and Diract Delta distributions have been implemented.

The input for injection of particles should be rewritten to allow more
clear input file.
2020-12-13 13:56:48 +01:00
7152a232fe Separating CPU time output from Data outut to allow better analysis. 2020-12-07 17:58:33 +01:00
d69b59143d !Implementation for 1D solver for charged particles. Added a 1D case for
testing. Still, no formal test has been performed so issues may appear.
2020-12-07 09:12:30 +01:00
7859a73274 First implementation of Non-Analogue Scheme using volume weighting. The
scheme to use is chosen in the input file. Additional schemes could be
added easily.
2020-12-03 08:57:34 +01:00
a5d5ceb53d Implementation of different time steps per species. 2020-12-01 17:37:22 +01:00
d0bd6e73ed First implementation of multiple pushers for different species 2020-11-29 19:10:11 +01:00
075530e967 The electric field from a triangular element is incorrect. Issue with
directional derivative depending on the definition of first node. Trying
to solve it with searching for the right first node but it is very
difficult. A solution is required to allow triangular meshes in charged
simulations.
2020-11-26 09:04:26 +01:00
7b707e7806 Renaming of code. New name is FPAKC. 2020-11-16 18:25:42 +01:00
c82279f5c5 First version with possibility for charged particles to be included.
Now, the solver needs to be an input parameter of the case, to select if
it is for charged or neutral particles.

Resolution of Poisson equation with Dirichlet boundary conditions is
possible. The source vector is the charge density. This resolution is
done in two steps to save computational time:
  1. When reading the mesh, the PLU factorization of the K matrix is
  computed.
  2. In each iteration, the system K*u = f is solved, in which f is the
  source vector (charge density) and u is the solution (potential) in
  each node.

No case has been added to the repository. This will be done in next
commit.

The 'non-analog' scheme has been commented. It still needs to split
the particle to avoid 'overweight' particles.
2020-11-15 21:16:02 +01:00
e44eed8af8 Base commit befor trying to use dynamic scheduling to boost parallel
performance.
2020-10-18 17:00:15 +02:00
bf6caad56a Final adjustments, format of verbose corrected and minor modifications
to the input case cylFlow.
2020-10-18 00:21:13 +02:00
fd42e0f3f9 Huge improvement in reset (by increasing a little bit push time) using
OMP locks to assign particles to cells in the pushing step.

Trying to combine push+reset and  collision+scatter did not work.
2020-10-17 18:46:10 +02:00
1686da7694 Trying to use OpenMP locks to improve code performance in parallel
regions.
2020-10-17 15:23:34 +02:00
ffb03e634b Minor improvements in performance and code clarity.
Still no solution for the reset subroutine. It is really time
consumming.
2020-10-13 18:16:18 +02:00
60f38a2d95 Commit befor trying to convert particle array to linked list to improve
performance.
2020-10-10 21:25:49 +02:00
05f5adcfe1 First commit of branch performance:
Bugs fixed:
- Solved an issue with particles being injected with infinite velocity
  resulting in Inf velocity in some cells of the output files.
- Particles are now equally distributed in cylindrical geometry along
  the radial direction.

New features:
- Particles now have their own weight that is recalculated when the
  particle moves to a new cell. This avoid the reduction of density at
  r = 0.

Cases:
- Added a case of Argon flow around a cylinder to measure performance
  and future improvements.
2020-10-10 14:47:22 +02:00