Basically things do not work. I've added a correction to the node volume
in the axis which gives okays results but still this is not perfect. I
need to find a better way to do things.
Also, I've noticed that the density changes with the size of the cells,
which should not happen! I'vw to check this issue.
Trying to have a very simple volume per node assuming a rectangle and
the density at the axis it higher than it should (kinda like when using
the more accurate volume calculation).
This is still weird. I also suspect that the size of the first cell in
the axis will also affect this...
So now each edge has the same number of particles and the weight of each
particle is calculated based on the surface of each edge compared to the
total one.
Only in 2DCyl, still to extend to other geometries.
Not perfect constant density, but the issue might be the node volume.
Fixed an issue with random integer numbers.
Cylindrical coordinates are not perfect yet:
- Box (cylinder) with initial constant density loses particles at r =
0
- Injection density still low in r = 0
I have to change the injection of particles. Each edge will receive a
similar number of particles and their weight will change to have a
constant density based on the geometry.
Still testing.
I think that the volume of the nodes is not being well calculated, maybe
we need a better volume calculation for this, using multiple points (as
it is done for K)
The random position for edges in the axis is corrected so that there is
a more uniform charge density in the axis.
Still, things are not perfect and this is something to really look into
in the future.
After fixing all possible divisions by zero I was able to find in the
Coulomb collision I think that this is a first working implementation of
a Coulomb operator based on moments.
Still to test a few things, modify the manual but I would say that I'm
satisfiyed right now. This operator won't be used that often but maybe
improving efficiency is still needed.
In the future a binary operator is required to be able to study cases
out of Maxwellian equilibrium.
Probes are now written at the 0 iteration.
Additionally, and this shouldn't be done, some small changes to the quad
elements. This should be done in a separate commit, but I'm lazy.
Due to a high convergence value (1.0e-2) in phy2logQuad (variable conv),
particles were being stuck in some elements, reaching a segmentation
fault. The new limit (1.0e-4) should avoid this.
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)
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
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.
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.
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.
easy to use a file from a previous run without processing it into a
plain text file.
Although the previous method presented some updates for 1D small cases,
this is quite easy to do with any type of simulations and, in the
future, with different mesh formats.
Documentation updated properly.
3D Cartesian geometry also tested.
Documentation updated properly.
Added weighting probability in the injection of particles.
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.