|
flow 1.3.0
Kokkos cut-cell IBM incompressible Navier-Stokes solver + pnm pore extraction
|
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 | |
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.
|
inline |
Definition at line 237 of file wetting_dynamic.hpp.
References dynamic, and hysteresis.
Referenced by peclet::flow::Solver< Grid >::applyContactAngle(), peclet::flow::Solver< Grid >::contactAngleDiagnostics(), peclet::flow::Solver< Grid >::getVofDynamicField(), and peclet::flow::Solver< Grid >::vofFillGhosts().
|
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.
Referenced by impose().
|
inline |
|
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().
|
inline |
the angle written this fill (rad)
Definition at line 249 of file wetting_dynamic.hpp.
Referenced by peclet::flow::Solver< Grid >::getVofDynamicField().
|
inline |
the measured apparent angle (rad)
Definition at line 250 of file wetting_dynamic.hpp.
Referenced by peclet::flow::Solver< Grid >::getVofDynamicField().
|
inline |
the SMOOTHED U_cl
Definition at line 251 of file wetting_dynamic.hpp.
Referenced by peclet::flow::Solver< Grid >::getVofDynamicField().
|
inline |
Ca_cl.
Definition at line 252 of file wetting_dynamic.hpp.
Referenced by peclet::flow::Solver< Grid >::getVofDynamicField().
|
inline |
VofDynamicState, as a double
Definition at line 253 of file wetting_dynamic.hpp.
Referenced by peclet::flow::Solver< Grid >::getVofDynamicField().
|
inline |
cell-centre velocity (the solver fills it)
Definition at line 254 of file wetting_dynamic.hpp.
Referenced by peclet::flow::Solver< Grid >::buildVofCellVelocity().
Definition at line 256 of file wetting_dynamic.hpp.
Referenced by peclet::flow::Solver< Grid >::applyContactAngle().
|
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().
|
inline |
Pass B — the 3-point in-wall smoothing of U_cl, the selector and the write of theta into adv.contactAngle().
Call AFTER measure() and after the caller has exchanged uclRaw() and valid().
Definition at line 406 of file wetting_dynamic.hpp.
References peclet::flow::vof::WyAdvector::cellKind(), peclet::flow::vof::WyAdvector::contactAngle(), peclet::flow::vof::WyAdvector::extent(), peclet::flow::vof::WyAdvector::ghost(), hysteresis, peclet::flow::vof::WyAdvector::inner(), peclet::flow::vof::kVofDynNone, peclet::flow::L3(), logRatio(), muLiquid, sigma, smooth, thetaA, thetaMax, thetaMin, thetaR, and peclet::flow::vof::vofDynamicContactAngle().
Referenced by peclet::flow::Solver< Grid >::vofFillGhosts().
|
inline |
Definition at line 466 of file wetting_dynamic.hpp.
Referenced by peclet::flow::Solver< Grid >::vofFillGhosts().
|
inline |
Definition at line 467 of file wetting_dynamic.hpp.
Referenced by peclet::flow::Solver< Grid >::vofFillGhosts().
|
inline |
Definition at line 476 of file wetting_dynamic.hpp.
References allocated(), peclet::flow::vof::WyAdvector::cellKind(), peclet::flow::vof::WyAdvector::extent(), peclet::flow::vof::WyAdvector::ghost(), peclet::flow::vof::WyAdvector::inner(), peclet::flow::vof::kVofDynStateCount, and peclet::flow::L3().
Referenced by peclet::flow::Solver< Grid >::contactAngleDiagnostics().
the Cox-Voinov correction is configured
Definition at line 223 of file wetting_dynamic.hpp.
Referenced by active(), peclet::flow::Solver< Grid >::contactAngleDynamic(), logRatio(), peclet::flow::Solver< Grid >::setContactAngleDynamic(), peclet::flow::Solver< Grid >::setContactAngleDynamicOff(), peclet::flow::Solver< Grid >::setWallSlipLength(), and peclet::flow::Solver< Grid >::vofFillGhosts().
theta_a / theta_r are configured
Definition at line 224 of file wetting_dynamic.hpp.
Referenced by active(), peclet::flow::Solver< Grid >::contactAngleHysteresis(), impose(), peclet::flow::Solver< Grid >::setContactAngleDynamicOff(), and peclet::flow::Solver< Grid >::setContactAngleHysteresis().
| double peclet::flow::vof::VofDynamicWetting::thetaA = 0.0 |
Definition at line 225 of file wetting_dynamic.hpp.
Referenced by impose(), and peclet::flow::Solver< Grid >::setContactAngleHysteresis().
| double peclet::flow::vof::VofDynamicWetting::thetaR = 0.0 |
Definition at line 225 of file wetting_dynamic.hpp.
Referenced by impose(), and peclet::flow::Solver< Grid >::setContactAngleHysteresis().
| 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().
| double peclet::flow::vof::VofDynamicWetting::slip = 0.1 |
lambda, in CELLS (Delta = 1 cell), so logRatio = -ln(slip)
Definition at line 228 of file wetting_dynamic.hpp.
Referenced by peclet::flow::Solver< Grid >::contactAngleSlip(), logRatio(), peclet::flow::Solver< Grid >::setContactAngleDynamic(), and peclet::flow::Solver< Grid >::setWallSlipLength().
| 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().
| 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().
| double peclet::flow::vof::VofDynamicWetting::thetaMin = 1.0 * 3.14159265358979323846 / 180.0 |
Definition at line 231 of file wetting_dynamic.hpp.
Referenced by impose(), and peclet::flow::Solver< Grid >::setContactAngleClamp().
| double peclet::flow::vof::VofDynamicWetting::thetaMax = 179.0 * 3.14159265358979323846 / 180.0 |
Definition at line 232 of file wetting_dynamic.hpp.
Referenced by impose(), and peclet::flow::Solver< Grid >::setContactAngleClamp().
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().
| 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().
| 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().