OOFEM 3.0
Loading...
Searching...
No Matches
oofem::LevelSetPCS Class Reference

#include <levelsetpcs.h>

Inheritance diagram for oofem::LevelSetPCS:
Collaboration diagram for oofem::LevelSetPCS:

Public Member Functions

 LevelSetPCS (int n, Domain *d)
void initialize () override
void updatePosition (TimeStep *tStep) override
void updateYourself (TimeStep *tStep) override
double computeCriticalTimeStep (TimeStep *tStep) override
void initializeFrom (InputRecord &ir) override
void giveInputRecord (DynamicInputRecord &input) override
void reinitialization (TimeStep *tStep)
void giveMaterialMixtureAt (FloatArray &answer, FloatArray &position) override
void giveElementMaterialMixture (FloatArray &answer, int ielem) override
double giveNodalScalarRepresentation (int i) override
double giveLevelSetDofManValue (int i)
 Returns level set value in specific node.
const char * giveClassName () const override
void saveContext (DataStream &stream, ContextMode mode) override
void restoreContext (DataStream &stream, ContextMode mode) override
Public Member Functions inherited from oofem::MaterialInterface
 MaterialInterface (int n, Domain *d)
const char * giveInputRecordName () const override
Public Member Functions inherited from oofem::FEMComponent
 FEMComponent (int n, Domain *d)
virtual ~FEMComponent ()=default
 Virtual destructor.
DomaingiveDomain () const
virtual void setDomain (Domain *d)
int giveNumber () const
void setNumber (int num)
virtual void updateLocalNumbering (EntityRenumberingFunctor &f)
virtual void initializeFrom (InputRecord &ir, int priority)
virtual void initializeFinish ()
virtual void postInitialize ()
 Performs post initialization steps. Called after all components are created and initialized.
virtual int checkConsistency ()
virtual void printOutputAt (FILE *file, TimeStep *tStep)
virtual void printYourself ()
 Prints receiver state on stdout. Useful for debugging.
virtual InterfacegiveInterface (InterfaceType t)
std::string errorInfo (const char *func) const
 Returns string for prepending output (used by error reporting macros).

Protected Types

enum  PCSEqType { PCS_levelSetUpdate , PCS_levelSetRedistance }

Protected Member Functions

void pcs_stage1 (FloatArray &ls, FloatArray &fs, FloatArray &w, TimeStep *tStep, PCSEqType t)
double evalElemFContribution (PCSEqType t, int ie, TimeStep *tStep)
double evalElemfContribution (PCSEqType t, int ie, TimeStep *tStep)
void redistance (TimeStep *tStep)
Fast marching related services
void FMMReinitialization (FloatArray &ls)

Protected Attributes

FloatArray levelSetValues
 Array used to store value of level set function for each node.
FloatArray previousLevelSetValues
Polygon initialRefMatVol
bool initialRefMatFlag
int ci1 =1
 Indexes of nodal coordinates used to init levelset using initialRefMatVol.
int ci2 =2
int reinit_alg =1
 Type of reinitialization algorithm to use.
double reinit_dt =0.0
 Time step used in reinitialization of LS (if apply).
bool reinit_dt_flag
double reinit_err =1.e-6
 Reinitialization error limit.
int nsd =2
 number of spatial dimensions.
long int levelSetVersion
 Level set values version.
std ::vector< FloatArrayelemVof
long int elemVofLevelSetVersion =0
Protected Attributes inherited from oofem::FEMComponent
int number
 Component number.
Domaindomain
 Link to domain object, useful for communicating with other FEM components.

Detailed Description

Abstract base class representing Level Set representation of material interfaces. The solution algorithm is based on positive coefficient scheme. This algorithm is limited to d-dimensional simplexes with linear approximation. Its typical use to model moving interface (such as free surface) in a fixed-grid methods (as typically used in CFD). The basic tasks are representation of interface and its updating.

Definition at line 114 of file levelsetpcs.h.

Member Enumeration Documentation

◆ PCSEqType

Enumerator
PCS_levelSetUpdate 
PCS_levelSetRedistance 

Definition at line 119 of file levelsetpcs.h.

Constructor & Destructor Documentation

◆ LevelSetPCS()

oofem::LevelSetPCS::LevelSetPCS ( int n,
Domain * d )
inline

Constructor. Takes two two arguments. Creates a MaterialInterface instance with given number and belonging to given domain.

Parameters
nComponent number in particular domain. For instance, can represent node number in particular domain.
dDomain to which component belongs to.

Definition at line 149 of file levelsetpcs.h.

References initialRefMatFlag, levelSetVersion, oofem::MaterialInterface::MaterialInterface(), and reinit_dt_flag.

Member Function Documentation

◆ computeCriticalTimeStep()

double oofem::LevelSetPCS::computeCriticalTimeStep ( TimeStep * tStep)
overridevirtual

