|
PICurv 0.1.0
A Parallel Particle-In-Cell Solver for Curvilinear LES
|
This page is the user-facing source of truth for the configuration contract implemented by pic.flow.
pic.flow composes a standard single-run workflow from five logical inputs, with two additional files for cluster/sweep modes:
case.yml: physics, grid, BC definitions, run control.solver.yml: numerical strategy and solver parameters.monitor.yml: I/O and logging/profiling controls.post.yml: post-processing recipe.-n, executable stage selection).cluster.yml: scheduler/resource/launcher contract.study.yml: parameter matrix + metrics/plot contract.You can name files however you want. File names are not hardcoded on the C side; pic.flow resolves paths and emits generated artifacts.
For each run, pic.flow generates:
<run_id>.control: master PETSc/control flags for solver/post setup.bcs.run or bcs_block*.run: boundary condition definitions.whitelist.run: logging function allow-list.profile.run: profiling critical-function list.post.run: key=value post-processing recipe consumed by C post parser.grid.mode supports: file, programmatic_c, grid_gen.programmatic_c, per-block arrays are supported for geometry (im/jm/km, bounds, stretching).da_processors_x/y/z are scalar integers only (global DMDA layout). Per-block MPI decomposition is not currently supported.boundary_conditions supports single-block list or multi-block list-of-lists.solver_parameters is an advanced passthrough map for raw flags not yet modeled in schema.operation_mode.eulerian_field_source -> -euler_field_sourceoperation_mode.analytical_type -> -analytical_typestrategy.momentum_solver -> -mom_solver_type via normalized names.momentum_solver.dual_time_picard_rk4.petsc_passthrough_options remains the escape hatch for advanced PETSc/C flags.io.data_output_frequency -> -tioio.particle_log_interval -> -logfreqio.directories.output/restart/log -> -output_dir/-restart_dir/-log_dirio.directories.eulerian_subdir/particle_subdir -> -euler_subdir/-particle_subdirsolver_monitoring maps raw flags directly into control output.io.eulerian_fields -> output_fields_instantaneousio.eulerian_fields_averaged -> output_fields_averaged (reserved/no-op in current writer path)io.particle_fields -> particle_fields_instantaneousio.input_extensions.eulerian/particle -> eulerianExt/particleExt for post input readerssource_data.directory -> source_directoryscheduler.type currently supports slurm only.resources.account/nodes/ntasks_per_node/mem/time are required.resources.partition is optional.notifications.mail_user/mail_type are optional; email is validated when provided.execution.module_setup injects shell lines before launch.execution.launcher controls launch style (srun, mpirun, custom).execution.launcher_args provides site-specific launch flags.execution.extra_sbatch supports scheduler-specific pass-through flags.pic.flow run --cluster ... generates:
runs/<run_id>/scheduler/solver.sbatchruns/<run_id>/scheduler/post.sbatchruns/<run_id>/scheduler/submission.jsonbase_configs provides case/solver/monitor/post template paths.study_type is one of:grid_independencetimestep_independencesensitivityparameters defines cartesian-product sweeps using keys of form:case.<yaml.path>solver.<yaml.path>monitor.<yaml.path>post.<yaml.path>metrics defines CSV/log extractors for aggregate tables.plotting controls whether plots are generated and output format.execution.max_concurrent_array_tasks maps to Slurm array throttling N.pic.flow sweep --study ... --cluster ... generates:
studies/<study_id>/scheduler/case_index.tsvstudies/<study_id>/scheduler/solver_array.sbatchstudies/<study_id>/scheduler/post_array.sbatchstudies/<study_id>/results/metrics_table.csvstudies/<study_id>/results/plots/*case.solver_parameterssolver.petsc_passthrough_optionsmonitor.solver_monitoringdat unless overridden.For workflow growth patterns (grid generation orchestration, multi-run studies, and ML coupling paths), see Workflow Extensibility Guide.