CMIM Curvature and Surface Tension

The cmim_avof module computes curvature for one oriented material 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 providers

vof_curvature_type

Method

direct (default)

Existing 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.

The two differential methods accept vof_curvature_smoothing_passes, a nonnegative integer with default 2. Zero passes preserves the input color. Smoothing affects a separate field used to calculate curvature; it does not change the transported volume fractions. These are CMIM discretizations, not options that reproduce every internal choice of a commercial solver.

Their scope is fixed Cartesian-coordinate 2-D and 3-D meshes with symmetry, no-slip or fixed-pressure outlet boundaries. The outlet treatment extrapolates the curvature geometry from adjacent cells; checks cover outlets separated from the interface by pure fluid. Interface passage through an outlet, mixed-phase backflow and wetting at an outlet corner are not qualified. The configuration checks reject other boundary types, moving meshes, axisymmetry and dynamic angles. Curvature accuracy and coupled capillary stability remain under qualification; method selection does not establish mesh convergence.

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)>

Each curvature method enforces the angle within its own reconstruction. The differential methods correct the boundary normal used in the divergence. They also accept an optional correction of the adjacent cell gradients:

vof_curvature_type: nodalDivergence
vof_contact_angle_model: static
vof_curvature_wall_treatment: cellGradient

cellGradient applies the angle before gradients are interpolated to vertices or faces. It works with nodalDivergence and faceDivergence. The default boundary retains boundary-only enforcement. Gradient magnitudes and transported fractions remain unchanged.

For cells touching several walls, the correction uses all prescribed angle conditions together. If they cannot define a compatible unit normal, or if the gradient provides no needed tangential direction, the cell keeps its original gradient while each boundary face retains its angle condition. This numerical fallback does not model contact-line pinning at corners.

The geometric method supports static wall contact only in fixed 2-D geometry. The existing direct method also provides the dynamic model; selecting that model does not enable dynamic contact in the other methods.

Verification

The companion stream_cases case 111_differential_curvature compares the production methods against independent geometric fixtures. Case 103_capillary_startup accepts either new selection through --curvature and the smoothing count through --smoothing-passes. Use --wall-treatment cellGradient for the corrected-wall comparison and --grid to select the same mesh in both runs. Its computed-curvature profile checks nonlinear convergence and reports curvature error and spurious velocity separately.