Documentation change and testing examples

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.
This commit is contained in:
Jorge Gonzalez 2022-12-09 16:05:32 +01:00
commit 8dd3023bc0
12 changed files with 3075 additions and 64 deletions

Binary file not shown.

View file

@ -405,28 +405,30 @@ make
The object \textbf{geometry} contains information about the type of geometry, the mesh file format and the mesh filename.
The accepted parameters are:
\begin{itemize}
\item \textbf{type}: Character.
\item \textbf{dimension}: Integer.
Number of spatial dimensions of the geometry.
Current values are: $0$, $1$, $2$ or $3$.
Zero dimension is a fictitious volume.
Geometry used mostly to test collisional effects.
No boundary or EM field is solved.
No injection can be implemented.
Initial state must be read from file.
No mesh file is required.
The optional argument \textbf{geometry.volume} can be used to set a value for the fictitious volume.
Otherwise, the volume is set to 1 in non-dimensional units.
\item \textbf{type}: Character.
Type of geometry.
Current accepted vaules are
\begin{itemize}
\item \textbf{3DCart}: Three-dimensional grid ($x \hyphen y \hyphen z$) in Cartesian coordinates..
For \Gls{gmsh} mesh format, the coordinates $x$, $y$ and $z$ correspond to $x$, $y$ and $z$ respectively.
\item \textbf{2DCyl}: Two-dimensional grid ($z \hyphen r$) with symmetry axis at $r = 0$.
For \Gls{gmsh} mesh format, the coordinates $x$ and $y$ correspond to $z$ and $r$ respectively.
\item \textbf{2DCart}: Two-dimensional grid ($x \hyphen y$) in Cartesian coordinates..
For \Gls{gmsh} mesh format, the coordinates $x$ and $y$ correspond to $x$ and $y$ respectively.
\item \textbf{1DRad}: One-dimensional grid ($r$) in radial coordinates
For \Gls{gmsh} mesh format, the coordinates $x$ corresponds to $r$.
\item \textbf{1DCart}: One-dimensional grid ($x$) in Cartesian coordinates
For \Gls{gmsh} mesh format, the coordinates $x$ corresponds to $x$.
\item \textbf{0D}: Zero dimension ficticius volume.
Geometry used mostly to test collisional effects.
No boundary or EM field is solved.
No injection can be implemented.
Initial state must be read from file.
No mesh file is required.
The optional argument \textbf{geometry.volume} can be used to set a ficticius volume.
Otherwise, the volume is set to 1 in non-dimensional units.
\item \textbf{Cart}: Cartesian coordinates.
Available for \textbf{geometry.dimension} $1$, $2$ and $3$.
For \Gls{gmsh} mesh format, the coordinates $x$, $y$ and $z$ correspond to $x$, $y$ and $z$ respectively.
\item \textbf{Cyl}: Cylindrical coordinates ($z \hyphen r$) with symmetry axis at $r = 0$.
Only available for \textbf{geometry.dimension} $2$.
For \Gls{gmsh} mesh format, the coordinates $x$ and $y$ correspond to $z$ and $r$ respectively.
\item \textbf{Rad}: One-dimensional radial space ($r$).
Only available for \textbf{geometry.dimension} $1$.
For \Gls{gmsh} mesh format, the coordinates $x$ corresponds to $r$.
\end{itemize}
\item \textbf{meshType}: Character.
Format of mesh file.
@ -437,9 +439,9 @@ make
\item \textbf{meshFile}: Character.
Mesh filename.
This file is searched in the path \textbf{output.path} and must contain the file extension.
\item \textbf{volume}: Real
\item \textbf{volume}: Real.
Units of $\unit{m^-3}$.
Used to set a ficticius volume for the \textbf{0D} geometry.
Used to set a fictitious volume for the $0$ dimension.
Ignored in the other cases.
\end{itemize}
@ -624,11 +626,12 @@ make
\end{itemize}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{case}
This object determines the simulation time, time step, pushers, weighting scheme and solver for the electromagnetic field.
\subsection{solver}
This object determines the input parameters for the solvers used in the case, both for particle pushers and electromagnetic field.
Accepted variables are:
\begin{itemize}
\item \textbf{tau}: Real.
Units of $\unit{s}$.
Array dimension 'number of species'.
Defines the different time steps for each species.
Even if all time steps are equal, they need to be defined as an array.
@ -643,18 +646,9 @@ make
Array dimension 'number of species'.
Indicates the type of pusher used for each species:
\begin{itemize}
\item \textbf{3DCartNeutral}: Pushes particles in a 3D Cartesian space ($x \hyphen y \hyphen z$) without any external force.
\item \textbf{3DCartCharged}: Pushes particles in a 3D Cartesian space ($x \hyphen y \hyphen z$) including the effect of the electrostatic field.
\item \textbf{2DCylNeutral}: Pushes particles in a 2D cylindrical space ($z \hyphen r$) without any external force.
\item \textbf{2DCylCharged}: Pushes particles in a 2D cylindrical space ($z \hyphen r$) including the effect of the electrostatic field.
\item \textbf{2DCartNeutral}: Pushes particles in a 2D Cartesian space ($x \hyphen y$) without any external force.
\item \textbf{2DCartCharged}: Pushes particles in a 2D Cartesian space ($x \hyphen y$) including the effect of the electrostatic field.
\item \textbf{1DRadNeutral}: Pushes particles in a 1D cylindrical space ($r$) without any external force.
\item \textbf{1DRadCharged}: Pushes particles in a 1D cylindrical space ($r$) accounting the the electrostatic field.
\item \textbf{1DCartNeutral}: Pushes particles in a 1D Cartesian space ($x$) without any external force.
\item \textbf{1DCartCharged}: Pushes particles in a 1D Cartesian space ($x$) accounting the the electrostatic field.
\item \textbf{0D}: Dummy pusher for 0D geometry.
No pushing is actually done.
\item \textbf{Neutral}: Pushes a particle without any external force.
\item \textbf{Electrostatic}: Pushes a particle including the effect of the electrostatic field.
\item \textbf{Electromagnetic}: Pushes particles accounting for the electromagnetic field.
\end{itemize}
\item \textbf{WeightingScheme}: Character.
Indicates the variable weighting scheme to be used in the simulation.
@ -669,7 +663,13 @@ make
If no value is supplied, no field is solved.
\begin{itemize}
\item \textbf{Electrostatic}: Solves the Poison equation to obtain the self-consistent electrostatic potential.
\item \textbf{ConstantB}: Assumes a constant magnetic field in all the domain.
It solves the Poisson equation as in the \textbf{solver.EMSolver} option.
\end{itemize}
\item \textbf{B}: Real.
Units of $\unit{T}$.
Array of dimension $3$.
Provides the value of constant magnetic field for the option \textbf{solver.EMSolver} \textbf{ConstantB}.
\item \textbf{initial}: Array of objects.
Determines initial values for the species.
Required values are:

