|
PICurv 0.1.0
A Parallel Particle-In-Cell Solver for Curvilinear LES
|
run_control.start_step: 0 instead of treating a fresh start as an in-place continuation and appending misleading step-zero separators to existing logs.dtau = pseudo_cfl × dt to dtau = pseudo_cfl / lambda_max, where lambda_max is the global maximum convective spectral radius computed once per physical timestep. This makes pseudo_cfl.* true dimensionless Courant numbers, independent of dt, grid size, and flow speed.pseudo_cfl.initial: 0.5 and pseudo_cfl.maximum: 2.0 (stable 4-stage Jameson range ~0–2.83); existing configs with 0.1/1.0 still run but now produce physically smaller, safer dtau values.lambda_max >= COEF_TIME_ACCURACY/dt so zero-flow startup yields a finite dtau.mom_last_lambda_max to the simulation context.Pseudo-cfl/ cfl_after to dtau/cfl_eff and dtau_after/cfl_eff_after; picurv summarize parsing, JSON payload, console output, and plot series were updated to match.generated and file modes.Ucat and Ucont startup through the existing field reader.ic_gen run/precompute orchestration, defaulting to generators/ic.gen with an optional compatible script override.generators/ic.gen expression engine for grid-aware Ucat and staggered Ucont PETSc vectors.max_iterations, and guaranteed nonfatal exits retain the last accepted finite state.residual_absolute_tol and residual_relative_tol; configurations without enabled residual tolerances retain legacy update-only convergence semantics.step_tol while retaining compatibility ingestion.logs/search_metrics.csv with timestep-level search, traversal, tie-break, boundary-clamp, bbox-guess, pass-depth, per-step loss, run-local cumulative loss, V2 population/outcome counters, and derived search_failure_fraction, search_work_index, and re_search_fraction signals.LOG_SEARCH_METRICS for compact DEBUG-gated console summaries when explicitly allow-listed.examples/search_robustness/ example family with Brownian Cartesian/curvilinear baselines plus deterministic Cartesian/curvilinear UNIFORM_FLOW migration-stress variants, a study starter, and a dedicated metrics-reference docs page.LOG_PROFILE log level from the C logging enum and all code paths.profiling.timestep_output (off, selected, all) and writes timestep rows to a dedicated profiling log file.profiling.final_summary.enabled now controls whether the end-of-run ProfilingSummary_*.log file is written.LOG_LEVEL=PROFILE is no longer a supported runtime setting.profiling.critical_functions compatibility shorthand; monitors must now use profiling.timestep_output.pic.flow to picurv.picsolver to simulator.init now creates config-only case directories; binaries are resolved from bin/ via PATH.init --pin-binaries copies simulator/postprocessor into the case for version-pinning (protects running jobs from concurrent rebuilds).bin/picurv is now a launcher for the picurv_cli/picurv source-tree entrypoint.sync-binaries pins specific binary versions into a case directory (optional, equivalent to --pin-binaries after init).--copy-binaries init flag.programmatic_c.im/jm/km are now treated as cell counts as documented.picurv now converts those values to node counts before emitting -im/-jm/-km.grid_gen remains unchanged: grid.gen still accepts cell counts and writes node counts into .picgrid.programmatic_c case with im=32 previously yielded 31 physical cells; it now yields the documented 32 physical cells.Dual Time Picard RK4 to the more precise Dual Time Picard Jameson RK; deprecated RK4 selector, YAML-block, noise-control, C API, and C CLI spellings remain accepted as compatibility aliases.PICGRID headers are required for file-based grids in C runtime ingestion.grid.gen legacy1d converter and optional grid.legacy_conversion wrapper in picurv for headerless 1D-axis legacy payload migration.run --num-procs now applies to solver stage sizing.post.sbatch now uses forced single-task resources (nodes=1, ntasks_per_node=1).cluster.yml Slurm contract support to picurv run (--cluster, --scheduler, --no-submit).picurv submit as the delayed-submit counterpart to --no-submit for existing run/study artifacts.picurv cancel so Slurm jobs can be stopped by --run-dir instead of manual job-id lookup; picurv cancel --stage solve --graceful requests solver final-output shutdown with SIGUSR1.solver.sbatch, post.sbatch, submission.json, manifest.json).picurv sweep for parameter studies using Slurm job arrays with post-stage dependency chaining.picurv sweep --continue --study-dir <path> for resuming partially-completed studies: detects per-case completion status, prepares checkpoint restarts via resolve_restart_source, and submits sparse solver arrays for incomplete cases only.picurv sweep --reaggregate --study-dir <path> for manual metrics re-aggregation on existing study outputs.metrics_aggregate.sbatch, afterany dependency on post array).detect_last_checkpoint_step now falls back to particle checkpoint files (position*.dat) for analytical-mode cases with no eulerian output.metrics_table.csv, results/plots, summary.json).master_cluster.yml, master_study.yml.SIGUSR1, SIGTERM, SIGINT) with launcher-specific Slurm signal guidance.execution.walltime_guard policy and exported batch metadata (PICURV_JOB_START_EPOCH, PICURV_WALLTIME_LIMIT_SECONDS).tests/tooling/audit_function_docs.py as the repository-wide audit gate.picurv summarize for read-only per-step health summaries derived from existing run artifacts.picurv summarize with additive --overview, --case, --solver, and --monitor configuration views that work before timestep artifacts exist.summarize --list-plot-series and --plot time-history workflows backed by standalone generators/plot.gen, with append-order windows, automatic residual/norm log scaling, explicit saves, and headless fallback.matplotlib as an actionable DEPENDENCY_MISSING plotting error instead of a configuration-value error.matplotlib by default in the bootstrap-managed Python environment so plotting works after a standard install.--upgrade-pip for environments that need it.runs/<run_id>/scheduler/ instead of runs/<run_id>/logs/.picurv -> C contract.docs/assets/curv.gif, docs/assets/paraview_flat_channel.png).config/build/.grid.gen profile to config/grids/coarse_square_tube_curved.cfg.sandbox/ into explicit developer-sandbox documentation.guide.md (non-root).docs/assets/.README.md files (single top-level README.md retained).logs/doxygen.warnings.da_processors_* contract with validation.tests/tooling/audit_ingress.pytests/tooling/audit_ingress_manifest.jsonstubs/ archive from repository after extracting useful documentation content.