flow 1.3.0
Kokkos cut-cell IBM incompressible Navier-Stokes solver + pnm pore extraction
Loading...
Searching...
No Matches
peclet::flow::vof::VofDynamicWetting Struct Reference

The driver: produces WyAdvector::contactAngle() from the current colour, geometry, wall SDF, fluid-only normals and cell-centre velocity, once per band fill. More...

#include <wetting_dynamic.hpp>

Classes

struct  Census
 Census over the INNER region: cells per state, mean imposed / apparent angle (degrees) over the contact cells, and max |Ca_cl|. More...
 

Public Member Functions

bool active () const
 
double logRatio () const
 ln(Delta/lambda) at Delta = 1 cell.
 
bool allocated () const
 
SField base () const
 The STATIC per-cell base angle (radians) the selector starts from.
 
SField imposed () const
 the angle written this fill (rad)
 
SField apparent () const
 the measured apparent angle (rad)
 
SField speed () const
 the SMOOTHED U_cl
 
SField capillary () const
 Ca_cl.
 
SField stateField () const
 VofDynamicState, as a double
 
SField cellVel (int d) const
 cell-centre velocity (the solver fills it)
 
void allocate (long len)
 
void measure (const WyAdvector &adv)
 Pass A — the measurement.
 
void impose (const WyAdvector &adv)
 Pass B — the 3-point in-wall smoothing of U_cl, the selector and the write of theta into adv.contactAngle().
 
SField uclRaw () const
 
SField valid () const
 
Census census (const WyAdvector &adv) const
 

Public Attributes

bool dynamic = false
 the Cox-Voinov correction is configured
 
bool hysteresis = false
 theta_a / theta_r are configured
 
double thetaA = 0.0
 
double thetaR = 0.0
 
VofMetric metric
 The anisotropic cell metric (Phase 3, V4.3); {1,1,1} == the pre-Phase-3 arithmetic.
 
double slip = 0.1
 lambda, in CELLS (Delta = 1 cell), so logRatio = -ln(slip)
 
double muLiquid = 0.0
 the LIQUID dynamic viscosity used in Ca_cl
 
double sigma = 0.0
 the surface tension used in Ca_cl (the solver resolves it)
 
double thetaMin = 1.0 * 3.14159265358979323846 / 180.0
 
double thetaMax = 179.0 * 3.14159265358979323846 / 180.0
 
bool smooth = true
 the 3-point in-wall mean of U_cl (ablation)
 
double pureEps = 1e-8
 a donor this close to 0/1 carries no interface
 
double tanEps = 1e-6
 below this the interface is parallel to the wall
 

Detailed Description

The driver: produces WyAdvector::contactAngle() from the current colour, geometry, wall SDF, fluid-only normals and cell-centre velocity, once per band fill.

Decomposition independence (the same argument as WO-Q finding 5 / WO-S finding 9): pass A runs at ghost depth <= 2, where every field it reads (sdf, colour, kind, fluid-only normal, cell velocity) has already been made owner-correct by the block's own ghost policy; its outputs are then EXCHANGED so that the 3-point smoothing of pass B, which reaches depth 3, reads the owner's values too. That is what makes the imposed angle — and hence the fill — bitwise across np.

Definition at line 221 of file wetting_dynamic.hpp.

Member Function Documentation

◆ active()

◆ logRatio()

double peclet::flow::vof::VofDynamicWetting::logRatio ( ) const
inline

ln(Delta/lambda) at Delta = 1 cell.

On an ANISOTROPIC grid Delta is the cell size ACROSS the wall, which is a per-contact-cell quantity, so impose() adds ln(Delta) there; ln(1.0) == 0.0 exactly and x + 0.0 == x, so the isotropic value is untouched (V4.3).

Definition at line 241 of file wetting_dynamic.hpp.

References dynamic, and slip.

Referenced by impose().

◆ allocated()

◆ base()

SField peclet::flow::vof::VofDynamicWetting::base ( ) const
inline

The STATIC per-cell base angle (radians) the selector starts from.

The solver copies WyAdvector::contactAngle() into it whenever the static angle is (re)set, because the pass OVERWRITES contactAngle() and must not read back its own previous output.

Definition at line 248 of file wetting_dynamic.hpp.

Referenced by peclet::flow::Solver< Grid >::applyContactAngle().

◆ imposed()

SField peclet::flow::vof::VofDynamicWetting::imposed ( ) const
inline

the angle written this fill (rad)

Definition at line 249 of file wetting_dynamic.hpp.

Referenced by peclet::flow::Solver< Grid >::getVofDynamicField().

◆ apparent()

SField peclet::flow::vof::VofDynamicWetting::apparent ( ) const
inline

the measured apparent angle (rad)

Definition at line 250 of file wetting_dynamic.hpp.

Referenced by peclet::flow::Solver< Grid >::getVofDynamicField().

◆ speed()

SField peclet::flow::vof::VofDynamicWetting::speed ( ) const
inline

the SMOOTHED U_cl

Definition at line 251 of file wetting_dynamic.hpp.

Referenced by peclet::flow::Solver< Grid >::getVofDynamicField().

◆ capillary()

SField peclet::flow::vof::VofDynamicWetting::capillary ( ) const
inline