Computes critical time step induced by receiver integration algorithm

Implements oofem::MaterialInterface.

Definition at line 245 of file levelsetpcs.C.

◆ evalElemFContribution()

double oofem::LevelSetPCS::evalElemFContribution ( PCSEqType t,
int ie,
TimeStep * tStep )
protected

◆ evalElemfContribution()

double oofem::LevelSetPCS::evalElemfContribution ( PCSEqType t,
int ie,
TimeStep * tStep )
protected

◆ FMMReinitialization()

void oofem::LevelSetPCS::FMMReinitialization ( FloatArray & ls)
protected

◆ giveClassName()

const char * oofem::LevelSetPCS::giveClassName ( ) const
inlineoverridevirtual
Returns
Class name of the receiver.

Implements oofem::FEMComponent.

Definition at line 171 of file levelsetpcs.h.

◆ giveElementMaterialMixture()

void oofem::LevelSetPCS::giveElementMaterialMixture ( FloatArray & answer,
int ielem )
overridevirtual

◆ giveInputRecord()

void oofem::LevelSetPCS::giveInputRecord ( DynamicInputRecord & input)
overridevirtual

Setups the input record string of receiver.

Parameters
inputDynamic input record to be filled by receiver.

Reimplemented from oofem::FEMComponent.

Definition at line 121 of file levelsetpcs.C.

References OOFEM_ERROR.

◆ giveLevelSetDofManValue()

◆ giveMaterialMixtureAt()

void oofem::LevelSetPCS::giveMaterialMixtureAt ( FloatArray & answer,
FloatArray & position )
overridevirtual

Returns relative material contents at given point. Usually only one material is presented in given point, but some smoothing may be applied close to material interface to make transition smooth

Implements oofem::MaterialInterface.

Definition at line 252 of file levelsetpcs.C.

References oofem::FloatArray::at(), oofem::Element::computeLocalCoordinates(), oofem::FEMComponent::domain, oofem::Element::giveDofManagerNumber(), oofem::FEMComponent::giveInterface(), oofem::Element::giveNumberOfNodes(), oofem::LevelSetPCSElementInterfaceType, levelSetValues, N, OOFEM_ERROR, and oofem::FloatArray::resize().

◆ giveNodalScalarRepresentation()

double oofem::LevelSetPCS::giveNodalScalarRepresentation ( int )
inlineoverridevirtual

Returns scalar value representation of material Interface at given point. For visualization

Implements oofem::MaterialInterface.

Definition at line 165 of file levelsetpcs.h.

References levelSetValues.

◆ initialize()

void oofem::LevelSetPCS::initialize ( )
overridevirtual

◆ initializeFrom()

void oofem::LevelSetPCS::initializeFrom ( InputRecord & ir)
overridevirtual

Initializes receiver according to object description stored in input record. This function is called immediately after creating object using constructor. Input record can be imagined as data record in component database belonging to receiver. Receiver may use value-name extracting functions to extract particular field from record. Note that initializeFrom may be called mutiple times.

See also
IR_GIVE_FIELD
IR_GIVE_OPTIONAL_FIELD
Parameters
irInput record to initialize from.
priorityPriority of the input record. This is used to determine the order of initialization

Reimplemented from oofem::FEMComponent.

Definition at line 75 of file levelsetpcs.C.

References _IFT_LevelSetPCS_ci1, _IFT_LevelSetPCS_ci2, _IFT_LevelSetPCS_levelSetValues, _IFT_LevelSetPCS_nsd, _IFT_LevelSetPCS_refmatpoly_x, _IFT_LevelSetPCS_refmatpoly_y, _IFT_LevelSetPCS_reinit_alg, _IFT_LevelSetPCS_reinit_dt, _IFT_LevelSetPCS_reinit_err, oofem::FloatArray::at(), ci1, ci2, oofem::FloatArray::giveSize(), initialRefMatFlag, initialRefMatVol, IR_GIVE_OPTIONAL_FIELD, nsd, previousLevelSetValues, reinit_alg, reinit_dt, reinit_dt_flag, reinit_err, and oofem::Vertex::setCoords().

◆ pcs_stage1()

◆ redistance()

void oofem::LevelSetPCS::redistance ( TimeStep * tStep)
protected

◆ reinitialization()

void oofem::LevelSetPCS::reinitialization ( TimeStep * tStep)

Definition at line 329 of file levelsetpcs.C.

References FMMReinitialization(), levelSetValues, OOFEM_ERROR, redistance(), and reinit_alg.

Referenced by updatePosition().

◆ restoreContext()

void oofem::LevelSetPCS::restoreContext ( DataStream & stream,
ContextMode mode )
overridevirtual

Restores the receiver state previously written in stream.

