Troubleshooting

FAQs

Why did lume-ace3p enable dry-run mode by itself?

When you see one of these messages on startup —

ACE3P environment not configured, enabling dry run mode.
Geant4 environment not configured, enabling dry run mode.

lume-ace3p could not resolve the path to ACE3P (or to the Geant4 application, when the workflow includes a geant4 module) through any of the four resolution mechanisms: a paths mapping in workflow_parameters, the relevant environment variable (ACE3P_PATH, GEANT4_APP_PATH / GEANT4_APP_EXE), a built-in site default (Perlmutter / S3DF), or autodetection on PATH/$HOME. The workflow still runs end-to-end in Python but skips the external solver call and writes a DRY_RUN.txt marker in each working directory. To run a real workflow, set one of those paths — see Executable paths for the full precedence chain.

lume-ace3p is using the wrong ACE3P/Cubit/MPI binary — how do I override it?

Add a paths mapping under workflow_parameters. YAML overrides take precedence over environment variables, site defaults, and autodetection:

workflow_parameters :
  'paths' :
    'ace3p' : '/my/custom/ace3p/bin/'
    'cubit' : '/my/custom/cubit/'
    'mpi'   : 'srun'

This is the recommended way to pin a specific build for a given workflow file without changing your shell environment.

Why does lume-ace3p fail to find the mesh file generated from Cubit?

Check that the .gen filename provided in the Cubit journal export command matches the .ncdf filename in the Omega3P input file. For example, if the Cubit journal includes export genesis "my_mesh.gen", the Omega3P input file should contain File: ./my_mesh.ncdf within the ModelInfo block.

Why does lume-ace3p fail during Omega3P?

Check that the mesh file is correct and that appropriate resources are allocated for the problem size (i.e. no out-of-memory errors). If the mesh is unexpectedly large, check the Cubit journal for errors, particularly in the meshing routine.

Also check the Omega3P input file for typos in the key-value containers or for sideset/ID inconsistencies between the Omega3P input and the Cubit journal export.

Why does lume-ace3p fail for specific parameter values?

Cubit journal files require care when using parametric variables. Some variables cannot exceed certain quantities or the geometry may become undefined or topologically change. When topological changes occur, the Cubit vertex/curve/surface/volume IDs may change and affect sideset ID definitions. Sideset IDs are used by Omega3P and acdtool to define surfaces; if these are incorrectly assigned, the workflow may crash or produce junk results.

Verify that the journal file works as intended at the extremal values of all given parameters. For example, if sweeping input_1 from 20 to 80, make sure the journal file works properly when input_1 = 20 and input_1 = 80 (assuming the deformation is smooth and continuous between those values).

Can I restart a parameter sweep if the job failed mid-sweep?

Yes. Add resume: True to the mode: block, set workflow_parameters: {workdir_mode: indexed}, and re-run the same command: each point that already finished contributes its row without launching a solver, the point that was interrupted restarts at the step that did not finish, and the rest run normally. The result table comes out identical to an uninterrupted run — see Resuming a sweep that was cut off for the full per-point rules, and run-lume-ace3p --status <config.yaml> to see what is already done before re-running.

Important

The result table (mode.output_file) is still written once, when the sweep completes, so a job that failed mid-sweep leaves no table for the rows it finished. That is what makes resuming the thing to do rather than combining partial tables: the resumed run rebuilds the whole table, earlier rows included, from the results already in the per-point workdirs.

resume must be opted into and cannot be used with workdir_mode: manual (every point shares one directory there, so no point has state of its own). Without it, adjusting the swept range in input_parameters remains the workaround: sweeping input_1 from 20 to 80 in steps of 10, if the job fails at input_1 = 50, edit that leaf’s range to start at 50 and give the restart a different output_file to combine afterward.