Reference¶
Two kinds of reference material, serving different questions.
Command syntax¶
One page per module describing every input block with a complete example and the meaning, units, and default of each key. These are converted from the ACE3P command reference documents distributed with the CW23 materials (dated September 2026) and cross-checked against the source where possible. Use them when you know which block you need and want to know what goes in it.
| Page | Blocks |
|---|---|
| Omega3P | ModelInfo with PML, FiniteElement, PRegion, EigenSolver incl. PETSc and CORK, Port, PostProcess |
| S3P | FrequencyScan, Port, dipole Loading, LinearSolver with the multilevel preconditioner, PostProcess |
| T3P | Time-domain materials incl. Lorentz dispersion, PRegion moving window, LoadingInfo bunch shapes and trains, Loading dipole/port/surface with pulse types, all Monitor types incl. direct wake integration, CheckPoint |
| Pic3P | PIC PRegion, Loading with Particles, distributions, emission models, DriveField |
| Track3P | FieldScales, Emitter types incl. particle files, Domain incl. field maps and symmetry, Material incl. secondary emission models, Postprocess |
| TEM3P | Problem types, solvers incl. nonlinear, eigen, and harmonic, materials and function files, Shell, HeatSource, thermal and mechanical Boundary incl. all RF heating methods, MeshDump, Transient |
| Gun3P | DCGunProblem, static field problems, Tracker with Child-Langmuir emission, gun3pOutputConverter |
| acdtool | Mesh conversion and repair, resource, every postprocess rf function, wake and signal post-processing, PIC and Track3P utilities, project |
Keyword tables¶
These pages list the input-file keywords that each ACE3P module reads. They are generated from the source code, not written by hand. Keyword names, types, and default values therefore always match the release the documentation is built for. Use them to check spelling and defaults, and to find keywords the command syntax pages do not mention.
| Page | Covers |
|---|---|
| Omega3P keywords | Everything read in the omega3p/ source tree: eigensolver selection, frequency targets, adaptive mesh refinement, matrix output |
| S3P keywords | FrequencyScan, ports, dipole loading, S-parameter output |
| T3P and Pic3P keywords | The tfe3p/ tree: beam and port loading, monitors, moving window, particles, drive fields |
| Track3P keywords | The multipacting/ tree: Domain, Emitter, Material, field maps, post-processing |
| TEM3P keywords | Thermal and mechanical problems, boundaries, solvers, Transient, HarmonicAnalysis |
| Gun3P keywords | DCGunProblem, static field problems, Tracker, Child-Langmuir emitter |
| acdtool keywords | Mesh utilities and the Track3P post-processor input |
| acdtool rf post-processor keywords | Every function and parameter name the .rfpost parser recognizes |
| Shared EM keywords | The emfem/ library used by all electromagnetic solvers: ModelInfo, boundary conditions, materials, coatings, FiniteElement |
| Eigensolver keywords | The solver/ library: Arnoldi, Lanczos, ESIL, CORK and SOAR nonlinear solvers, linear solver and preconditioner options |
| Excitation pulse keywords | Pulse types shared by T3P loading and TEM3P transients |
| Waveguide port keywords | Port mode solvers, including imported (Interpolative) modes |
| Bunch shape keywords | Gaussian, BiGaussian, Flattop, and profiled bunches, plus the input-file reader itself |
How to read the tables¶
| Column | Meaning |
|---|---|
| Keyword | The name as it appears in the input file. Grouped under the block that contains it when the code reads a dotted path such as EigenSolver.SolverMode. |
| Type | int, double, string, or blank when the code reads the value into a pre-typed variable |
| Default | The value used when the keyword is absent. Blank means the code checks for presence with find() and handles absence in its own logic, or the entry is a block name rather than a scalar. |
| Presence | optional when a default exists; required when the solver aborts without it |
| Read in | Source file and line number, for developers tracing behavior |
The tables are deliberately terse. Explanations of what each keyword does belong in the module guides, which link back here.
How the pages are generated¶
ACE3P solvers read input through a small family of calls on a key-value container:
const int nev = Get(kvc, "NumEigenvalues", InitOrFallback<int>(1) or quiet); // typed, with default
if (!domainkvc.find("MaxImpacts", m_maxImpacts)) { m_maxImpacts = 50; } // default assigned after
if (!kvc.find("JobName", name)) { kvcError(); } // required
kvc.find("StartPoint", 0, x); // indexed list value
kvc.findSwitch("Toggle"); // on/off switch
kvc.findContainer("Domain", domainkvc); // a block
The script tools/extract_keywords.py in this repository scans the source for all six forms, extracts the keyword, type, default, and presence, and writes these Markdown pages. Block membership comes from dotted keys or from the findContainer binding of the variable the key is read from. The acdtool postprocess rf input uses a separate string-compare parser, which the script also reads.
A workflow in the ACE3P source repository runs the script whenever a release tag v* is pushed and opens a pull request here with the regenerated pages. See Contributing.
Coverage
Keys the code reads from a container whose block cannot be inferred are listed under top level or unspecified block at the end of each page. The source location column tells you where to look.