APE settings¶
Use this reference when adapting the EAM or MACE example. The tables summarize the settings most relevant to APE; they are not a complete list of SODA options.
Scientific settings belong in the run directory’s config.ini. Runtime
options go after the SODA executable in the launch command. The force model
is selected separately by pair_style and pair_coeff in
potfiles/in.lammps.
Select and control exploration¶
Set [Main] job = ape explicitly.
The following entries belong in [APE]. Defaults are used when an entry
is omitted; the repository examples may override them.
Option |
Default |
Purpose |
|---|---|---|
|
|
Limits result-collection and registration cycles; |
|
|
Selects the primary candidate-sampling strategy: |
|
|
Excludes environment clusters identified from |
|
|
Sets the per-descriptor quota of scheduled searches in primary candidate selection, including searches still in progress. Fallback sampling can schedule further searches, so this is not a hard lifetime limit. |
|
|
Controls the number of draws attempted per cluster in random and fallback sampling. It does not set the number of MPI workers. |
|
|
Sets the completed-search threshold summed over a cluster’s descriptor records. It counts completed attempts, not just unique processes found. This is a sampling criterion, not a guarantee that all physical processes have been found. |
Soft fixing¶
Soft fixing controls which local environments APE targets for saddle
searches. With [APE] soft_fix = true, APE reads SoftFixAtomIDs.dat from
the run directory. This file lists zero-based atom IDs in the initial input
structures; for multiple structures, group the IDs under the corresponding pos0,
pos1, … headers, as in the
EAM example.
On a fresh run, the file is required when soft_fix = true; when
soft_fix = false, it must be absent. A restart restores the saved soft-fixed
clusters from the database instead of reading this file again.
During initialization, APE identifies the environment clusters containing the listed atoms in their corresponding initial structures and marks those clusters as soft fixed. Atoms whose local environments belong to any of these clusters are excluded from search-center selection, including atoms that were not explicitly listed in the file.
Soft-fixed atoms remain free to move during saddle searches and during structure optimization, subject to any separate fixed-atom constraints in the input structures. Soft fixing restricts the choice of search centers; it does not constrain atomic positions.
Cluster membership depends on the local environment
The excluded cluster IDs are determined from the listed atoms in the initial structures. An atom’s environment can differ between structures, so the same atom can belong to a soft-fixed cluster in one structure and an unrestricted cluster in another. In the latter case, it can be selected as a search center, subject to the other sampling rules. Soft fixing therefore follows environment-cluster membership, rather than permanently excluding an atom ID throughout the exploration.
Descriptors and DECAF classification¶
These [Descriptors] entries control the local environments supplied to
APE’s DECAF classifier. They do not select the potential used for forces.
For the classification method, cite:
Lai, K. C., Matera, S., Scheurer, C., and Reuter, K. “A fuzzy classification framework to identify equivalent atoms in complex materials and molecules.” The Journal of Chemical Physics 159(2), 024129 (2023). doi:10.1063/5.0160369.
The implementation is available in the DECAF repository.
Defaults apply when an entry is omitted from [Descriptors].
Option |
Default |
Purpose |
|---|---|---|
|
|
Selects |
|
|
Path to the Python MACE model for descriptor generation; empty by default. The native LAMMPS force model has its own path in |
|
|
Selects |
|
|
Sets the number of MACE interaction layers used for descriptors; |
|
|
Sets the reference nearest-neighbor distance in Å, used to scale the SOAP cutoffs and Gaussian widths. Choose it for the material and structure being explored. |
|
|
Sets the radial basis size for |
|
|
Sets the maximum angular order for |
|
|
Sets the cutoff radius for |
|
|
Sets the Gaussian width for |
|
|
Sets the radial basis size for the long-range channel of |
|
|
Sets the maximum angular order for the long-range channel of |
|
|
Sets the cutoff radius for the long-range channel of |
|
|
Sets the Gaussian width for the long-range channel of |
|
|
Sets the radial basis size for the short-range channel of |
|
|
Sets the maximum angular order for the short-range channel of |
|
|
Sets the cutoff radius for the short-range channel of |
|
|
Sets the Gaussian width for the short-range channel of |
|
|
Selects |
|
|
Sets the descriptor embedding dimension; |
|
|
Selects |
|
|
Sets the mean-shift clustering bandwidth directly when positive; it is not an initial guess. |
|
|
Sets the population threshold at which additional product descriptor candidates in an existing cluster can be discarded. Population counts assigned descriptor registry entries, including fixed entries but excluding alias-blocked duplicates; search eligibility is separate. It is not a minimum size for forming a cluster. |
The physical SOAP cutoff is soap_rcut × NNDistance, and the Gaussian width
is soap_sigma × NNDistance, both in Å. The same scaling applies to the
soap_L_* and soap_S_* cutoffs and widths. For example, soap_rcut = 1.866
with NNDistance = 3.3 gives a cutoff of 6.1578 Å.
Use Analyzing APE output to inspect the resulting clusters. Cluster labels belong to a particular descriptor model and run; their numbers need not match across calculations.
Search and structure settings¶
APE uses shared saddle-search, minimization, and structure-comparison settings. Begin with the complete example configuration and adjust settings for your potential and system.
APE selects search centers through descriptor sampling. Its displacement
generator disables under-coordinated and least-coordinated center selection,
so displace_max_coordination has no effect in APE, even if it is present in
config.ini. The corresponding displace_under_coordinated_weight and
displace_least_coordinated_weight settings are also ignored in APE.
Each entry below includes its config.ini section. Defaults apply when the
option is omitted; example configurations may use different values.
Option |
Default |
Purpose |
|---|---|---|
|
|
Selects |
|
|
Sets the radius in Å around the selected search-center atom within which free atoms receive initial random displacements. It does not restrict later motion during the search. |
|
|
Sets the Gaussian standard deviation in Å for each Cartesian component of the initial random displacement, before any optional void bias. It is not a fixed total displacement length. |
|
Inherited ( |
Limits iterations in an individual saddle search, separately from the overall APE cycle limit. When omitted, uses |
|
|
Rejects a search whose energy rises more than this many eV above its reactant. Also rejects a completed process if either its forward or reverse barrier exceeds this value. |
|
|
Aborts when at least this many atoms have moved by at least |
|
|
Sets that motion threshold in Å. Choose a positive distance when enabling |
|
Inherited ( |
Sets the saddle-search force tolerance in eV/Å, using |
|
|
Sets the displacement length in Å along the normalized saddle eigenvector, in each direction, before relaxing the two endpoints. This is the length of the full configuration displacement, not a distance applied to every atom. |
|
|
Selects the optimizer for structural minimization and saddle-search translation: |
|
|
Sets the structural-minimization force tolerance in eV/Å. With the default |
|
|
Limits iterations in an individual structural minimization. |
|
|
Sets the energy tolerance in eV for matching states and comparing process barriers when identifying repeat processes. It is not an energy per atom. |
|
|
Sets the per-atom geometric mismatch tolerance in Å for structure and process comparisons. |
|
|
Allows same-species atom permutations when matching product structures to states. Process-repeat checks and endpoint connectivity checks still preserve atom indices. |
|
|
Requests OpenMP threads inside LAMMPS when positive; this requires its OPENMP package and a matching CPU allocation. Leave it unset or |
|
|
Enables the LAMMPS-side log for diagnosing the force setup. |
Command-line options¶
These are arguments to soda, after "$SODA_BIN". MPI and Slurm placement
options such as --map-by, --bind-to, and --cpus-per-task belong to the
launcher or scheduler; see Parallel execution.
Option |
Purpose |
|---|---|
|
Sets the number of MPI processes per worker group; the current implementation requires |
|
Selects GPU-capable workers on each node. |
|
Allows more GPU workers than visible GPUs. Shared devices must have enough memory for their workers’ models and calculations. |
|
Sets the per-worker-group contribution to the node’s shared job-queue capacity ( |
|
Sets the completed-result readiness threshold per node, not a total across all nodes. The master waits for all nodes to report readiness. Keep it within each node’s queue capacity; empty queues or buffer pressure can make a node ready earlier. |
|
Saves additional process-search summaries in the HDF5 database for later inspection. |
|
Sets a flush condition: more than |
|
Sets the elapsed-time flush condition in minutes; |
|
Chooses the output directory, normally |
|
Restores exploration state from a saved database. Use a working copy and follow the restart instructions. |
Suggested buffer sizes¶
Use the following as starting points for a small workstation run or a larger HPC allocation. The workstation column uses the code defaults; the HPC column is adapted from the larger APE example. Choose sizes according to memory available per node, atoms per state, and descriptor dimensions.
Buffer setting |
Workstation |
Larger HPC run |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Larger buffers can reduce allocation and data-transfer overhead, but require more memory. These values count rows or states, so the memory required also depends on the size of each record. They do not limit the total number of states or environments the exploration can discover.
Keep envdescr_rows_per_shm_buffer <= maxnumenvdescrinwb. The runtime also
raises the resident-state capacity to at least 20 states per worker and
the active-state capacity if necessary, so check the effective settings in
the startup log.
Queue and output settings¶
These complement the buffers above. Here, W is the number of workers on
one node, excluding its head rank; replace expressions with integer values
in your launch options. The EAM and MACE walkthroughs set
--flushafterminutes=0 for job-count-only flushing; the table below instead
suggests combined job-count and elapsed-time conditions.
Setting |
Small workstation run |
Larger HPC run |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
The update threshold is per node and must not exceed
W × numjobsperwgroup. With 71 workers, the HPC values give 355 completed
results per update-ready threshold and 3550 shared queue slots per node.
Choose whether to save search summaries with
--storesummariesinfile according to your analysis needs.
How the flush conditions combine
APE checks flushing in its workflow loop, using results already collected from the workers. With both options positive, regular flushing requires both thresholds to be exceeded. The workstation values above therefore require more than five minutes and more than one collected job summary since the previous flush. They do not write after each job.
Set --flushafterminutes=0 to use only the job-count condition, or
--flushafterjobsdone=0 to use only elapsed time. With both set to 0,
APE writes whenever it collects new results. Memory pressure can force an
earlier write; APE also writes when ending at max_cycle or when no
dispatchable candidates remain. These settings do not
guarantee an exact write interval or save unfinished searches.
Tune for the cost of each search
These suggestions are starting points, not optimized settings for every system or potential.
Fast searches, such as EAM: longer queues can help keep workers supplied with work. Collecting more completed searches per update and using larger buffers can reduce coordination overhead, provided memory is available.
Slower searches, such as MACE: shorter queues may already keep workers busy. Collecting fewer completed searches per update lets APE incorporate new results sooner; smaller batches may also allow smaller buffers.
Increase --numjobsperwgroup if workers regularly run out of queued work.
Once the queue is sufficient, making it longer adds memory use and schedules
more work based on the current exploration state, without necessarily
improving throughput. Queue depth and collection frequency are separate:
a longer queue can still use a small --numjobsdonetotriggerupdate threshold.
Choose buffer sizes for the actual structures and descriptors. MACE can
produce larger descriptor records, so slower searches do not automatically
need less buffer memory. Here, more frequent collection means fewer completed
jobs per update, not necessarily shorter wall-clock intervals. The
--flushafter* options separately control writing results to disk.
See Parallel execution and the examples for MPI/Slurm launch commands, CPU-thread allocation, and GPU worker settings.
Full option lists¶
After activating the selected build, consult its own help for all supported options and defaults:
"$SODA_BIN" --help-config
"$SODA_BIN" --help
These commands initialize MPI, so use an environment where that build can start. The corresponding source references are the configuration schema and command-line definitions.