Carries a mechanically transparent (barrier-only) mask along with the oxide it rests on.
More...
|
| | OxidationMaskCarry ()=default |
| | OxidationMaskCarry (SmartPointer< OxidationDeformation< T, D > > oxideMechanics, SmartPointer< Domain< T, D > > maskInterface) |
| Vec3D< T > | getVectorVelocity (const Vec3D< T > &coordinate, int material, const Vec3D< T > &normalVector, unsigned long pointId) final |
| | Like getScalarVelocity, but returns a velocity value for each cartesian direction.
|
| T | getScalarVelocity (const Vec3D< T > &, int, const Vec3D< T > &, unsigned long) final |
| | Should return a scalar value for the velocity at coordinate for a point of material with the given normalVector.
|
| virtual T | getDissipationAlpha (int, int, const Vec3D< T > &) |
| | If lsLocalLaxFriedrichsAnalytical is used as the spatial discretization scheme, this is called to provide the analytical solution for the alpha values, needed for numerical stability.
|
template<class
T, int D>
class viennals::OxidationMaskCarry< T, D >
Carries a mechanically transparent (barrier-only) mask along with the oxide it rests on.
The mask's contact face already gets the right velocity by sampling the oxide field at its own coordinates — that face lies on the oxide. The rest of the mask does not: those points sit off the oxide entirely, where the field is undefined and evaluates to zero. Advecting with the raw field therefore moves the contact face and leaves the rest behind, deforming the mask.
The contact velocity is extended through the mask by relaxation over the mask's OWN points. Interior fills the mask body first, so every point the sweep touches is guaranteed to be defined — no value is ever read from another level set outside its narrow band, which is what made isolated grid columns fall back to a wrong velocity and gouge the oxide.
Each sweep is synchronous and averages over ALL known neighbours, so the result does not depend on visit order and cannot shear where the contact velocity varies laterally. Direction never appears: propagation follows the mask's own connectivity, so this is equally valid for a mask lying flat, one standing against a sidewall, and general 3-D geometry.