Track3P command syntax¶
Block-by-block description of the .track3p input file. Worked cases are in the Track3P module guide.
Top-level: TotalTime, ParticlesTrajectories, FieldScales, NormalizedField, Emitter, Domain, Material, OutputImpacts, SingleParticleTrajectory, Postprocess. The mesh and fields come from the solver results named in Domain; there is no ModelInfo.
TotalTime¶
Tracking duration in RF cycles. Default 20.
ParticlesTrajectories¶
Controls PARTICLES/partpath_ts*.ncdf output. Only active when ScanToken is 0. Start, Stop, Skip are in time steps.
FieldScales¶
FieldScales : {
Type: FieldGradient
ScanToken: 1
Minimum: 23.0e+6
Maximum: 25.0e+6
Interval: 1.0e+6
Scale: 23.00e+6 // used when ScanToken is 0
}
| Key | Meaning |
|---|---|
Type |
FieldGradient (V/m, averaged along the NormalizedField line), InputPortPower (W, for S3P fields), StorEnergy (J) |
ScanToken |
1 scans Minimum to Maximum by Interval, no trajectory files; 0 runs the single level Scale and writes trajectories |
NormalizedField¶
The line along which the accelerating voltage is integrated for Type: FieldGradient. N points, default 300; Beta for the transit-time factor, default 1.
Emitter¶
Emitter : {
Type: 2
t0: 0 t1: 1 // emission window in RF cycles
x0: -0.03 x1: 0.035 // bounding box, m
y0: 0.04 y1: 0.1
z0: -0.045 z1: 0.0
BoundaryID: 6
SkipTimeSteps: 1
N: 1000 // field emission only
WorkFunction: 4.2 // eV, field emission only
Beta: 120 // enhancement, field emission only
}
Several Emitter blocks may be defined.
Type |
Name | Meaning |
|---|---|---|
| 2 | ElectronicSurface |
Default. Primaries from the mesh surface inside the box. |
| 5 | SolidElectronicSurface |
From mesh surfaces and from boundaries between material regions; for RF windows. Needs SolidRegion and VacuumRegion in Domain. |
| 7 | FieldEmission |
Fowler-Nordheim, for dark current. N is the minimum electrons per emitted macroparticle; WorkFunction default 4.2 eV (copper); Beta the field enhancement factor. |
| 10 | LoadParticles (new 2025) |
Load particles from a file. ParticlesFile: one line per particle with electron count, energy in eV, x y z in m, and momentum components. PositionFile: positions only, launched with Velocity or Direction and Energy. RadiationFile: positions from a radiation-source file. All accept XScale, YScale, ZScale, EnergyScale, XOffset, YOffset, ZOffset (defaults 1 and 0). |
Other numbered types exist in the shared emitter code (1 ThermalCathode, 3 Injector, 4 EmitterSamples, 6 ChildLangmuir, 8 PICInput, 9 PlaneFieldEmission); 6 is the model Gun3P uses.
Domain¶
Domain : {
FieldDir: ./omega3p_results
ModeID: 0
FrequencyScanID: 0 // S3P only
dt: 1
MaxImpacts: 50
LowEnergy: 20
HighEnergy: 5000
InitialEnergy: 2.0
Voltage: 0.0 0.0 0.0
Bins: 64
SolidRegion: 2 // RF windows
VacuumRegion: 1
ExternalMagneticField: 0.0 0.0 4.0
MagneticFieldMap : { File: bfield2 Scaling: 0.0001 Units: 0.001 ZOffset: 0.27 }
ElectroStaticFieldMap : { File: ./gun3p_results/OUTPUT/E/test-11.txt Scaling: 1.0 }
SymmetryFactor: 2
SymmetryPlane: 5
}
| Key | Default | Meaning |
|---|---|---|
FieldDir |
Omega3P or S3P results directory | |
ModeID |
0 | Eigenmode index (Omega3P) or port-mode index (S3P). The source also accepts ModeID1. |
FrequencyScanID |
0 | Scan point in an S3P result |
dt |
1.0 | Time step = dt / frequency / 100 |
MaxImpacts |
50 | Particles die after this many impacts |
LowEnergy, HighEnergy |
5, 1e9 eV | Impact energy window outside which no secondaries are emitted |
InitialEnergy |
2 eV | Launch energy |
Voltage |
0 0 0 | DC coax bias as a ra rb: V = a / ln(rb / ra), units V m m |
Bins |
automatic | Localizer bins along the longest axis; the others derive from it. Since v2026.11 omit this key: the code picks about one element per bin (logged as Localizer: Bins not given, using N), which made the KEK 56-cell dark-current run 15x faster with identical results. An explicit value still overrides; old inputs with Bins: 256 should drop the line. |
SolidRegion, VacuumRegion |
Block IDs for window problems | |
ExternalMagneticField |
0 0 0 | Uniform B in T |
MagneticFieldMap |
Cylindrically symmetric map in Poisson text format: header lines r0 rN Nr and z0 zN Nz, then Fr Fz [Fphi] rows with r varying fastest. Scaling multiplies the field, Units converts the coordinates to m, ZOffset shifts the origin. |
|
ElectroStaticFieldMap |
Cartesian-grid field from gun3pOutputConverter; File, Scaling |
|
SymmetryFactor, SymmetryPlane |
1, none | Model symmetry and the sideset of the symmetry plane, used with a SymmetryPlane material. Since 2026 the plane's orientation is detected from the mesh, so half models of any orientation work. |
Material¶
Material : { Type: Primary BoundarySurfaceID: 6 }
Material : { Type: Secondary BoundarySurfaceID: 3 4 6 }
Material : { Type: Absorber BoundarySurfaceID: 7 8 }
Material : { Type: SymmetryPlane BoundarySurfaceID: 5 }
Material : { Type: Primary SolidBlockID: 2 } // RF window dielectric
Material : { Type: Secondary SolidBlockID: 2 }
Material : {
Type: Secondary
BoundarySurfaceID: 6
Model: 2
SecondaryEmissionYield: sey.dat
MinimumNumElectrons: 1000
ElasticThreshold: 1000
}
Type |
Behavior |
|---|---|
Primary |
Primaries may launch here |
Secondary |
Impacts emit secondaries per Model |
Absorber |
Impacts kill the particle |
SymmetryPlane |
Specular reflection |
BoundarySurfaceID is a sideset list; SolidBlockID a block, for window dielectrics.
Model |
Secondary emission |
|---|---|
| 1 (default) | Multipacting: one secondary per impact, emitted normal to the surface |
| 2 | Dark current: true secondaries and elastically reflected particles at random angles, following a yield table from SecondaryEmissionYield (two columns, energy in eV and yield) or inline Sigma0 and Einit lists. MinimumNumElectrons and ElasticThreshold prune small macroparticles. |
| 3 | Furman-Pivi model with multiple secondaries per impact. MAT_SecondaryEmitter.C branches on model 3; the parameters it reads are not in the command reference. |
OutputImpacts and SingleParticleTrajectory¶
OutputImpacts: on // default off; writes ImpactsInfo_<level>
SingleParticleTrajectory: off // default off; on writes one file per particle named by ID
New since CW23
ImpactsInfo_<level>rows for field-emitted particles now carry the emission field and the emitting face area (2026), so the dark-current source distribution can be reconstructed from the impacts (inverse current).- Particles that leave the mesh without a recorded impact are written to a separate
LostParticles_<level>file (2026), created only when the count is non-zero. Field-emitted particles at MeV energies are no longer discarded by the multipactingLowEnergy/HighEnergyfilter. - The end of
track3p.logalways prints a function-by-function timing report (emission, push, material interaction, dead-particle removal) on rank 0, which shows whether more OpenMP threads would help. - Track3P is hybrid MPI and OpenMP since 2026; see Batch jobs for the recommended layout.
Postprocess¶
Postprocess : {
Toggle: on
ResonantParticles : {
Token: on
InitialImpacts: 4
EnergyRange: 25 10000
PhaseTolerance: 0.01
}
EnhancementCounter : {
Token: on
SEYFileName1: copper.txt
BoundarySurfaceID1: 6
SEYFileName2: niobium.txt
BoundarySurfaceID2: 3
SolidVolID: 0
MinimumEC: 0.01
}
}
ResonantParticles flags trajectories that repeat in phase. InitialImpacts (default 4) is the minimum impact count considered; EnergyRange in eV discards impacts outside it; PhaseTolerance is the phase match criterion.
EnhancementCounter computes EC = δ1 δ2 … δm over a particle's impacts, with δi the SEY at the i-th impact energy from the file for that surface. Two surfaces with different materials can be given. SolidVolID names a window volume. MinimumEC (default 10) suppresses rows below it.
The same counter can be recomputed after the run with a different SEY file by acdtool postprocess track3p; see the acdtool command syntax.