|
PICurv 0.1.0
A Parallel Particle-In-Cell Solver for Curvilinear LES
|
This page explains how a PICurv run moves from a new solve to restart, post-processing reuse, and cluster job generation. It is the operational view of the run directory lifecycle.
For PICurv, a "run" is not just a solver launch. It is the full set of generated artifacts under runs/<run_id>/, including:
config/,logs/,scheduler/.Key rule:
picurv run --solve ... creates a fresh run directory,picurv does not mutate an old run directory in place when you start a new solve,run_id is generated automatically as <case_basename>_<timestamp>.
Typical local solve + post:
Typical cluster solve + post:
Recommended preflight:
picurv validate ...picurv run ... --dry-runpicurv run ... --cluster ... --no-submitThis sequence verifies contract correctness before consuming runtime or queue time.
A typical run directory contains:
runs/<run_id>/config/: generated .control, BC files, copied YAML inputs, and post.runruns/<run_id>/logs/: solver/postprocessor runtime logs and metrics written by PICurv itselfruns/<run_id>/results/: solver outputs when monitor paths use the default layoutruns/<run_id>/scheduler/: generated Slurm scripts, submission.json, and cluster stdout/stderr in cluster moderuns/<run_id>/manifest.json: top-level run metadataPractical interpretation:
config/ first,scheduler/solver.sbatch or scheduler/post.sbatch,scheduler/submission.json is the source of truth for delayed submit and run-directory-based cancel,PICurv now separates case physics from site execution policy.
Local multi-rank precedence:
PICURV_MPI_LAUNCHERMPI_LAUNCHER.picurv-execution.yml.picurv-local.ymlmpiexecCluster batch precedence:
cluster.yml -> execution.picurv-execution.yml -> cluster_execution.picurv-execution.yml -> default_executionsrunThis gives three clean cases:
picurv init creates .picurv-execution.yml in each new case with inert defaults,.picurv-execution.yml when needed,cluster.yml needs a batch-specific override.Restart uses the normal solve workflow. There is no separate restart command.
Example:
Operational meaning:
500,501,1500,runs/<new_run_id>/ directory.Before launching:
start_step equal to the saved step, not the next desired step,monitor.yml directory names match the source run layout.When solver outputs already exist, reuse the run directory directly:
Use this when:
PICurv will auto-identify the required case/monitor/control artifacts from runs/<run_id>/config/.
In cluster mode, picurv writes scheduler artifacts into the new run directory:
scheduler/solver.sbatchscheduler/solver_<jobid>.out / scheduler/solver_<jobid>.errscheduler/post.sbatchscheduler/post_<jobid>.out / scheduler/post_<jobid>.errscheduler/submission.jsonRecommended operational pattern:
--dry-run to confirm launch commands and artifact paths--no-submit to inspect generated batch scriptspicurv submit --run-dir runs/<run_id> only after the scripts look correctpicurv cancel --run-dir runs/<run_id> when you need to stop a submitted stage without separate job-id bookkeepingThis is especially useful when changing:
Operational examples:
Generated Slurm solver jobs also export runtime walltime metadata into solver.sbatch, so the solver can estimate completed-step cost and request a graceful final write before remaining walltime gets too tight. If the cluster profile also requests an early signal, PICurv traps SIGUSR1, SIGTERM, and SIGINT, then uses the same safe-checkpoint final-write path. Use signal: "USR1@300" for srun, or signal: "B:USR1@300" plus exec mpirun ... for direct mpirun batch launches.
runs/<run_id>/config/ as the ground truth for what the binaries actually consumed..picurv-execution.yml..picurv-execution.yml; keep scheduler policy in cluster.yml.execution.walltime_guard in the cluster profile rather than editing generated scripts.This page describes Run Lifecycle Guide within the PICurv workflow. For CFD users, the most reliable reading strategy is to map the page content to a concrete run decision: what is configured, what runtime stage it influences, and which diagnostics should confirm expected behavior.
Treat this page as both a conceptual reference and a runbook. If you are debugging, pair the method/procedure described here with monitor output, generated runtime artifacts under runs/<run_id>/config, and the associated solver/post logs so numerical intent and implementation behavior stay aligned.
config/ and scheduler/ artifacts before blaming the solver.