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.

Supported flux combinations

inviscidFlux

vofInviscidFlux

Requirements

FOU

FOU, MIG

Closed, periodic, or supported open boundaries.

SOU

SOU, MIG

limiter: barth (or B), vecminLimiter: 0, gradStencil: standard, gradType: standard. Open boundaries require MIG. SOU/SOU can cycle at sharp interfaces.

SLAU, SLAU2

FOU

limiter: zero, slau_reconstruct: 1, slau_SD: 0, slau_hybrid: off. Closed or periodic boundaries; no surface tension.

AUSMUP

FOU

limiter: zero, Cartesian geometry, and MUSCL pressure reconstruction (default). Closed or periodic boundaries; no surface tension.

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.

Composition limiter options

Option

Default

Values and meaning

cmim_limiter

barth

barth/B, venkatakrishnan/V, mlp, or mlp_pw.

cmim_limiter_K

1.0

Finite, nonnegative smoothing parameter for non-Barth choices.

cmim_mlp_mode

0

For mlp_pw: 0 pressure weighted, 1 strict, 2 weak.

AUSMUP accepts an optional cmimAUSMFluxParameters block:

cmimAUSMFluxParameters: <Kp=0.25,Ku=0.75>
Options inside cmimAUSMFluxParameters

Option

Default

Allowed range

Kp, Ku, sigma

0.25, 0.75, 1.0

Finite values in [0,1].

pressureMachCutoff

0.1

Finite value in (0,1].

velocityMachCutoff

1e-13

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>
Options inside vofEquationOptions

Option

Default

Values and meaning

materialAdvection

implicit

implicit or standard: different linearizations of the same converged flux. Material FOU uses donor advection in either mode.

conservativeFluxRescale

off

on limits face-flux corrections; requires material SOU or MIG. Does not guarantee positivity with all sources or diffusion settings.

requireConvergence

off

on aborts if CMIM convergence checks fail at maxIterationsPerTimeStep; off warns. No automatic retry.

updateTolerance

1e-6

Volume-fraction update tolerance, including post-pressure material appearance.

materialVolumeTolerance

1e-6

Material-volume residual tolerance.

continuityTolerance

1e-6

Material continuity residual tolerance.

admissibilityTolerance

1e-6

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.

Options inside materialSpeciesEquationOptions

Option

Default

Values and meaning

linearSolver

SGS

Only SGS is supported.

relaxationFactor

0.5

Finite value in (0,1].

maxIterations

5

Positive integer; maximum linear-solver iterations.

updateTolerance

1e-6

Finite, nonnegative relative species-density update tolerance.

negativeDensityTolerance

1e-16 kg/m³

Species densities from minus this tolerance up to zero are set to zero; more negative values abort. Zero rejects every negative density.

materialDensityCutoff

1e-20 kg/m³

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:

CMIM spherical region with cell-average volume fractions
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)]
>
Geometric Initialization Options

Option

Default

Meaning

cmimVOFInitialization

cellCenter

cellCenter samples cell centers; geometric averages regional material volume fractions over each cell.

cmimGeometricVOFRefinement

4

Maximum subdivision depth: 0–8, or 0–5 for three or more materials in 3-D.

cmimGeometricVOFTolerance

1e-3

Absolute volume-fraction tolerance for two-material 3-D initialization: 1e-8 to 0.1. Excludes surface-tessellation error.

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 extruded inSurface and inGeometry boundaries.

  • In 3-D, cell faces must be planar. Supported regions are inSphere, inBox, leftPlane, inSurface, and inGeometry. 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.

Options inside materialModel(...)

Option

Default

Values and meaning

diffusion_model

none

none disables molecular diffusion; constant uses diffusivity.

diffusivity

Unset

Positive molecular diffusivity in m²/s. Required with diffusion_model=constant; omit otherwise.

turbulent_diffusion_model

schmidt

schmidt or none. Selects turbulent mixing for a multispecies material.

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

Curvature methods

vof_curvature_type

Method

direct (default)

Gradient interpolation and face-normal divergence.

