|
PICurv 0.1.0
A Parallel Particle-In-Cell Solver for Curvilinear LES
|
This page tracks momentum-solver options accepted by the current configuration and their runtime implementation status.
Runtime selection is controlled by -mom_solver_type, produced from solver.yml (strategy.momentum_solver). Dispatch currently happens in function FlowSolver within the step orchestrator.
Accepted YAML values:
Explicit RK4 -> EXPLICIT_RKDual Time Picard RK4 -> DUALTIME_PICARD_RK4Only implemented values are exposed in the enum, parser, and dispatcher. New solver values should be added only with a real implementation plus matching parser, docs, and test updates.
EXPLICIT_RK: implemented by MomentumSolver_Explicit_RungeKutta4DUALTIME_PICARD_RK4: implemented by MomentumSolver_DualTime_Picard_RK4Main controls consumed by implemented solvers:
-mom_max_pseudo_steps-mom_atol-mom_rtol-imp_stol-pseudo_cfl, -min_pseudo_cfl, -max_pseudo_cfl-pseudo_cfl_growth_factor, -pseudo_cfl_reduction_factor-mom_dt_rk4_residual_norm_noise_allowance_factorDefaults and final option ingestion are in function CreateSimulationContext during startup parsing.
Current testing is uneven by solver path:
FlowSolver-side unit testsMomentumSolver_DualTime_Picard_RK4 is exercised mainly through smoke and runtime orchestrationMomentumSolver_Explicit_RungeKutta4 still needs a direct positive-path harnessThat means the momentum stack is currently a stronger regression gate than bespoke debugging surface.
Required steps:
src/momentumsolvers.c,variables.h, setup.c, scripts/picurv),For user-facing contract updates, also update:
This page describes Momentum Solver Implementations 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.