While testing the examples distributed with the code, a few errors were
found and fixed, mostly related with the K matrix in 1D geometry and
reading values from initial conditions for species.
Finalysing first step of performance improvement focusing on reducing
iteration CPU time by improving calculation of basic element functions,
which took a lot of the CPU time
I noticed that phy2logquad had a lot of overhead. Trying to reducing it
by simplifying calls to fPsi, dPsi and such.
The function for fPsi has been made so no memory is allocated and works
under the assumption that the input array has the right size (1:numNodes)
Ionization and recombination collisions have been modified to have the
right products accounting for the possibility that primary electron and
target particle have different weight.
Now particles can be split to increase statistics when they enter a
smaller cell. However, this only has an effect for collisions.
Still, I have to rethink a lot about this feature.
An issue in the node volume calculation in cylindrical coordinates was
found. This was causing wrong conservation of current. Still to test
with ALPHIE_Grid case.
Still to check triangular element.
Still to theck 1D radial geometry
New input variables to activate the average scheme.
Still only computing the mean, no the standard deviation.
Output checked with ALPHIE Grid example. Looks good.
No impact on CPU time, although testing is still required.
Output for the example ALPHIE_Grid.
Found an issue when multiple injections were used with species with
different time steps.
Modification to the way to compute the ionization boundary:
The maximum number of ionizations is computed by eRel/eThreshold
(relative energy / threshold of ionization)
For each possible ionization, the probability of ionization is
computed based on the density of neutrals, cross section and effective
time divided by the number of maximum ionizations.
If an ionization takes place, the ionization energy is substracted
from the relative energy.
Documentation adapted to the new way to define geometry and pushers.
Examples are currently being tested and small modifications are being
done to include a reference output.
Merging branches and fixing a number of important issues:
- Initial particles were not being assigned to the list of particles.
- List of particles was being erased every iteration, even if species
was not pushed.
These caused issues with the calculation of collisions when a species
was frozen.
Now, things should work properly. All particles are properly added to
the volume list and the list is erased ONLY if the species has been
updated.
I hope that collisions are now properly accounted for per species pair.
Now the number of collisions is calculated per species pair. This allows
that the randomly particles selected for collisions do not have
collisions assigned.
First implementation of Electromagnetic pusher.
Some testing is still required.
Documentation needs to be upgraded to match the changes in this branch.
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.