faceDivergence

Optional face-based color smoothing, then face-normal divergence.

nodalDivergence

Optional nodal color smoothing, then curvature from nodal normals.

celeste

Taylor-fit derivatives and curvature averaging; requires gradStencil: full.

paraboloid2019

Geometric reconstruction and integrated paraboloid fit. Requires gradStencil: full, or standard with use_cellStencil: 1.

analytical

Prescribed constant kappaAnalytical (default zero), in inverse metres.

rlsg

Curvature from an auxiliary level-set grid; requires loadModule: rlsg.

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:

Wall treatments

Value

Effect

boundary (default)

Correct boundary normals.

cellGradient

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.

Thermal sampling and redistribution options

Option

Meaning and limits

thermalBandLayers

Pure-phase sample search depth: integer 1–64 cell layers; default 8.

interfaceValue

Required interface donor volume fraction: 0.5.

pureMaterialCutoff

Required pure-phase fraction tolerance: strictly between 0 and 0.5.

smoothingLength

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=none and, 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.

Additional required parameters

Model

Parameters

Units and limits

zwart

bubbleRadius, nucleationVolumeFraction

Positive radius in metres; fraction strictly between zero and one.

merkle

referenceLength, referenceVelocity, referenceDensity

Positive values in m, m/s, and kg/m³. Unit syntax for density is kg/m/m/m.

schnerrSauer

bubbleNumberDensity, nucleationRadius

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:

Material output families

Selector

Output names

Meaning

materialMassFraction

materialMassFraction_<material>

Material mass divided by mixture mass.

materialPartialDensity

materialPartialDensity_<material>

Material mass per mixture volume, in kg/m³.

materialDensity

materialDensity_<material>

Intrinsic material density, in kg/m³; zero where absent.

materialComposition

materialComposition_<material>::<species>

Species mass fraction within the material; zero where absent.

materialSpeciesRhoD

materialSpeciesRhoD_<material>::<species>

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:

RLSG output selectors

Selector

Quantity

rlsgGrid

Auxiliary mesh only.

rlsgLevelSet

Signed distance, in metres; zero defines the interface.

rlsgSeed

Initial distance seed, in metres.

rlsgKappa

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:

Per-channel transfer rates

Column

Meaning

Units

channelSignedRate[name]

Net transfer rate

kg/s

channelVaporizationRate[name]

Evaporation rate (nonnegative)

kg/s

channelCondensationRate[name]

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.

Surface-transfer diagnostics

Columns

Meaning

Units

contourArea

Interface area

m²

donorHeatRate, receiverHeatRate, stefanHeatRate

Heat supplied by each side and their sum

W

sharpTransferRate, smoothedTransferRate, surfaceTransferRate

Net transfer before smoothing, after normalization and in the source

kg/s

evaporationRate, condensationRate

Nonnegative gross rates; net transfer may vanish

kg/s

redistributedDonorRate, redistributedReceiverRate

Integrated material sources; their sum should be zero

kg/s

thermodynamicEnergyResidual

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>
Diagnostic selectors

Selector

Output

Contents

cmimConvergence

Console RCMIM: lines

Normalized convergence checks, listed below.

cmimInvariants

cmimInvariants.dat

Material presence, volume-fraction bounds, and composition changes.

cmimPressure

cmimPressure.dat

Pressure-equation residuals, volume balance, and continuity errors.

cmimTransport

cmimTransportResidual.dat

Material and species transport residuals.

cmimCapillary

capillaryDiagnostics.dat

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.

RCMIM fields

Field

Meaning

zEq

Largest species equation residual relative to its convergence limit.

volume, continuity

Volume-balance and continuity errors relative to their tolerances.

zUpdate, alphaUpdate

Species and volume-fraction changes relative to their limits.

appearance

Newly appearing material update relative to its limit.

alphaBound, alphaSum

Volume-fraction bound and sum-to-one errors relative to their limits.

alphaInvalid

Zero when volume fractions are valid.

cmim_ok

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
Nonlinear termination status

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.