See also
saveContext
Parameters
streamInput stream.
modeDetermines amount of info available in stream (state, definition, ...).
Exceptions
throwsan ContextIOERR exception if error encountered.

Reimplemented from oofem::FEMComponent.

Definition at line 635 of file levelsetpcs.C.

References oofem::CIO_IOERR, oofem::CIO_OK, elemVofLevelSetVersion, levelSetValues, levelSetVersion, previousLevelSetValues, oofem::DataStream::read(), and THROW_CIOERR.

◆ saveContext()

void oofem::LevelSetPCS::saveContext ( DataStream & stream,
ContextMode mode )
overridevirtual

Stores receiver state to output stream.

Parameters
streamOutput stream.
modeDetermines amount of info required in stream (state, definition, ...).
Exceptions
throwsan ContextIOERR exception if error encountered.

Reimplemented from oofem::FEMComponent.

Definition at line 620 of file levelsetpcs.C.

References oofem::CIO_IOERR, oofem::CIO_OK, levelSetValues, levelSetVersion, THROW_CIOERR, and oofem::DataStream::write().

◆ updatePosition()

◆ updateYourself()

void oofem::LevelSetPCS::updateYourself ( TimeStep * tStep)
inlineoverridevirtual

Updates element state after equilibrium in time step has been reached. All temporary history variables, which now describe equilibrium state should be copied into equilibrium ones. The existing internal state is used for update.

Implements oofem::MaterialInterface.

Definition at line 157 of file levelsetpcs.h.

References levelSetValues, and previousLevelSetValues.

Member Data Documentation

◆ ci1

int oofem::LevelSetPCS::ci1 =1
protected

Indexes of nodal coordinates used to init levelset using initialRefMatVol.

Definition at line 123 of file levelsetpcs.h.

Referenced by initialize(), and initializeFrom().

◆ ci2

int oofem::LevelSetPCS::ci2 =2
protected

Definition at line 123 of file levelsetpcs.h.

Referenced by initialize(), and initializeFrom().

◆ elemVof

std :: vector< FloatArray > oofem::LevelSetPCS::elemVof
protected

Definition at line 138 of file levelsetpcs.h.

Referenced by giveElementMaterialMixture().

◆ elemVofLevelSetVersion

long int oofem::LevelSetPCS::elemVofLevelSetVersion =0
protected

Definition at line 139 of file levelsetpcs.h.

Referenced by giveElementMaterialMixture(), and restoreContext().

◆ initialRefMatFlag

bool oofem::LevelSetPCS::initialRefMatFlag
protected

Definition at line 121 of file levelsetpcs.h.

Referenced by initialize(), initializeFrom(), and LevelSetPCS().

◆ initialRefMatVol

Polygon oofem::LevelSetPCS::initialRefMatVol
protected

Definition at line 120 of file levelsetpcs.h.

Referenced by initialize(), and initializeFrom().

◆ levelSetValues

FloatArray oofem::LevelSetPCS::levelSetValues
protected

◆ levelSetVersion

long int oofem::LevelSetPCS::levelSetVersion
protected

Level set values version.

Definition at line 135 of file levelsetpcs.h.

Referenced by giveElementMaterialMixture(), initialize(), LevelSetPCS(), restoreContext(), saveContext(), and updatePosition().

◆ nsd

int oofem::LevelSetPCS::nsd =2
protected

number of spatial dimensions.

Definition at line 133 of file levelsetpcs.h.

Referenced by initializeFrom(), pcs_stage1(), and updatePosition().

◆ previousLevelSetValues

FloatArray oofem::LevelSetPCS::previousLevelSetValues
protected

◆ reinit_alg

int oofem::LevelSetPCS::reinit_alg =1
protected

Type of reinitialization algorithm to use.

Definition at line 126 of file levelsetpcs.h.

Referenced by initializeFrom(), and reinitialization().

◆ reinit_dt

double oofem::LevelSetPCS::reinit_dt =0.0
protected

Time step used in reinitialization of LS (if apply).

Definition at line 128 of file levelsetpcs.h.

Referenced by initializeFrom(), and redistance().

◆ reinit_dt_flag

bool oofem::LevelSetPCS::reinit_dt_flag
protected

Definition at line 129 of file levelsetpcs.h.

Referenced by initializeFrom(), LevelSetPCS(), and redistance().

◆ reinit_err

double oofem::LevelSetPCS::reinit_err =1.e-6
protected

Reinitialization error limit.

Definition at line 131 of file levelsetpcs.h.

Referenced by initializeFrom(), and redistance().


The documentation for this class was generated from the following files:

This page is part of the OOFEM-3.0 documentation. Copyright Copyright (C) 1994-2025 Borek Patzak Bořek Patzák
Project e-mail: oofem@fsv.cvut.cz
Generated at for OOFEM by doxygen 1.15.0 written by Dimitri van Heesch, © 1997-2011