CMIM Module
The cmim_avof module models compressible flow with immiscible materials.
Each material has its own equation of state (EOS) and may contain multiple
species. Materials share pressure, temperature, and velocity.
Control File Setup
Load cmim_avof and the required EOS module before the control-file block.
CMIM requires a fixed mesh, SIMPLEC, first-order BDF time integration, and the
total-enthalpy equation. For example, with the realFluid EOS module:
loadModule: realFluid
loadModule: cmim_avof
{
flowRegime: laminar
flowCompressibility: compressible
pressureBasedMethod: SIMPLEC
timeIntegrator: BDF
energyEquationOptions: <form=totalEnthalpy>
transport_model: module
diffusion_model: none
doubleFluxMethod: off
rhoPrimeUStarCorrection: off
vofViscosity: 0
overUnderFillingCorrection: off
// ... mesh, materials, initial and boundary conditions, time-step settings
}
Material Properties
Define each material in materialModels. The following entries use
gas.mdl and liquid.mdl for the material properties:
materialModels: <
Gas=materialModel(chemistry_model=gas,eos_type=gas,
thermodynamic_model=adaptive,transport_model=const_viscosity,
mu=1.8e-5,kcond=0.026),
Liquid=materialModel(chemistry_model=liquid,eos_type=fluid,
thermodynamic_model=adaptive,transport_model=const_viscosity,
mu=0.001,kcond=0.6)
>
Bare transport coefficients use SI units. Keep the top-level
diffusion_model: none; specify material diffusion inside each
materialModel(...) entry.
Numerical Controls
Reconstruction
Select a supported flow/material flux pair. vofInviscidFlux defaults to
FOU; use MIG for sharp material interfaces.
|
|
Requirements |
|---|---|---|
|
|
Closed, periodic, or supported open boundaries. |
|
|
|
|
|
|
|
|
|
For SOU, SLAU, SLAU2, and AUSMUP, omit
consistentEnthalpyProjection from energyEquationOptions.
For bodyForceWeighted interpolation, see the
compatibility requirements.
Composition limiters affect material-local mass fractions and their enthalpy
flux. Non-Barth choices require inviscidFlux: SOU; the flow limiter stays
barth.
Option |
Default |
Values and meaning |
|---|---|---|
|
|
|
|
|
Finite, nonnegative smoothing parameter for non-Barth choices. |
|
|
For |
AUSMUP accepts an optional cmimAUSMFluxParameters block:
cmimAUSMFluxParameters: <Kp=0.25,Ku=0.75>
Option |
Default |
Allowed range |
|---|---|---|
|
|
Finite values in [0,1]. |
|
|
Finite value in (0,1]. |
|
|
Finite value in (0,1]. |
Equation Controls
Set material advection and convergence controls in vofEquationOptions;
set the species solver in materialSpeciesEquationOptions:
vofEquationOptions: <materialAdvection=implicit,requireConvergence=on>
materialSpeciesEquationOptions: <linearSolver=SGS,relaxationFactor=0.5>
Option |
Default |
Values and meaning |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
Volume-fraction update tolerance, including post-pressure material appearance. |
|
|
Material-volume residual tolerance. |
|
|
Material continuity residual tolerance. |
|
|
Volume-fraction bound and sum-to-one tolerance; must lie in (0,0.5). |
These tolerances are dimensionless, finite, and nonnegative;
admissibilityTolerance must lie in the range shown above.
Invalid states and unconverged material appearance always abort.
Option |
Default |
Values and meaning |
|---|---|---|
|
|
Only |
|
|
Finite value in (0,1]. |
|
|
Positive integer; maximum linear-solver iterations. |
|
|
Finite, nonnegative relative species-density update tolerance. |
|
|
Species densities from minus this tolerance up to zero are set to zero; more negative values abort. Zero rejects every negative density. |
|
|
Zero an entire material below this partial-density cutoff. Equality and trace species in retained materials are preserved. Zero retains only floating-point underflow cleanup. |
Both density controls must be finite and nonnegative; bare values use kg/m³.
Cleanup changes mass. Species residual tolerances use the species entries
in convergenceAbsoluteTolerance and convergenceRelativeTolerance;
see Time Step Convergence.
CMIM ignores linearSolver, relaxationFactor, maxIterations, and
residualTolerance in vofEquationOptions and prints a warning.
Hydrostatic Reference
cmimHydrostaticReference: on preserves a prescribed hydrostatic background
with SLAU, SLAU2, or AUSMUP. The default is off.
Load initial_conditions and supply an
initialConditionProgram with hydrostatic pressure
and an explicit reference=plane(...). Velocity must be zero along the
gravity line through the reference point.
This option requires a fixed Cartesian mesh without axisymmetry, constant
nonzero gravity with rhoref=0, and standard or conservative
buoyancy. Only noslip, slip, and symmetry boundaries are supported;
noninertial frames are unsupported.
Keep the program and material models unchanged across restarts: they define
the reference. Heating and perturbations still evolve.
If cmimHydrostaticReference is omitted, cmimSlauHydrostaticReference
supplies its value.
Initial Conditions
Use initialCondition or
initialConditionRegions with pressure,
temperature, velocity, and vof=[material=fraction,...]. Material names must
match materialModels. Volume fractions must sum to one; omitted materials
have zero volume fraction.
For each active multicomponent material, supply its species mass fractions in
materialComposition, for example materialComposition=[Air=[N2=0.77,O2=0.23]].
Fractions within each material must sum to one; omitted species are zero.
A single-species material’s composition is inferred.
Closed-Surface Regions
With cmim_avof, initialConditionRegions accepts closed surface files.
Use inSurface for the volume enclosed by a SolidMesh .surf boundary:
regions=[inSurface(file="liquid.surf",composition=liquid)]
Generate liquid.surf from a volume mesh named liquid.vog with:
vog2surf liquid -o liquid.surf
Surfaces must be closed, consistently oriented, and free of self-intersections.
Concave volumes and separate closed components are supported. Polygonal
.surf faces must be planar.
For a curved reconstruction, use Loci’s computegeom utility. It runs on one
MPI process and writes liquid.geom from triangular and quadrilateral VOG
boundary faces:
computegeom liquid
Select the resulting region with:
regions=[inGeometry(file="liquid.geom",subdivisions=4,composition=liquid)]
subdivisions controls surface resolution: the default is 4 and the
allowed range is 1–64. Neither region form accepts VOG files directly.
Cell-Average Volume Fractions
For cell-average volume fractions, use initialConditionRegions with the
controls below. This example assumes single-species Gas and Liquid
materials defined in materialModels:
cmimVOFInitialization: geometric
cmimGeometricVOFRefinement: 6
cmimGeometricVOFTolerance: 1e-4
initialConditionRegions: <
default=state(u=0 m/s,p=1 atm,T=300 K,vof=[Gas=1]),
liquid=state(u=0 m/s,p=1 atm,T=300 K,vof=[Liquid=1]),
regions=[inSphere(center=[0.5 m,0.5 m,0.5 m],radius=0.25 m,
composition=liquid)]
>
Option |
Default |
Meaning |
|---|---|---|
|
|
|
|
|
Maximum subdivision depth: 0–8, or 0–5 for three or more materials in 3-D. |
|
|
Absolute volume-fraction tolerance for two-material 3-D initialization:
|
Geometric initialization requires a fixed Cartesian mesh with convex cells:
In 2-D, use
grid_file_info: <twoDimensions>and cells extruded in z. Regions must span the thickness: vertical cylinders, boxes, planes with zero z normal, or extrudedinSurfaceandinGeometryboundaries.In 3-D, cell faces must be planar. Supported regions are
inSphere,inBox,leftPlane,inSurface, andinGeometry. With three or more materials, cells must also admit a positive cell-center tetrahedralization matching the mesh volume.
For two-material 3-D initialization, increase refinement if the requested
tolerance cannot be met, or relax the tolerance if a work limit is reached.
Small volume fractions may require a smaller tolerance. For 2-D overlaps and for three or more materials, compare material
volumes as refinement increases; cmimGeometricVOFTolerance does not apply.
Only volume fractions are averaged. Pressure, temperature and velocity retain their regional values, and each material must have the same active composition in every region. Native restart uses the saved state; startup mesh adaptation reevaluates the geometric initialization on the refined mesh.
Initial Condition Programs
In initialConditionProgram, use
alpha_<material> for volume fractions and Y_<material>_<species> for
material-local mass fractions in model=fields(...). Encode non-alphanumeric
bytes in material and species names as _HH with uppercase hexadecimal;
for example, _Air becomes _5FAir. The volume-fraction and composition
requirements above also apply to program states.
Program initialization samples cell centers and does not support
cmimVOFInitialization=geometric.
For hydrostatic pressure, CMIM evaluates density from the material equations of state.
Turbulence and Species Diffusion
For Menter SST 2003 turbulence, specify:
flowRegime: turbulent
turbulenceEquationOptions: <model=menterSST2003>
Menter SST 2003 supports both single-species and multispecies materials.
DES, LES, and the rhok option are unsupported. See
Turbulence Equations for solver controls.
Supply k and omega in the initial and inlet conditions. Regional
state(...) entries in initialConditionRegions also accept w
as an alias for omega.
When molecular or turbulent species diffusion is active, use:
gradStencil: standard
gradType: standard
Omit noSpeciesEnthalpyDiffusion from energyEquationOptions so that
species diffusion also transports enthalpy.
Material Diffusion Options
Molecular and turbulent diffusion are independent. In turbulent flow,
multispecies materials use turbulent mixing by default, even when their
molecular diffusion_model is none.
Option |
Default |
Values and meaning |
|---|---|---|
|
|
|
|
Unset |
Positive molecular diffusivity in m²/s. Required with |
|
|
|
The top-level turbulentSchmidtNumber sets \(Sc_t\) for all materials
using turbulent mixing. It defaults to 0.95 and must be finite and
positive when turbulent mixing is active. The turbulent diffusivity is
\(D_t=\mu_t/(\rho Sc_t)\), using mixture density and eddy viscosity.
interfaceTurbDamping affects momentum viscosity only; it does not reduce
this diffusivity.
Species diffuse between neighboring cells containing the same material. Periodic boundaries are supported. Physical boundaries have zero species diffusion flux; open boundaries carry species by convection. Conversion within one material has additional diffusion restrictions.
Curvature and Surface Tension
The default cmimCapillaryModel: singlePair computes curvature for one
oriented pair in an exactly two-material case. Specify the material names from
materialModels in sigma_ij:
sigma_ij: <matA__matB=0.072 N/m>
momentumInterpolationOptions: <form=new,conservativePressure>
vof_curvature_type: faceDivergence
vof_curvature_smoothing_passes: 2
vof_contact_angle_model: static
vof_contact_angle_deg: 30.0
The first material defines color one and the side through which the contact
angle is measured. Reversing the pair requires the supplementary angle.
The momentum-interpolation form must be new or Denner when surface
tension is active. A nonzero global sigma is rejected because it does
not identify the material pair.
Curvature Selection
|
Method |
|---|---|
|
Gradient interpolation and face-normal divergence. |
|
Optional face-based color smoothing, then face-normal divergence. |
|
Optional nodal color smoothing, then curvature from nodal normals. |
|
Taylor-fit derivatives and curvature averaging; requires |
|
Geometric reconstruction and integrated paraboloid fit. Requires
|
|
Prescribed constant |
|
Curvature from an auxiliary level-set grid; requires |
The experimental faceDivergence and nodalDivergence methods accept
vof_curvature_smoothing_passes (default 2, nonnegative integer).
Zero disables smoothing. Smoothing changes only the curvature calculation.
Both methods require fixed Cartesian 2-D or 3-D meshes and support
symmetry, noslip, subsonicInlet, and fixedPressureOutlet
boundaries. Inlets use prescribed material fractions; entraining outlets
use reservoir fractions during backflow. Outflow uses adjacent-cell values.
Keep curved interfaces away from outlets where this extrapolation can
introduce curvature errors. Outlet-corner wetting is unsupported.
Normal Regularization
direct, faceDivergence, and nodalDivergence accept normalFloor
in curvatureOptions. Omit this block for other methods.
vof_curvature_type: nodalDivergence
curvatureOptions: <normalFloor=1e-3>
normalFloor must be positive and finite. It is a dimensionless color
change over the local cell spacing. Its default is 1e-5 for direct
and 1e-8 for faceDivergence and nodalDivergence.
Larger values suppress weak normals and reduce the local capillary force, including at contact boundaries. Check sensitivity to this setting for the selected curvature method.
Wall Contact Angle
vof_contact_angle_model: none is the default. With static, use
vof_contact_angle_deg (default 90 degrees), or a boundary override:
boundary_conditions: <wall=noslip(adiabatic,contactAngle=30 deg)>
For faceDivergence and nodalDivergence,
vof_curvature_wall_treatment selects where the static angle is imposed:
Value |
Effect |
|---|---|
|
Correct boundary normals. |
|
Also correct adjacent cell gradients before interpolation. |
At corners, cellGradient retains the original cell gradient if the wall
angles are incompatible or the interface direction cannot be determined.
Boundary-face angle conditions still apply.
paraboloid2019 supports static contact angles only in 2-D. Dynamic
contact angles require direct.
RLSG Curvature
RLSG reconstructs curvature on an auxiliary Cartesian grid. It supports
interior interfaces on fixed, convex 2-D meshes; wall contact and 3-D
fraction reconstruction are unsupported. Load rlsg before the
control-file block and select:
vof_curvature_type: rlsg
rlsg_seed_type: volumeFit
gradStencil: standard
use_cellStencil: 1
vof_contact_angle_model: none
rlsg_grid_mode: automatic
rlsg_grid_splits: 1
gradStencil: full may replace standard with use_cellStencil: 1.
Set rlsg_seed_type: volumeFit explicitly; the default is plic.
Automatic spacing uses the smallest face-normal cell width near the initial
interface, divided by two for each rlsg_grid_splits (default 1).
rlsg_grid_max_splits limits the split count (default 3; allowed range
0–20). In a pure-material initial state, the width is taken over the whole mesh.
For a prescribed spacing, use rlsg_grid_mode: manual (the default) and
set rlsg_grid_spacing to a positive value in metres. Automatic mode
requires rlsg_grid_spacing to remain zero. Spacing is uniform and fixed
during a run; automatic mode recalculates it on restart. Manual mode preserves
the chosen spacing across restarts.
Experimental Three-Material Surface Tension
cmimCapillaryModel: threePhaseCSF assembles surface tension for exactly
three immiscible materials. Supply all three unordered pairs, using names
from materialModels:
cmimCapillaryModel: threePhaseCSF
sigma_ij: <matA__matB=0.072 N/m,matA__matC=0.072 N/m,matB__matC=0.100 N/m>
momentumInterpolationOptions: <form=new,conservativePressure>
vof_curvature_type: nodalDivergence
vof_curvature_smoothing_passes: 2
vof_contact_angle_model: none
cmimSurfaceTensionTreatment: standard
Pair order does not matter in this mode. Each coefficient must be positive and smaller than the sum of the other two. Complete spreading and the degenerate equality limit are unsupported.
The mode accepts fixed Cartesian 2-D and 3-D meshes with symmetry or no-slip
boundaries. Keep material interfaces away from solid walls. Contact-angle
conditions, open boundaries, phase change, AMR and surfaceDiffusion are
unsupported. Only nodalDivergence is available; both new and
Denner momentum interpolation are supported. Use
Cell-Average Volume Fractions for cell-average initial fractions.
Thermal Surface Phase Change
surfaceTransfer models evaporation and condensation between a pure liquid
and its vapor. kunkelmann uses the saturation temperature; schrage
couples kinetic mass transfer to the interface heat balance.
energyEquationOptions: <form=totalEnthalpy>
phaseChangeModels: <hydrogen=surfaceTransfer(
donorMaterial=LH2,receiverMaterial=GH2,
constituents=[map(donorSpecies=_LH2,receiverSpecies=H2)],
model=kunkelmann(
saturation=antoine(A=3.54314,B=99.395,C=7.726,
pressureUnit=bar,temperatureUnit=K,Tmin=20.01 K,Tmax=32.27 K),
thermalBandLayers=8,
redistribution=hardtWondra(
interfaceValue=0.5,pureMaterialCutoff=1e-3,
smoothingLength=0.05 m)
)
)>
Use material and species names from materialModels, with one species
per material. The donor is liquid; the receiver is vapor. Set the EOS
enthalpy references so vapor enthalpy minus liquid enthalpy gives the
positive latent heat at the interface.
Use one channel on a fixed, nonperiodic Cartesian mesh or a single-layer
meridional mesh with gridCoordinates: axisymmetric (x axial, y radial).
Noncondensable gases, triple junctions and capillary corrections to phase
equilibrium are unsupported. Omit phaseChangeModels to disable phase change.
Surface Model Options
Both models require saturation and redistribution. Antoine requires
all entries shown above. Pressure units are Pa, kPa, MPa or bar;
use K for temperature. Keep interface states within the saturation range
and all material states within their EOS ranges.
saturation also accepts:
saturation=clausiusClapeyron(
referencePressure=103632 Pa,referenceTemperature=20.35 K,
referenceLatentHeat=445800 J/kg,Tmin=20.01 K,Tmax=32.27 K)
referenceLatentHeat sets the saturation slope. The EOS enthalpies set
the latent heat used in the heat balance.
Option |
Meaning and limits |
|---|---|
|
Pure-phase sample search depth: integer 1–64 cell layers; default 8. |
|
Required interface donor volume fraction: 0.5. |
|
Required pure-phase fraction tolerance: strictly between 0 and 0.5. |
|
Required positive smoothing length, with length units. |
Provide pure-phase cells on both sides of the interface within the search band. Transfer that exhausts a material or species aborts; reduce the timestep.
For Schrage, replace kunkelmann with schrage and add:
accommodationCoefficient=0.001,
vaporTemperature=sampled,
accommodationCoefficient is required and lies in (0,1].
vaporTemperature=sampled is the default; interface uses the interface
temperature in the incident-vapor term.
Volumetric Cavitation
The zwart, merkle, and schnerrSauer models represent
pressure-driven cavitation. Specify named channels in phaseChangeModels,
each with one liquid/vapor species map:
phaseChangeModels: <hydrogen=volumetricTransfer(
liquidMaterial=Liquid,vaporMaterial=Ullage,
constituents=[map(liquidSpecies=LH2,vaporSpecies=H2)],
model=zwart(
saturation=antoine(A=3.54314,B=99.395,C=7.726,
pressureUnit=bar,temperatureUnit=K,Tmin=17 K,Tmax=32.27 K),
bubbleRadius=1e-6 m,nucleationVolumeFraction=5e-4,
vaporizationCoefficient=50,condensationCoefficient=0.01
)
)>
Define Liquid and Ullage in materialModels with compatible liquid
and vapor EOS and enthalpy references. The mapping rules are:
Liquid and vapor species must be distinct and have matching molecular masses. Each species must belong to its named material and may appear in at most one pair.
The two material names may be identical. For conversion within one material, set its
diffusion_model=noneand, in turbulent flow,turbulent_diffusion_model=none.Separate additional channels with commas. Channels may share materials and use different models, coefficients, and saturation correlations. Do not combine them with
surfaceTransfer.
Both laminar flow and Menter SST 2003 are supported.
The aliases donorMaterial, receiverMaterial, donorSpecies, and
receiverSpecies are accepted; use either the liquid/vapor name or its
alias for each option.
Model Parameters
All three models require saturation=antoine(...),
vaporizationCoefficient, and condensationCoefficient. The two transfer
coefficients are dimensionless, nonnegative, and cannot both be zero.
No model coefficients are supplied by default.
Antoine requires A, B, C, pressureUnit, temperatureUnit,
Tmin, and Tmax. Use temperatureUnit=K and pressure units Pa,
kPa, MPa, or bar. The entire cell-temperature range must lie
within the saturation correlation and both phase EOS ranges, including
where a phase is initially absent.
Model |
Parameters |
Units and limits |
|---|---|---|
|
|
Positive radius in metres; fraction strictly between zero and one. |
|
|
Positive values in m, m/s, and kg/m³. Unit syntax for density is |
|
|
Positive bubble count per m³ of liquid, entered as a real number; positive radius in metres. |
To convert Merkle coefficients from cavitation_nist, use
vaporizationCoefficient=1/tauVap and condensationCoefficient=1/tauCond
with the same reference quantities. Enter the evaluated numbers in the
control file.
Operating Limits
Reduce the timestep if phase change would consume more of a species than is available. Transfer rates are not clipped.
Zwart and Merkle can create either missing phase. Schnerr–Sauer nucleates vapor in pure liquid, but its rate is zero in pure vapor.
These models use total mechanical pressure. They do not model gas dissolution, vapor partial-pressure equilibrium, or heat-limited cryogenic evaporation.
Output and Diagnostics
Use the shared output controls to select fields and output frequency.
Material and Species Output
The default vof family writes vof_<material>, the material volume
fraction. The default mixture family writes Y_<species>, the species
mass fraction in the full mixture. Identical species names in different
materials contribute to the same mixture field.
Select additional fields by family name:
Selector |
Output names |
Meaning |
|---|---|---|
|
|
Material mass divided by mixture mass. |
|
|
Material mass per mixture volume, in kg/m³. |
|
|
Intrinsic material density, in kg/m³; zero where absent. |
|
|
Species mass fraction within the material; zero where absent. |
|
|
Material density times species diffusivity, in kg/(m s). |
For example:
plot_output: materialComposition, materialDensity
Fields are interpolated from cells to nodes, so interface nodes may contain intermediate values. Plot selection does not affect restart data.
Curvature Output
For single-pair surface tension, kappa is the curvature on the flow mesh,
in inverse metres. Three-material surface tension provides
capillaryKappa0, capillaryKappa1, and capillaryKappa2, in the
material order printed at startup. capillaryForce is the total force
per unit volume, in N/m³.
With RLSG curvature, the following selectors write the auxiliary mesh and fields:
Selector |
Quantity |
|---|---|
|
Auxiliary mesh only. |
|
Signed distance, in metres; zero defines the interface. |
|
Initial distance seed, in metres. |
|
Auxiliary curvature, in inverse metres. |
Each field includes the mesh and a matching validity field, such as
rlsgLevelSetValid. Files are written under output/<case>_SURF.rlsg/
at the normal plotting frequency. For cycle 10 of a run named case:
extract -vtk -bc rlsg case 10 rlsgLevelSet rlsgLevelSetValid rlsgKappa rlsgKappaValid
Open case_vtk.10/rlsg_Surf.vtu. Threshold rlsgLevelSetValid to one
with All Scalars enabled, then contour rlsgLevelSet at zero.
Use the corresponding validity field for curvature or seed plots; invalid
entries contain zero. The auxiliary mesh lies at z=0; slice the flow
mesh at that plane for comparison.
To compare auxiliary-grid spacings, use the rlsg-spacing utility.
Phase-Change Output
Add cmimPhaseChange to diagnostics to write
output/cmimPhaseChange.dat. The file reports signed transfer,
evaporation, condensation, and conservative material/species sources.
Positive signed rates denote evaporation; negative rates denote condensation.
With multiple channels, the file also includes these columns for each
configured channel name:
Column |
Meaning |
Units |
|---|---|---|
|
Net transfer rate |
kg/s |
|
Evaporation rate (nonnegative) |
kg/s |
|
Condensation rate (nonnegative) |
kg/s |
Aggregate evaporation and condensation include all channels, even when
their signed rates cancel. With multiple channels, the donorMaterial
and receiverMaterial index columns contain -1.
Transfer within one material has zero material mass source and nonzero
mapped species sources.
Surface models also write output/cmimPhaseChangeSurface.dat at each
nonlinear iteration. Use the final converged row of each timestep for
histories. Axisymmetric areas and rates refer to the full revolution.
Columns |
Meaning |
Units |
|---|---|---|
|
Interface area |
m² |
|
Heat supplied by each side and their sum |
W |
|
Net transfer before smoothing, after normalization and in the source |
kg/s |
|
Nonnegative gross rates; net transfer may vanish |
kg/s |
|
Integrated material sources; their sum should be zero |
kg/s |
|
Interface heat/enthalpy balance error |
W |
Heat rates refer to the interface. Plot selectors are phaseChangePairColor,
phaseChangeContourCells, phaseChangeInterfaceBand,
phaseChangeMassFlux and phaseChangeSharpMassSource.
Console and Detailed Diagnostics
cmimResidualOutput: species (default) prints one RV_<n>: line per
material at each nonlinear iteration. The columns contain the cycle,
iteration, and species residuals in kg/s. Each residual is the sum of
absolute cell residuals. A startup legend identifies the column order:
# RV_1: material="Gas" index=0 species=["N2","O2"] units=kg/s norm=global_L1
RV_1: 1363 62 1.200000e-08 3.400000e-09
cmimResidualOutput: summary prints one RV: line containing the
maximum species residual in each material.
Select detailed diagnostics with diagnostics, for example:
diagnostics: <cmimConvergence,cmimCapillary>
Selector |
Output |
Contents |
|---|---|---|
|
Console |
Normalized convergence checks, listed below. |
|
|
Material presence, volume-fraction bounds, and composition changes. |
|
|
Pressure-equation residuals, volume balance, and continuity errors. |
|
|
Material and species transport residuals. |
|
|
Maximum curvature and capillary CFL number when surface tension is active. |
cmimAVOF enables all groups in this table. Diagnostic files are written
under output/. Invariant, pressure, and transport files contain one row
per nonlinear iteration; capillary output follows the print frequency.
Fresh runs replace these files. Restarts retain earlier rows and replace
rows from the resumed state onward.
In RCMIM: output, numerical ratios at or below one pass their checks.
The two flags use the values specified in the table.
Field |
Meaning |
|---|---|
|
Largest species equation residual relative to its convergence limit. |
|
Volume-balance and continuity errors relative to their tolerances. |
|
Species and volume-fraction changes relative to their limits. |
|
Newly appearing material update relative to its limit. |
|
Volume-fraction bound and sum-to-one errors relative to their limits. |
|
Zero when volume fractions are valid. |
|
One when all CMIM convergence checks pass. |
Nonlinear Convergence Status
The final nonlinear iteration prints CMIM_STOP: cycle iteration
cmim_ok=... all_ok=... at_limit=.... cmim_ok reports CMIM convergence;
all_ok includes all active equations. at_limit is one when
maxIterationsPerTimeStep has been reached.
The same status is available for plotting:
plot_output: nonlinearConverged, nonlinearIterationLimitReached
|
|
Meaning |
|---|---|---|
1 |
0 |
Converged before the iteration limit. |
1 |
1 |
Converged at the iteration limit. |
0 |
1 |
Reached the iteration limit without convergence. |
0 |
0 |
Still iterating; visible with iteration output. |
These fields are spatially uniform. With plot_output_iteration: off
(default), they report the final nonlinear iteration; with on, they
report each written iteration. Diagnostic and plot selections do not change
the convergence criteria or time-step acceptance.