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:
parent
ae8aa9075e
commit
8dd3023bc0
12 changed files with 3075 additions and 64 deletions
Binary file not shown.
|
|
@ -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 object \textbf{geometry} contains information about the type of geometry, the mesh file format and the mesh filename.
|
||||||
The accepted parameters are:
|
The accepted parameters are:
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
\item \textbf{type}: Character.
|
\item \textbf{dimension}: Integer.
|
||||||
Type of geometry.
|
Number of spatial dimensions of the geometry.
|
||||||
Current accepted vaules are
|
Current values are: $0$, $1$, $2$ or $3$.
|
||||||
\begin{itemize}
|
Zero dimension is a fictitious volume.
|
||||||
\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.
|
Geometry used mostly to test collisional effects.
|
||||||
No boundary or EM field is solved.
|
No boundary or EM field is solved.
|
||||||
No injection can be implemented.
|
No injection can be implemented.
|
||||||
Initial state must be read from file.
|
Initial state must be read from file.
|
||||||
No mesh file is required.
|
No mesh file is required.
|
||||||
The optional argument \textbf{geometry.volume} can be used to set a ficticius volume.
|
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.
|
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{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}
|
\end{itemize}
|
||||||
\item \textbf{meshType}: Character.
|
\item \textbf{meshType}: Character.
|
||||||
Format of mesh file.
|
Format of mesh file.
|
||||||
|
|
@ -437,9 +439,9 @@ make
|
||||||
\item \textbf{meshFile}: Character.
|
\item \textbf{meshFile}: Character.
|
||||||
Mesh filename.
|
Mesh filename.
|
||||||
This file is searched in the path \textbf{output.path} and must contain the file extension.
|
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}$.
|
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.
|
Ignored in the other cases.
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
|
||||||
|
|
@ -624,11 +626,12 @@ make
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
\subsection{case}
|
\subsection{solver}
|
||||||
This object determines the simulation time, time step, pushers, weighting scheme and solver for the electromagnetic field.
|
This object determines the input parameters for the solvers used in the case, both for particle pushers and electromagnetic field.
|
||||||
Accepted variables are:
|
Accepted variables are:
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
\item \textbf{tau}: Real.
|
\item \textbf{tau}: Real.
|
||||||
|
Units of $\unit{s}$.
|
||||||
Array dimension 'number of species'.
|
Array dimension 'number of species'.
|
||||||
Defines the different time steps for each species.
|
Defines the different time steps for each species.
|
||||||
Even if all time steps are equal, they need to be defined as an array.
|
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'.
|
Array dimension 'number of species'.
|
||||||
Indicates the type of pusher used for each species:
|
Indicates the type of pusher used for each species:
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
\item \textbf{3DCartNeutral}: Pushes particles in a 3D Cartesian space ($x \hyphen y \hyphen z$) without any external force.
|
\item \textbf{Neutral}: Pushes a particle 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{Electrostatic}: Pushes a particle 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{Electromagnetic}: Pushes particles accounting for the electromagnetic field.
|
||||||
\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.
|
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
\item \textbf{WeightingScheme}: Character.
|
\item \textbf{WeightingScheme}: Character.
|
||||||
Indicates the variable weighting scheme to be used in the simulation.
|
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.
|
If no value is supplied, no field is solved.
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
\item \textbf{Electrostatic}: Solves the Poison equation to obtain the self-consistent electrostatic potential.
|
\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}
|
\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.
|
\item \textbf{initial}: Array of objects.
|
||||||
Determines initial values for the species.
|
Determines initial values for the species.
|
||||||
Required values are:
|
Required values are:
|
||||||
|
|
|
||||||
11
runs/0D_Argon/README.txt
Normal file
11
runs/0D_Argon/README.txt
Normal 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.
|
||||||
|
|
@ -21,8 +21,8 @@
|
||||||
{"name": "Argon", "type": "neutral", "mass": 6.633e-26, "weight": 1.0e0}
|
{"name": "Argon", "type": "neutral", "mass": 6.633e-26, "weight": 1.0e0}
|
||||||
],
|
],
|
||||||
"solver": {
|
"solver": {
|
||||||
"tau": [1.0e-6, 1.0e-6],
|
"tau": [1.0e-3, 1.0e-3],
|
||||||
"finalTime": 1.0e-3,
|
"finalTime": 1.0e0,
|
||||||
"initial": [
|
"initial": [
|
||||||
{"species": "Argon+", "file": "Argon+_Initial.dat"},
|
{"species": "Argon+", "file": "Argon+_Initial.dat"},
|
||||||
{"species": "Argon", "file": "Argon_Initial.dat"}
|
{"species": "Argon", "file": "Argon_Initial.dat"}
|
||||||
|
|
|
||||||
1002
runs/0D_Argon/output/OUTPUT_Argon+.dat
Normal file
1002
runs/0D_Argon/output/OUTPUT_Argon+.dat
Normal file
File diff suppressed because it is too large
Load diff
1002
runs/0D_Argon/output/OUTPUT_Argon.dat
Normal file
1002
runs/0D_Argon/output/OUTPUT_Argon.dat
Normal file
File diff suppressed because it is too large
Load diff
1002
runs/0D_Argon/output/OUTPUT_Collisions.dat
Normal file
1002
runs/0D_Argon/output/OUTPUT_Collisions.dat
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -43,6 +43,8 @@ set output "comp_temp.eps"
|
||||||
filename1 = "OUTPUT_Argon.dat"
|
filename1 = "OUTPUT_Argon.dat"
|
||||||
filename2 = "OUTPUT_Argon+.dat"
|
filename2 = "OUTPUT_Argon+.dat"
|
||||||
|
|
||||||
|
folder = 'output/'
|
||||||
|
|
||||||
set lmargin at screen lmar
|
set lmargin at screen lmar
|
||||||
set rmargin at screen rmar
|
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 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
|
set key at graph 0.95, graph 0.9 right top
|
||||||
|
|
||||||
plot filename1 u ($1):($7) t "Ar" ls 1 with lines, \
|
plot folder.filename1 u ($1):($7) t "Ar" ls 1 with lines, \
|
||||||
filename2 u ($1):($7) t "Ar^{+}" ls 2 with lines, \
|
folder.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
|
|
||||||
|
|
||||||
8
runs/1D_Cathode/README.txt
Normal file
8
runs/1D_Cathode/README.txt
Normal 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.
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
{
|
{
|
||||||
"output": {
|
"output": {
|
||||||
"path": "./runs/1D_Cathode/",
|
"path": "./runs/1D_Cathode/",
|
||||||
"triggerOutput": 100,
|
"triggerOutput": 1000,
|
||||||
"cpuTime": false,
|
"cpuTime": false,
|
||||||
"numColl": false,
|
"numColl": false,
|
||||||
"EMField": true,
|
"EMField": true,
|
||||||
|
|
@ -20,16 +20,13 @@
|
||||||
"meshFile": "mesh.msh"
|
"meshFile": "mesh.msh"
|
||||||
},
|
},
|
||||||
"species": [
|
"species": [
|
||||||
{"name": "Electron", "type": "charged", "mass": 9.109e-31, "charge":-1.0, "weight": 1.0e1},
|
{"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}
|
|
||||||
],
|
],
|
||||||
"boundary": [
|
"boundary": [
|
||||||
{"name": "Cathode", "physicalSurface": 1, "bTypes": [
|
{"name": "Cathode", "physicalSurface": 1, "bTypes": [
|
||||||
{"type": "absorption"},
|
|
||||||
{"type": "absorption"}
|
{"type": "absorption"}
|
||||||
]},
|
]},
|
||||||
{"name": "Infinite", "physicalSurface": 2, "bTypes": [
|
{"name": "Infinite", "physicalSurface": 2, "bTypes": [
|
||||||
{"type": "transparent"},
|
|
||||||
{"type": "transparent"}
|
{"type": "transparent"}
|
||||||
]}
|
]}
|
||||||
],
|
],
|
||||||
|
|
@ -37,17 +34,13 @@
|
||||||
{"name": "Cathode", "type": "dirichlet", "potential": 0.0, "physicalSurface": 1}
|
{"name": "Cathode", "type": "dirichlet", "potential": 0.0, "physicalSurface": 1}
|
||||||
],
|
],
|
||||||
"inject": [
|
"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],
|
{"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}
|
"velDist": ["Maxwellian", "Maxwellian", "Maxwellian"], "n": [ 1, 0, 0], "physicalSurface": 1}
|
||||||
],
|
],
|
||||||
"solver": {
|
"solver": {
|
||||||
"tau": [1.0e-11, 1.0e-11],
|
"tau": [1.0e-11],
|
||||||
"finalTime": 4.0e-6,
|
"finalTime": 3.0e-7,
|
||||||
"pusher": ["Electrostatic", "Electrostatic"],
|
"pusher": ["Electrostatic"],
|
||||||
"EMSolver": "Electrostatic"
|
"EMSolver": "Electrostatic"
|
||||||
},
|
},
|
||||||
"parallel": {
|
"parallel": {
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
{
|
{
|
||||||
"output": {
|
"output": {
|
||||||
"path": "./runs/1D_Cathode/",
|
"path": "./runs/1D_Cathode/",
|
||||||
"triggerOutput": 100,
|
"triggerOutput": 1000,
|
||||||
"cpuTime": false,
|
"cpuTime": false,
|
||||||
"numColl": false,
|
"numColl": false,
|
||||||
"EMField": true,
|
"EMField": true,
|
||||||
|
|
@ -20,16 +20,13 @@
|
||||||
"meshFile": "mesh.msh"
|
"meshFile": "mesh.msh"
|
||||||
},
|
},
|
||||||
"species": [
|
"species": [
|
||||||
{"name": "Electron", "type": "charged", "mass": 9.109e-31, "charge":-1.0, "weight": 1.0e1},
|
{"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}
|
|
||||||
],
|
],
|
||||||
"boundary": [
|
"boundary": [
|
||||||
{"name": "Cathode", "physicalSurface": 1, "bTypes": [
|
{"name": "Cathode", "physicalSurface": 1, "bTypes": [
|
||||||
{"type": "absorption"},
|
|
||||||
{"type": "absorption"}
|
{"type": "absorption"}
|
||||||
]},
|
]},
|
||||||
{"name": "Infinite", "physicalSurface": 2, "bTypes": [
|
{"name": "Infinite", "physicalSurface": 2, "bTypes": [
|
||||||
{"type": "transparent"},
|
|
||||||
{"type": "transparent"}
|
{"type": "transparent"}
|
||||||
]}
|
]}
|
||||||
],
|
],
|
||||||
|
|
@ -37,17 +34,13 @@
|
||||||
{"name": "Cathode", "type": "dirichlet", "potential": 0.0, "physicalSurface": 1}
|
{"name": "Cathode", "type": "dirichlet", "potential": 0.0, "physicalSurface": 1}
|
||||||
],
|
],
|
||||||
"inject": [
|
"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],
|
{"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}
|
"velDist": ["Maxwellian", "Maxwellian", "Maxwellian"], "n": [ 1, 0, 0], "physicalSurface": 1}
|
||||||
],
|
],
|
||||||
"solver": {
|
"solver": {
|
||||||
"tau": [1.0e-11, 1.0e-11],
|
"tau": [1.0e-11],
|
||||||
"finalTime": 3.0e-7,
|
"finalTime": 3.0e-7,
|
||||||
"pusher": ["Electrostatic", "Electrostatic"],
|
"pusher": ["Electrostatic"],
|
||||||
"EMSolver": "Electrostatic"
|
"EMSolver": "Electrostatic"
|
||||||
},
|
},
|
||||||
"parallel": {
|
"parallel": {
|
||||||
|
|
|
||||||
|
|
@ -913,7 +913,6 @@ MODULE moduleInput
|
||||||
|
|
||||||
SELECT CASE(mesh%dimen)
|
SELECT CASE(mesh%dimen)
|
||||||
CASE (0)
|
CASE (0)
|
||||||
CALL config%get(object // '.meshType', meshFormat, found)
|
|
||||||
CALL init0D(mesh)
|
CALL init0D(mesh)
|
||||||
|
|
||||||
!Read the 0D mesh
|
!Read the 0D mesh
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue