OOFEM 3.0
Loading...
Searching...
No Matches
oofem::NodalRecoveryModel Class Referenceabstract

#include <nodalrecoverymodel.h>

Inheritance diagram for oofem::NodalRecoveryModel:
Collaboration diagram for oofem::NodalRecoveryModel:

Public Types

enum  NodalRecoveryModelType { NRM_NodalAveraging = 0 , NRM_ZienkiewiczZhu = 1 , NRM_SPR = 2 }

Public Member Functions

 NodalRecoveryModel (Domain *d)
 Constructor.
virtual ~NodalRecoveryModel ()
 Destructor.
void setDomain (Domain *ipDomain)
virtual int recoverValues (Set elementSet, InternalStateType type, TimeStep *tStep)=0
virtual int clear ()
int giveNodalVector (const FloatArray *&ptr, int node)
virtual int giveRegionRecordSize ()
virtual const char * giveClassName () const =0
std::string errorInfo (const char *func)

Protected Member Functions

int initRegionNodeNumbering (IntArray &regionNodalNumbers, int &regionDofMans, Set &region)
int updateRegionRecoveredValues (const IntArray &regionNodalNumbers, int regionValSize, const FloatArray &rhs)

Protected Attributes

std ::map< int, FloatArraynodalValList
InternalStateType valType
 Determines the type of recovered values.
StateCounterType stateCounter
 Time stamp of recovered values.
Domaindomain
CommunicatorBuffcommBuff
 Common Communicator buffer.
ProblemCommunicatorcommunicator
 Communicator.
bool initCommMap
 Communication init flag.

Detailed Description

The base class for all recovery models, which perform nodal averaging or projection processes for internal variables typically stored in integration points.

The recovery can be performed on one region. Region is defined by given set containing elements defing the region volume. The element set can be set up in the input file, or created dynamically. If Averaging over multiple regions is needed, multiple instances of nodal recovery model should be created, o single instance reused.

Definition at line 65 of file nodalrecoverymodel.h.

Member Enumeration Documentation

◆ NodalRecoveryModelType

Enumerator
NRM_NodalAveraging 
NRM_ZienkiewiczZhu 
NRM_SPR 

Definition at line 68 of file nodalrecoverymodel.h.

Constructor & Destructor Documentation

◆ NodalRecoveryModel()

◆ ~NodalRecoveryModel()

oofem::NodalRecoveryModel::~NodalRecoveryModel ( )
virtual

Destructor.

Definition at line 60 of file nodalrecoverymodel.C.

References commBuff, and communicator.

Member Function Documentation

◆ clear()

◆ errorInfo()

std::string oofem::NodalRecoveryModel::errorInfo ( const char * func)
inline

Definition at line 126 of file nodalrecoverymodel.h.

References giveClassName().

◆ giveClassName()

virtual const char * oofem::NodalRecoveryModel::giveClassName ( ) const
pure virtual

◆ giveNodalVector()

int oofem::NodalRecoveryModel::giveNodalVector ( const FloatArray *& ptr,
int node )

Returns vector of recovered values for given node and region.

Parameters
ptrPointer to recovered values at node, NULL if not present.
nodeNode number.
Returns
Nonzero if values are defined, zero otherwise.

Definition at line 77 of file nodalrecoverymodel.C.

References oofem::FloatArray::giveSize(), and nodalValList.

Referenced by oofem::VTKBaseExportModule::getNodalVariableFromIS(), oofem::VTKBaseExportModule::getNodalVariableFromPrimaryField(), oofem::Element::giveInternalStateAtNode(), and recoverValues().

◆ giveRegionRecordSize()

int oofem::NodalRecoveryModel::giveRegionRecordSize ( )
virtual

Returns the region record size. Available after recovery.

Parameters
regVirtual region id.
typeDetermines the type of variable, for which size is requested. Should be same as used for recovering values.

Definition at line 142 of file nodalrecoverymodel.C.

References nodalValList, and OOFEM_WARNING.

Referenced by recoverValues().

◆ initRegionNodeNumbering()

int oofem::NodalRecoveryModel::initRegionNodeNumbering ( IntArray & regionNodalNumbers,
int & regionDofMans,
Set & region )
protected

Determine local region node numbering and determine and check nodal values size.

Parameters
regionNodalNumberson Return array containing for each dofManager its local region number.
regionDofMansOn output total number of region dofMans.
regVirtual region number.
Returns
Nonzero if ok, zero if region has to be skipped.

Definition at line 114 of file nodalrecoverymodel.C.

References oofem::IntArray::at(), domain, oofem::Element::giveDofManager(), oofem::Set::giveElementList(), oofem::FEMComponent::giveNumber(), oofem::Element::giveNumberOfDofManagers(), oofem::IntArray::giveSize(), oofem::IntArray::resize(), and oofem::IntArray::zero().

Referenced by oofem::NodalAveragingRecoveryModel::recoverValues(), oofem::SPRNodalRecoveryModel::recoverValues(), and oofem::ZZNodalRecoveryModel::recoverValues().

◆ recoverValues()

virtual int oofem::NodalRecoveryModel::recoverValues ( Set elementSet,
InternalStateType type,
TimeStep * tStep )
pure virtual

Recovers the nodal values for all regions.

Parameters
typeDetermines the type of internal variable to be recovered.
tStepTime step.

Implemented in oofem::NodalAveragingRecoveryModel, oofem::SPRNodalRecoveryModel, and oofem::ZZNodalRecoveryModel.

References clear(), giveNodalVector(), and giveRegionRecordSize().

Referenced by oofem::ZZErrorEstimator::estimateError(), oofem::VTKBaseExportModule::getNodalVariableFromIS(), and oofem::VTKBaseExportModule::getNodalVariableFromPrimaryField().

◆ setDomain()

void oofem::NodalRecoveryModel::setDomain ( Domain * ipDomain)
inline

Definition at line 97 of file nodalrecoverymodel.h.

References domain.

Referenced by oofem::StructuralFE2MaterialStatus::copyStateVariables().

◆ updateRegionRecoveredValues()

int oofem::NodalRecoveryModel::updateRegionRecoveredValues ( const IntArray & regionNodalNumbers,
int regionValSize,
const FloatArray & rhs )
protected

Update the nodal table according to recovered solution for given region.

Parameters
iregVirtual region number.
regionNodalNumbersArray containing for each dofManager its local region number.
regionValSizeSize of dofMan record.
rhsArray with recovered values.

Definition at line 93 of file nodalrecoverymodel.C.

References oofem::FloatArray::at(), oofem::IntArray::at(), domain, nodalValList, and oofem::FloatArray::resize().

Referenced by oofem::NodalAveragingRecoveryModel::recoverValues(), oofem::SPRNodalRecoveryModel::recoverValues(), and oofem::ZZNodalRecoveryModel::recoverValues().

Member Data Documentation

◆ commBuff

◆ communicator

◆ domain

◆ initCommMap

bool oofem::NodalRecoveryModel::initCommMap
protected

◆ nodalValList

std :: map< int, FloatArray > oofem::NodalRecoveryModel::nodalValList
protected

Map of nodal values. Only nodes for active region are determined and stored. The node number is dictionary key to corresponding values.

Definition at line 75 of file nodalrecoverymodel.h.

Referenced by clear(), giveNodalVector(), giveRegionRecordSize(), NodalRecoveryModel(), and updateRegionRecoveredValues().

◆ stateCounter

StateCounterType oofem::NodalRecoveryModel::stateCounter
protected

◆ valType

InternalStateType oofem::NodalRecoveryModel::valType
protected

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