PICurv 0.1.0
A Parallel Particle-In-Cell Solver for Curvilinear LES
Loading...
Searching...
No Matches
Analytical Solution Modes

Analytical mode bypasses the normal momentum/Poisson time advancement and directly sets Eulerian fields from closed-form expressions.

1. Activation Path

Analytical mode is selected by:

  • solver.yml.operation_mode.eulerian_field_source: analytical
  • solver.yml.operation_mode.analytical_type: <TYPE>

Flags generated by pic.flow:

  • -euler_field_source "analytical"
  • -analytical_type "..."

Runtime dispatch is handled by function AnalyticalSolutionEngine in analytical execution mode.

2. Supported Types In Current Code

  • TGV3D
  • ZERO_FLOW

Implementation touchpoints:

3. TGV3D Details

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:

  • single block: full domain assignment,
  • multi-block: requires perfect-square block count for XY decomposition.

4. ZERO_FLOW Details

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.

5. Particle Consistency

Particle-side analytical initialization hooks exist via SetAnalyticalSolutionForParticles so particle fields can remain consistent with analytical Eulerian state when desired.

7. Extensibility Status

  1. add a new branch in function AnalyticalSolutionEngine for the new type,
  2. define geometry policy in function AnalyticalTypeRequiresCustomGeometry for that type,
  3. implement geometry setup in function SetAnalyticalGridInfo when needed,
  4. update YAML schema/docs and generated-flag mapping.

Also update: