|
PICurv 0.1.0
A Parallel Particle-In-Cell Solver for Curvilinear LES
|
This page documents particle seeding, restart behavior, and early-step migration/settling logic. It is written for both case authors and contributors working in src/ParticleSwarm.c and src/ParticleMotion.c.
Particle controls live in:
Mapping to control flags:
count -> -numParticlesinit_mode -> -pinitrestart_mode -> -particle_restart_modepoint_source -> -psrc_x/-psrc_y/-psrc_z (required when init_mode is PointSource)pic.flow accepts names and numeric forms:
Surface, surface random, 0Volume, volumetric, 1PointSource, point source, 2SurfaceEdges, surface edges, 3Enum mapping in C (ParticleInitializationType):
0: PARTICLE_INIT_SURFACE_RANDOM1: PARTICLE_INIT_VOLUME2: PARTICLE_INIT_POINT_SOURCE3: PARTICLE_INIT_SURFACE_EDGESMain setup flow:
AssignInitialPropertiesToSwarm seeds base particle state.PerformInitializedParticleSetup settles/migrates and couples to Eulerian fields.Mode details:
Surface (0):
CMx_c/CMy_c/CMz_c) before migration,ReinitializeParticlesOnInletSurface re-spreads particles on inlet partitions after first settlement.SurfaceEdges (3):
Volume (1):
PointSource (2):
(psrc_x, psrc_y, psrc_z).InitializeParticleSwarm behavior depends on StartStep and restart mode:
StartStep | particle_restart_mode | Behavior |
|---|---|---|
0 | any | initialize new population |
>0 | init | initialize new population in restarted flow |
>0 | load | load particle fields from restart files |
For loaded particles, fast migration path:
For initialized particles (StartStep == 0 path):
LocateAllParticlesInGrid performs location/migration.InterpolateAllFieldsToSwarm assigns flow fields at particle positions.For loaded particles:
MigrateRestartParticlesUsingCellID fast migration,LocateAllParticlesInGrid resolves invalid/missing cases,After position/PID/cell placeholders, initialization sets defaults for:
velocity (vector),weight (vector),Diffusivity (scalar),DiffusivityGradient (vector),Psi (scalar).Cell IDs start at -1 until location confirms host cells.
Check banner/log output for:
Typical errors:
point_source.{x,y,z} for point source mode,{init, load}.If adding a new particle initialization mode:
scripts/pic.flow,ParticleInitializationType and parser wiring in C,InitializeParticleBasicProperties and any inlet reinit path,