11
runs/0D_Argon/README.txt Normal file
View file

@ -0,0 +1,11 @@
Example of 0D geometry.
Mostly used to test collision processes.
This example includes Ar and Ar+ with self-collisions for Ar and elastic collisions for AR-Ar+.
Different starting temperatures for each species that end up in equilibrium.
The gnuplpot script 'plot_Temperature.gp' generates a plot of the species temperatures.
The result is provided in the output folder to compare if modifications to the code are made.

View file

@ -21,8 +21,8 @@
{"name": "Argon", "type": "neutral", "mass": 6.633e-26, "weight": 1.0e0}
],
"solver": {
"tau": [1.0e-6, 1.0e-6],
"finalTime": 1.0e-3,
"tau": [1.0e-3, 1.0e-3],
"finalTime": 1.0e0,
"initial": [
{"species": "Argon+", "file": "Argon+_Initial.dat"},
{"species": "Argon", "file": "Argon_Initial.dat"}

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -43,6 +43,8 @@ set output "comp_temp.eps"
filename1 = "OUTPUT_Argon.dat"
filename2 = "OUTPUT_Argon+.dat"
folder = 'output/'
set lmargin at screen lmar
set rmargin at screen rmar
@ -58,7 +60,6 @@ set ylabel "Temperature (K)" offset 1.4,0.0
set key width 0.5 height 0.1 spacing 1.3 samplen 0.2 box opaque font ",16"
set key at graph 0.95, graph 0.9 right top
plot filename1 u ($1):($7) t "Ar" ls 1 with lines, \
filename2 u ($1):($7) t "Ar^{+}" ls 2 with lines, \
'< paste OUTPUT_Argon.dat OUTPUT_Argon+.dat' u ($1):($7 + $14) t "Sum" ls 3 with lines
plot folder.filename1 u ($1):($7) t "Ar" ls 1 with lines, \
folder.filename2 u ($1):($7) t "Ar^{+}" ls 2 with lines

View file

@ -0,0 +1,8 @@
This case is useful to explain how fpakc can work with different geometries (Cartisian and Radial in this case) using very similar input files and the same mesh.
From the position to the left, electrons are emitted at a constant rate.
The electric potential at the left is fixed at 0.
Depending on the geometry (which affects the symmetry) different distributions of the electron density and electric potential are achieved.
The last iteration obtained for these cases is in the output folder.

View file

@ -2,7 +2,7 @@
{
"output": {
"path": "./runs/1D_Cathode/",
"triggerOutput": 100,
"triggerOutput": 1000,
"cpuTime": false,
"numColl": false,
"EMField": true,
@ -20,16 +20,13 @@
"meshFile": "mesh.msh"
},
"species": [
{"name": "Electron", "type": "charged", "mass": 9.109e-31, "charge":-1.0, "weight": 1.0e1},
{"name": "Argon+", "type": "charged", "mass": 6.633e-26, "charge": 1.0, "weight": 1.0e1}
{"name": "Electron", "type": "charged", "mass": 9.109e-31, "charge":-1.0, "weight": 1.0e1}
],
"boundary": [
{"name": "Cathode", "physicalSurface": 1, "bTypes": [
{"type": "absorption"},
{"type": "absorption"}
]},
{"name": "Infinite", "physicalSurface": 2, "bTypes": [
{"type": "transparent"},
{"type": "transparent"}
]}
],
@ -37,17 +34,13 @@
{"name": "Cathode", "type": "dirichlet", "potential": 0.0, "physicalSurface": 1}
],
"inject": [
{"name": "Plasma Inf Ar+", "species": "Argon+", "flow": 1.00e-6, "units": "A", "v": 300.0, "T": [ 500.0, 500.0, 500.0],
"velDist": ["Maxwellian", "Maxwellian", "Maxwellian"], "n": [-1, 0, 0], "physicalSurface": 2},
{"name": "Plasma Inf e", "species": "Electron", "flow": 2.64e-4, "units": "A", "v": 0.0, "T": [11604.0, 11604.0, 11604.0],
"velDist": ["Maxwellian", "Maxwellian", "Maxwellian"], "n": [-1, 0, 0], "physicalSurface": 2},
{"name": "Plasma Cat e", "species": "Electron", "flow": 2.64e-5, "units": "A", "v": 180000.0, "T": [ 2300.0, 2300.0, 2300.0],
"velDist": ["Maxwellian", "Maxwellian", "Maxwellian"], "n": [ 1, 0, 0], "physicalSurface": 1}
],
"solver": {
"tau": [1.0e-11, 1.0e-11],
"finalTime": 4.0e-6,
"pusher": ["Electrostatic", "Electrostatic"],
"tau": [1.0e-11],
"finalTime": 3.0e-7,
"pusher": ["Electrostatic"],
"EMSolver": "Electrostatic"
},
"parallel": {

View file

@ -2,7 +2,7 @@
{
"output": {
"path": "./runs/1D_Cathode/",
"triggerOutput": 100,
"triggerOutput": 1000,
"cpuTime": false,
"numColl": false,
"EMField": true,
@ -20,16 +20,13 @@
"meshFile": "mesh.msh"
},
"species": [
{"name": "Electron", "type": "charged", "mass": 9.109e-31, "charge":-1.0, "weight": 1.0e1},
{"name": "Argon+", "type": "charged", "mass": 6.633e-26, "charge": 1.0, "weight": 1.0e1}
{"name": "Electron", "type": "charged", "mass": 9.109e-31, "charge":-1.0, "weight": 1.0e1}
],
"boundary": [
{"name": "Cathode", "physicalSurface": 1, "bTypes": [
{"type": "absorption"},
{"type": "absorption"}
]},
{"name": "Infinite", "physicalSurface": 2, "bTypes": [
{"type": "transparent"},
{"type": "transparent"}
]}
],
@ -37,17 +34,13 @@
{"name": "Cathode", "type": "dirichlet", "potential": 0.0, "physicalSurface": 1}
],
"inject": [
{"name": "Plasma Inf Ar+", "species": "Argon+", "flow": 1.00e-6, "units": "A", "v": 323.0, "T": [ 500.0, 500.0, 500.0],
"velDist": ["Delta", "Maxwellian", "Maxwellian"], "n": [-1, 0, 0], "physicalSurface": 2},
{"name": "Plasma Inf e", "species": "Electron", "flow": 2.64e-4, "units": "A", "v": 0.0, "T": [11604.0, 11604.0, 11604.0],
"velDist": ["Maxwellian", "Maxwellian", "Maxwellian"], "n": [-1, 0, 0], "physicalSurface": 2},
{"name": "Plasma Cat e", "species": "Electron", "flow": 2.64e-2, "units": "A", "v": 180000.0, "T": [ 2300.0, 2300.0, 2300.0],
"velDist": ["Maxwellian", "Maxwellian", "Maxwellian"], "n": [ 1, 0, 0], "physicalSurface": 1}
],
"solver": {
"tau": [1.0e-11, 1.0e-11],
"tau": [1.0e-11],
"finalTime": 3.0e-7,
"pusher": ["Electrostatic", "Electrostatic"],
"pusher": ["Electrostatic"],
"EMSolver": "Electrostatic"
},
"parallel": {

View file

@ -913,7 +913,6 @@ MODULE moduleInput
SELECT CASE(mesh%dimen)
CASE (0)
CALL config%get(object // '.meshType', meshFormat, found)
CALL init0D(mesh)
!Read the 0D mesh