Simulation Tasks#

enerzyme simulate dispatches ASE workflows from Simulation.task in enerzyme/tasks/simulator.py.

Command#

enerzyme simulate -c sim.yaml -o sim_out/ -m model_dir/ -mc config.yaml \
    [-cp calculator_patch.py] [-pp plumed_patch.py]

Task matrix#

  • sp — (inline config) → sp.xyz

  • optopt.yamltraj-opt.xyz, optim.xyz

  • scanscan.yamlscan_optim.xyz, traj-*

  • mdnvt_md.yamlmd.traj.xyz

  • nebneb.yamlneb.xyz, ci-neb.xyz

  • plumedplumed.yamlplumed.traj.xyz

  • plumed_scan — (plugin) → scan_optim.xyz

Shared Simulation keys#

  • environment: ase

  • dtypefloat64 recommended for optimization

  • cuda

  • neighbor_list — match training

  • idx_start_from — 1 (1-based) or 0 (0-based) for constraints and scans

  • Hartree_in_E, fs_in_t — unit conversion for integrators

Constraints#

constraint:
    fix_atom:
        indices: [80, 81, 82]
    Hookean_allpairs:
        indices: [10, 11, 12]
        k: 10.0

Optimizers#

opt, scan, plumed_scan: BFGS, LBFGS, FIRE, MDMin, GPMin, line-search variants.

NEB optimizers: odesolver, static (ASE NEBOptimizer).

Integrators#

md / plumed: currently Langevin with time_step, temperature_in_K, friction, n_step.

NEB inputs#

System.structure_file as multi-frame XYZ:

  • 2 frames — reactant + product (interpolate with IDPP)

  • 3 frames — reactant + TS guess + product

  • num_images frames — use path as-is

Options: relax_endpoints, climb, spring_constants, interpolation.method: idpp.

Calculator integration#

The trained model is wrapped as ASECalculator (enerzyme/tasks/calculator.py). Hybrid and UDD setups use external_calculator and uncertainty_calculator — see Enhanced Sampling and PLUMED.