|
PICurv 0.1.0
A Parallel Particle-In-Cell Solver for Curvilinear LES
|
Analytical mode bypasses the normal momentum/Poisson time advancement and directly sets Eulerian fields from closed-form expressions.
Analytical mode is selected by:
solver.yml.operation_mode.eulerian_field_source: analyticalsolver.yml.operation_mode.analytical_type: <TYPE>Flags generated by picurv:
-euler_field_source "analytical"-analytical_type "..."Runtime dispatch is handled by function AnalyticalSolutionEngine in analytical execution mode.
Current launcher contract:
TGV3D should be paired with case.yml -> grid.mode: programmatic_cZERO_FLOW and UNIFORM_FLOW support case.yml -> grid.mode: programmatic_c and case.yml -> grid.mode: filegrid_gen remains outside the current documented analytical contractTGV3DZERO_FLOWUNIFORM_FLOWImplementation touchpoints:
Current TGV3D implementation sets fields with decaying Taylor-Green style forms in non-dimensional coordinates. Representative form:
\[ \nu = 1/Re, \quad u_x \sim \sin(kx)\cos(ky)\cos(kz)e^{-2\nu k^2 t}, \quad u_y \sim -\cos(kx)\sin(ky)\cos(kz)e^{-2\nu k^2 t}. \]
Geometry behavior for TGV3D in function SetAnalyticalGridInfo follows:
im/jm/km)ZERO_FLOW sets a quiescent background state while preserving the same analytical-mode control path. It is useful for controlled particle-motion or postprocessing validation scenarios.
Grid behavior:
ZERO_FLOW uses the standard analytical grid-ingestion split,programmatic_settings for grid.mode: programmatic_c and -grid_file ingestion for grid.mode: file,UNIFORM_FLOW sets a constant Eulerian velocity field everywhere in the domain while keeping pressure zero. It is intended for deterministic particle-advection verification, where cloud centre-of-mass motion should match the configured constant velocity exactly.
Configuration:
solver.yml -> operation_mode.analytical_type: "UNIFORM_FLOW"solver.yml -> operation_mode.uniform_flow.{u,v,w}Grid behavior:
UNIFORM_FLOW uses the standard analytical grid-ingestion split,programmatic_settings for grid.mode: programmatic_c and -grid_file ingestion for grid.mode: file,Ucont (contravariant flux) using face-metric dot products and derives Ucat via Contra2Cart, ensuring correctness on non-Cartesian grids.Verification-only source overrides such as solver.yml -> verification.sources.diffusivity may be paired with ZERO_FLOW when the analytical velocity field itself should remain quiescent. Those overrides are not general production modeling features; they exist only for otherwise-unreachable end-to-end verification scenarios.
The same analytical-solutions layer now also owns verification-only scalar truth evaluation for solver.yml -> verification.sources.scalar. That scalar path supports CONSTANT, LINEAR_X, and SIN_PRODUCT, writes prescribed truth onto particle Psi, and supplies analytical cell-center reference values for the runtime diagnostic logs/scatter_metrics.csv. Keeping scalar truth in AnalyticalSolutions makes the feature reusable for future static deposition checks, moving-cloud verification under UNIFORM_FLOW, and coupled flow-plus-scatter diagnostics under TGV3D without pushing analytical logic into ParticlePhysics.
Particle-side analytical initialization hooks exist via SetAnalyticalSolutionForParticles so particle fields can remain consistent with analytical Eulerian state when desired.
Also update:
This page describes Analytical Solution Modes 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.