Vector velocity field for a compliant oxidation mask driven by solved oxide traction. A Cartesian viscous elasticity solve is built inside the mask level set, oxide-contact faces use a traction ghost velocity, and the resulting vector field moves the entire mask body. Repeated applications use Aitken relaxation on the contact-interface velocity update.
More...
|
| | OxidationMaskBending ()=default |
| | OxidationMaskBending (SmartPointer< OxidationDeformation< T, D > > passedDeformation, OxidationMaskParameters passedParameters={}) |
| | OxidationMaskBending (SmartPointer< OxidationDeformation< T, D > > passedDeformation, SmartPointer< Domain< T, D > > passedMaskInterface, OxidationMaskParameters passedParameters={}, int passedMaskSign=1) |
| | ~OxidationMaskBending ()=default |
| void | setMaskInterface (SmartPointer< Domain< T, D > > passedMaskInterface, int passedMaskSign=1) |
| void | setAmbientInterface (SmartPointer< Domain< T, D > > passedAmbientInterface, int passedAmbientSign=-1) |
| | Provide the SiO₂/ambient interface so that contact faces can be detected on any mask face that borders the oxide, not only the bottom face. ambientSign follows the same convention as OxidationDeformation: ambientSign * φ_ambient >= 0 selects nodes inside the oxide band.
|
| void | setParameters (OxidationMaskParameters passedParameters) |
| void | setSolveBounds (const IndexType &passedMinIndex, const IndexType &passedMaxIndex) |
| void | clearSolveBounds () |
| OxidationMaskParameters | getParameters () const |
| unsigned | getIterations () const |
| T | getResidual () const |
| std::size_t | getNumberOfSolutionNodes () const |
| std::size_t | getNumberOfContactNodes () const |
| std::size_t | getNumberOfFixedNodes () const |
| T | getLastApplyVelocityChange () const |
| T | getLastApplyAbsoluteVelocityChange () const |
| void | apply () |
| void | finalizeElasticAdvectionVelocity () |
| Vec3D< T > | getVectorVelocity (const Vec3D< T > &coordinate, int material, const Vec3D< T > &, unsigned long) final |
| | Like getScalarVelocity, but returns a velocity value for each cartesian direction.
|
| T | getDissipationAlpha (int direction, int, const Vec3D< T > &) final |
| | 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.
|
| void | writeFieldsToLevelSet () |
| | Write mask bending velocity into maskInterface->getPointData() so that lsInterior + lsAdvect carry it across timestep boundaries.
|
| virtual T | getScalarVelocity (const Vec3D< T > &, int, const Vec3D< T > &, unsigned long) |
| | Should return a scalar value for the velocity at coordinate for a point of material with the given normalVector.
|
|
| bool | crosses (T a, T b) const |
| T | valueAt (ConstSparseIterator &it, const IndexType &index) const |
| bool | inBounds (const IndexType &index) const |
| void | initNodeLookup () |
| std::size_t | lookupNode (const IndexType &index) const |
| std::size_t | linearIndex (const IndexType &index) const |
| bool | increment (IndexType &index) const |
| std::size_t | findNearbyNode (const IndexType &index) const |
| bool | initializeGridFromInterfaces (SmartPointer< Domain< T, D > > reactionInterface, SmartPointer< Domain< T, D > > ambientInterface, SmartPointer< Domain< T, D > > maskInterface, bool useRequestedBounds, const IndexType &requestedMinIndex, const IndexType &requestedMaxIndex, std::size_t maxGridPoints, const std::string &solverName) |
| bool | initializeGridFromMask (SmartPointer< Domain< T, D > > maskInterface, bool useRequestedBounds, const IndexType &requestedMinIndex, const IndexType &requestedMaxIndex, std::size_t maxGridPoints, const std::string &solverName) |
template<class
T, int D>
class viennals::OxidationMaskBending< T, D >
Vector velocity field for a compliant oxidation mask driven by solved oxide traction. A Cartesian viscous elasticity solve is built inside the mask level set, oxide-contact faces use a traction ghost velocity, and the resulting vector field moves the entire mask body. Repeated applications use Aitken relaxation on the contact-interface velocity update.