|
PICurv 0.1.0
A Parallel Particle-In-Cell Solver for Curvilinear LES
|
This page documents the currently active implicit-style momentum strategy in PICurv: dual-time Picard iteration with RK4 pseudo-time smoothing.
The solver enforces the physical-time momentum equation by iterating a pseudo-time equation:
\[ \frac{\partial \mathbf{U}}{\partial \tau} = -\Big(R_{spatial}(\mathbf{U}) + R_{time}(\mathbf{U})\Big). \]
Implementation details from ComputeTotalResidual:
R_spatial comes from ComputeRHSR_time uses BDF1/BDF2-style terms from Ucont, Ucont_o, and Ucont_rm1,Per pseudo-iteration, the solver tracks:
Backtracking is triggered when residual and update growth indicate divergence (or NaN), then:
Pseudo-CFL is also adaptively ramped on successful steps and clamped by configured min/max bounds.
User-facing configuration (solver.yml) maps to:
strategy.momentum_solver -> -mom_solver_typetolerances.max_iterations -> -mom_max_pseudo_stepstolerances.absolute_tol -> -mom_atoltolerances.relative_tol -> -mom_rtoltolerances.step_tol -> -imp_stolmomentum_solver.dual_time_picard_rk4.pseudo_cfl.* -> pseudo-CFL flagsrk4_residual_noise_allowance_factor -> -mom_dt_rk4_residual_norm_noise_allowance_factorParsing and normalization are performed in scripts/pic.flow, with final option ingestion in function CreateSimulationContext during setup.
Common stability tuning order:
For many cases, robust Poisson settings and sane initialization matter as much as dual-time tolerances.