|
PICurv 0.1.0
A Parallel Particle-In-Cell Solver for Curvilinear LES
|
This page is the contributor checklist for adding new selector-driven options without drifting the YAML -> launcher -> C runtime contract.
For every new selector value:
picurv_cli/core.py,Use the canonical value only. Do not add placeholder enum values or compatibility aliases for unimplemented options.
solver.yml -> strategy.momentum_solverExplicit RK4Dual Time Picard Jameson RKnormalize_momentum_solver_type() in picurv_cli/core.pystrategy.momentum_solver -> -mom_solver_typeMomentumSolverType in include/variables.h-mom_solver_type in CreateSimulationContext (src/setup.c)case.yml -> boundary_conditionsBC_TYPE_MAPBC_HANDLER_SPECSvalidate_and_prepare_boundary_conditions() in picurv_cli/core.pybcs.runValidateBCHandlerForBCTypeUserCtxtests/test_cli_smoke.pycase.yml -> models.physics.particles.init_modeSurfaceVolumePointSourceSurfaceEdgesnormalize_particle_init_mode() in picurv_cli/core.pyinit_mode -> -pinitParticleInitializationType in include/variables.h-pinit in CreateSimulationContexttests/test_cli_smoke.pysolver.yml -> interpolation.methodTrilinearCornerAveragednormalize_interpolation_method() in picurv_cli/core.pyinterpolation_method -> -interpolation_methodInterpolationMethod in include/variables.h-interpolation_method in CreateSimulationContext (src/setup.c)tests/test_cli_smoke.pycase.yml -> properties.initial_conditions.modegenerated with generator: zero|constant|streamwise_constant|poiseuille|ic_genfile with field: Ucat|Ucontresolve_initial_condition_config()stage_initial_condition_file()run_initial_condition_generator()normalize_flow_direction_token()resolve_ic_cli_params()-finit and parameter flagsic_gen -> -finit 4 -ic_field ... -ic_dir ...initialConditionMode, initialConditionField, initialConditionDirectory, icVelocityPhysical, and flowDirection in SimCtxsrc/initialcondition.c — PopulateInitialUcont, SetInitialInteriorFieldsrc/setup.c — Cart2Contra, UniformCart2Contratests/test_cli_smoke.pysolver.yml -> operation_mode.analytical_typeTGV3DZERO_FLOWUNIFORM_FLOWnormalize_analytical_type() in picurv_cli/core.pyanalytical_type -> -analytical_typeAnalyticalSolutionType in SimCtx-analytical_type in CreateSimulationContexttests/test_cli_smoke.pysolver.yml -> verification.sources.*verification_sources.*verification.sources.diffusivityverification.sources.scalarLINEAR_XCONSTANT, LINEAR_X, SIN_PRODUCTpicurv_cli/core.pyverification.sources.diffusivity.mode -> -verification_diffusivity_modeverification.sources.diffusivity.profile -> -verification_diffusivity_profileverification.sources.diffusivity.gamma0 -> -verification_diffusivity_gamma0verification.sources.diffusivity.slope_x -> -verification_diffusivity_slope_xverification.sources.scalar.mode -> -verification_scalar_modeverification.sources.scalar.profile -> -verification_scalar_profileverification.sources.scalar.value -> -verification_scalar_valueverification.sources.scalar.phi0 -> -verification_scalar_phi0verification.sources.scalar.slope_x -> -verification_scalar_slope_xverification.sources.scalar.amplitude -> -verification_scalar_amplitudeverification.sources.scalar.kx/ky/kz -> -verification_scalar_kx/-verification_scalar_ky/-verification_scalar_kzverificationDiffusivity and verificationScalar in SimCtxsrc/verification_sources.csrc/rhs.c for diffusivitysrc/AnalyticalSolutions.csrc/ParticlePhysics.csrc/logging.c (logs/scatter_metrics.csv)AnalyticalSolutions, not in model-evolution code such as ParticlePhysicscase.yml -> grid.modecase.yml -> grid.generator.grid_typeprogrammatic_cfilegrid_genpicurv_cli/core.py grid validation and run-dir staginggenerators/grid.genprogrammatic_c emits -im/-jm/-km/...file emits -grid_filegrid_gen shells out to grid.gentests/test_cli_smoke.pymonitor.yml -> profiling.timestep_output.modeoffselectedallresolve_profiling_config()prepare_monitor_files() in picurv_cli/core.pytimestep_output.mode -> -profiling_timestep_modetimestep_output.file -> -profiling_timestep_filefinal_summary.enabled -> -profiling_final_summaryprofile.run + -profile_config_fileSimCtxtests/test_cli_smoke.pypost.yml -> statistics_pipelinemsdnormalize_statistics_task() in picurv_cli/core.pymsd -> ComputeMSD token in generated post.run (dispatched to ComputeParticleMSD)tests/test_cli_smoke.pyThis page describes Modular Selector Extension Guide 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.