Gun3P command syntax¶
Block-by-block description of the .gun3p input file. The Gun3P module guide explains the iteration and the sheet beam gun example.
Top-level blocks: DCGunProblem, ElectrostaticProblem, MagnetostaticProblem, Tracker.
DCGunProblem¶
DCGunProblem : {
RunId: test
SymmetryFactor: 1 // 1 full, 2 half, 4 quarter
// JustGenerateTreecotree: On
ElectricAbsoluteTolerance: 0.
ElectricRelativeTolerance: 1.00e-12
ElectricAbsoluteTolerance2: 0.
ElectricRelativeTolerance2: 1.00e-12
MagneticAbsoluteTolerance: 0.
MagneticRelativeTolerance: 1.00e-12
MaxIterations: 32
// FirstIterationForMagnetostaticProblem: 1
Save iteration data: On
}
| Key | Meaning |
|---|---|
RunId |
Run label |
SymmetryFactor |
Scales emitted current to the full gun |
JustGenerateTreecotree |
Run on one core to build the tree-cotree gauge for the magnetostatic solve; needed if that solve does not converge. Does not create output. |
ElectricRelativeTolerance |
Convergence on the E-field change between iterations with the magnetic solver off |
ElectricRelativeTolerance2, MagneticRelativeTolerance |
The same with the magnetic solver on |
...AbsoluteTolerance |
Always 0 |
MaxIterations |
Hard stop |
FirstIterationForMagnetostaticProblem |
Iteration at which the beam's self-magnetic field is first included. Commented out means never. |
Save iteration data |
Keep per-iteration fields and particles under OUTPUT/ITER_<n>/ |
ElectrostaticProblem¶
ElectrostaticProblem : {
AnodeBoundaryId: 12
MeshFile: dcgun.ncdf
BasisOrder: 2
CurvedSurfaces: on
Charge averaging factor: 0.1
VolumeMaterial : {
Id: 1
MediumName: Vacuum
PhysicalParameter : { Name: Permittivity ConstantValue: 1. }
}
Write dofs to disk: on
Debug bd dofs mapping: Off
Debug matrix assembly: Off
Use reduced solver: On
Outputs : {
Dofs for vizualization: On
ElectrostaticFieldToken: On // export on a Cartesian grid for Track3P
FileName: test.data
Nx: 40 Ny: 50 Nz: 60
}
Boundary : { Id: 1 ConditionType: Dirichlet DirichletValue: 0. }
Boundary : { Id: 2 ConditionType: Dirichlet DirichletValue: -500. }
Boundary : { Id: 3 ConditionType: Neumann NeumannValue: 0. }
Boundary : { Id: 12 ConditionType: Dirichlet DirichletValue: 115000. }
Compute non zero initial guess: On
LinearSolver : {
Solver: CG // CG for large, MUMPSFLOAT for small problems
Preconditioner: CHOLESKY
PrintFrequency: 50
QuietMode: 0
AbsoluteTolerance: 1.00e-99
Tolerance: 1.00e-16
MaxIterations: 5000
}
}
| Key | Meaning |
|---|---|
AnodeBoundaryId |
Anode sideset |
MeshFile, BasisOrder, CurvedSurfaces |
As in TEM3P |
Charge averaging factor |
Under-relaxation: new = (1 − f) × previous + f × computed |
VolumeMaterial.PhysicalParameter |
Name is Permittivity, Permeability, or Sigma; ConstantValue its value |
Write dofs to disk |
Save the field for the output converter |
Use reduced solver |
Eliminate constrained DOFs; keep on |
Debug ... |
Developer output; keep off |
Outputs.Dofs for vizualization |
Needed for gun3pOutputConverter |
Outputs.ElectrostaticFieldToken, FileName, Nx, Ny, Nz |
Also write E on a structured grid, for ElectroStaticFieldMap in Track3P |
Boundary |
Dirichlet fixes the potential in V; Neumann fixes the normal derivative, usually 0 on symmetry and open boundaries |
Compute non zero initial guess |
Warm-start each iteration from the previous solution |
LinearSolver |
Keep as shown |
MagnetostaticProblem¶
Same structure as ElectrostaticProblem with all Boundary blocks Dirichlet 0. The examples keep Name: Permittivity in the material, which the code accepts. Solver: MUMPSFLOAT is typical.
Tracker¶
Tracker : {
JobName: ./gun3p_results/OUTPUT // must match the results directory on the command line
Particlefile: partpath
t: 6.0e-6 // forward tracking time, s
Generate output for vizualization: on
Print emission statistics: On
Backward : {
t: 6.0e-6
Generate output for vizualization: on
}
Domain : {
t0: 0.0
dt: 1.0e-12
Window_Vol: 0
MaxImpacts: 2
LowEnergy: 0.0
HighEnergy: 1.0e+99
InitialEnergy: 0.0
dt backward: 1.0e-12
Backward velocity pattern: 0
Minimum backward velocity factor: 0.01
Strategy for dt: 0
Emission Nx: 200 Emission Ny: 100 Emission Nz: 300
Tracking Nx: 200 Tracking Ny: 100 Tracking Nz: 300
Tracking box x min: -0.11 Tracking box x max: 0.11
Tracking box y min: -0.04 Tracking box y max: 0.04
Tracking box z min: -0.001 Tracking box z max: 0.18
}
Monitor : {
Type: PlaneCrossingsVsT
Name: screen
Plane point: 0., 0., 0.15999
Plane normal: 0., 0., 1.
Compute densities: On
Max x for densities: 0.110 X number of densities: 11
Max y for densities: 0.004 Y number of densities: 80
}
MeshInterface : { Type: pd Localizer : { Type: USS_Curve } }
Emitter : {
Type: 6 // Child-Langmuir
BoundaryID: 1
t0: -1.0e-12 t1: 1.0e-12
N: 1.0e+0 // electrons per macroparticle
M: 9.10938e-31 // kg
Q: -1.60218e-19 // C
d: 0.1e-3 // macroparticle radius, m
Sample Type: 1 // 1 face centers, 2 stochastic
Child Langmuir : {
Whole boundary is emitter: On
Use electric field direction for initial forward velocity: On
Strategy: 6
Use average J: On
Backward velocity factor: 0.66666667
Forward velocity factor: 1.
Min allowed distance: 0.01e-3
Max allowed distance: 5.00e-3
Given delta phi: 100.0
Max allowed emission distance wrt z axis: 1.000000
First inter cycle factor: 1.0
Inter cycle averaging factor: 1.0
Max allowed total current: 1.35e+9 // μA
Reference z for emission surface: 1.50e-3
Particles per face: 5
}
}
Material : { BoundarySurfaceID: 1 Type: 2 } // 1 Reflector, 2 Absorber, 3 Secondary, 4 Test, 5 SymmetryPlane
Material : { BoundarySurfaceID: 2 Type: 2 }
}
| Key | Meaning |
|---|---|
JobName |
Output path; agree with the second command-line argument |
t |
Forward tracking duration. Long enough for the slowest particles to reach the screen. |
Backward |
Backward tracking from the emission reference plane to the cathode, used to set launch conditions |
Domain.Emission N*, Tracking N* |
Localizer grid resolution in the emission and tracking regions |
Domain.Tracking box |
Region outside which particles are dropped |
Monitor.PlaneCrossingsVsT |
One plane; reports emittances and, with Compute densities, current density on a grid of X number by Y number cells out to Max x and Max y |
Monitor.PlanesCrossing |
A stack: First plane point, Common plane normal, Distance between first and last planes, Number of planes |
MeshInterface |
Localizer; keep as shown |
Emitter.Type |
6 for Child-Langmuir, the usual gun model. Types 1 to 5 are shared with Track3P. |
Emitter.Child Langmuir |
Reference z for emission surface is where the field is sampled to set the current; Particles per face controls emission granularity and can be tuned for convergence; Max allowed total current is a cap in μA. The rest are iteration-strategy settings documented as "keep as default". |
Material |
Particle behavior per sideset, numbered 1 to 5 |
gun3pOutputConverter¶
gun3pOutputConverter dcgun.gun3p e [iter] # electric field
gun3pOutputConverter dcgun.gun3p m [iter] # magnetic field
Converts the stored DOFs of the final iteration, or of iteration iter, into OUTPUT/E/staticDofs.ncdf.mod or OUTPUT/M/... for ParaView, and writes the Cartesian-grid field file when ElectrostaticFieldToken was on.