Ca_cl.

Definition at line 252 of file wetting_dynamic.hpp.

Referenced by peclet::flow::Solver< Grid >::getVofDynamicField().

◆ stateField()

SField peclet::flow::vof::VofDynamicWetting::stateField ( ) const
inline

VofDynamicState, as a double

Definition at line 253 of file wetting_dynamic.hpp.

Referenced by peclet::flow::Solver< Grid >::getVofDynamicField().

◆ cellVel()

SField peclet::flow::vof::VofDynamicWetting::cellVel ( int  d) const
inline

cell-centre velocity (the solver fills it)

Definition at line 254 of file wetting_dynamic.hpp.

Referenced by peclet::flow::Solver< Grid >::buildVofCellVelocity().

◆ allocate()

void peclet::flow::vof::VofDynamicWetting::allocate ( long  len)
inline

◆ measure()

void peclet::flow::vof::VofDynamicWetting::measure ( const WyAdvector &  adv)
inline

Pass A — the measurement.

For every SOLID band cell at ghost depth <= 2: the wall normal, the walk to the anchor fluid cell (the SAME walk solidBandFillPassWetting makes, including the mixed-neighbour average where the anchor is pure phase, so the two passes agree cell for cell on which cells are contact cells), the apparent angle, the in-wall direction and the RAW contact-line speed.

Definition at line 278 of file wetting_dynamic.hpp.

References peclet::flow::vof::WyAdvector::cellKind(), cg(), peclet::flow::vof::WyAdvector::colour(), peclet::flow::vof::WyAdvector::extent(), peclet::flow::vof::WyAdvector::ghost(), peclet::flow::vof::WyAdvector::inner(), peclet::flow::L3(), metric, pureEps, tanEps, peclet::flow::vof::vofContactLineSpeed(), peclet::flow::vof::vofWallTangent(), peclet::flow::vof::WyAdvector::wallSdf(), and peclet::flow::vof::WyAdvector::wettingNormal().

Referenced by peclet::flow::Solver< Grid >::vofFillGhosts().

◆ impose()

void peclet::flow::vof::VofDynamicWetting::impose ( const WyAdvector &  adv)
inline

◆ uclRaw()

SField peclet::flow::vof::VofDynamicWetting::uclRaw ( ) const
inline

Definition at line 466 of file wetting_dynamic.hpp.

Referenced by peclet::flow::Solver< Grid >::vofFillGhosts().

◆ valid()

SField peclet::flow::vof::VofDynamicWetting::valid ( ) const
inline

Definition at line 467 of file wetting_dynamic.hpp.

Referenced by peclet::flow::Solver< Grid >::vofFillGhosts().

◆ census()

Member Data Documentation

◆ dynamic

◆ hysteresis

bool peclet::flow::vof::VofDynamicWetting::hysteresis = false

◆ thetaA

double peclet::flow::vof::VofDynamicWetting::thetaA = 0.0

◆ thetaR

double peclet::flow::vof::VofDynamicWetting::thetaR = 0.0

◆ metric

VofMetric peclet::flow::vof::VofDynamicWetting::metric

The anisotropic cell metric (Phase 3, V4.3); {1,1,1} == the pre-Phase-3 arithmetic.

Definition at line 227 of file wetting_dynamic.hpp.

Referenced by measure(), and peclet::flow::Solver< Grid >::pushVofMetric().

◆ slip

double peclet::flow::vof::VofDynamicWetting::slip = 0.1

◆ muLiquid

double peclet::flow::vof::VofDynamicWetting::muLiquid = 0.0

the LIQUID dynamic viscosity used in Ca_cl

Definition at line 229 of file wetting_dynamic.hpp.

Referenced by impose(), and peclet::flow::Solver< Grid >::setContactAngleDynamic().

◆ sigma

double peclet::flow::vof::VofDynamicWetting::sigma = 0.0

the surface tension used in Ca_cl (the solver resolves it)

Definition at line 230 of file wetting_dynamic.hpp.

Referenced by impose(), anderson_synthetic_maps.LinearMapSolver::step(), and peclet::flow::Solver< Grid >::vofFillGhosts().

◆ thetaMin

double peclet::flow::vof::VofDynamicWetting::thetaMin = 1.0 * 3.14159265358979323846 / 180.0

◆ thetaMax

double peclet::flow::vof::VofDynamicWetting::thetaMax = 179.0 * 3.14159265358979323846 / 180.0

◆ smooth

bool peclet::flow::vof::VofDynamicWetting::smooth = true

the 3-point in-wall mean of U_cl (ablation)

Definition at line 233 of file wetting_dynamic.hpp.

Referenced by impose(), and peclet::flow::Solver< Grid >::setContactAngleSmoothing().

◆ pureEps

double peclet::flow::vof::VofDynamicWetting::pureEps = 1e-8

a donor this close to 0/1 carries no interface

Definition at line 234 of file wetting_dynamic.hpp.

Referenced by measure().

◆ tanEps

double peclet::flow::vof::VofDynamicWetting::tanEps = 1e-6

below this the interface is parallel to the wall

Definition at line 235 of file wetting_dynamic.hpp.

Referenced by measure().


The documentation for this struct was generated from the following file: