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

#include <sprnodalrecoverymodel.h>

Inheritance diagram for oofem::SPRNodalRecoveryModel:
Collaboration diagram for oofem::SPRNodalRecoveryModel:

Classes

struct  parallelStruct

Public Member Functions

 SPRNodalRecoveryModel (Domain *d)
 Constructor.
virtual ~SPRNodalRecoveryModel ()
 Destructor.
int recoverValues (Set elementSet, InternalStateType type, TimeStep *tStep) override
const char * giveClassName () const override
Public Member Functions inherited from oofem::NodalRecoveryModel
 NodalRecoveryModel (Domain *d)
 Constructor.
virtual ~NodalRecoveryModel ()
 Destructor.
void setDomain (Domain *ipDomain)
virtual int clear ()
int giveNodalVector (const FloatArray *&ptr, int node)
virtual int giveRegionRecordSize ()
std::string errorInfo (const char *func)

Private Member Functions

void initRegionMap (IntArray &regionMap, IntArray &regionTypes, InternalStateType type)
void determinePatchAssemblyPoints (IntArray &pap, SPRPatchType regType, Set &elemset)
void initPatch (IntArray &patchElems, IntArray &dofManToDetermine, IntArray &pap, int papNumber, Set &elementList)
void computePatch (FloatMatrix &a, IntArray &patchElems, int &regionValSize, SPRPatchType regType, InternalStateType type, TimeStep *tStep)
void determineValuesFromPatch (FloatArray &dofManValues, IntArray &dofManCount, IntArray &regionNodalNumbers, IntArray &dofManToDetermine, FloatMatrix &a, SPRPatchType type)
void computePolynomialTerms (FloatArray &P, const FloatArray &coords, SPRPatchType type)
int giveNumberOfUnknownPolynomialCoefficients (SPRPatchType regType)
SPRPatchType determinePatchType (Set &elementList)
void initCommMaps ()
void exchangeDofManValues (FloatArray &dofManValues, IntArray &dofManPatchCount, IntArray &regionNodalNumbers, int regionValSize)
int packSharedDofManData (parallelStruct *s, ProcessCommunicator &processComm)
int unpackSharedDofManData (parallelStruct *s, ProcessCommunicator &processComm)

Additional Inherited Members

Public Types inherited from oofem::NodalRecoveryModel
enum  NodalRecoveryModelType { NRM_NodalAveraging = 0 , NRM_ZienkiewiczZhu = 1 , NRM_SPR = 2 }
Protected Member Functions inherited from oofem::NodalRecoveryModel
int initRegionNodeNumbering (IntArray &regionNodalNumbers, int &regionDofMans, Set &region)
int updateRegionRecoveredValues (const IntArray &regionNodalNumbers, int regionValSize, const FloatArray &rhs)
Protected Attributes inherited from oofem::NodalRecoveryModel
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 Superconvergent Patch Recovery (SPR) nodal recovery model is based on paper of Zienkiewicz and Zhu "The Superconvergent Patch recovery and Posteriori Error Estimates. Part 1: The Recovery Technique", Int. Journal for Num. Meth in Engng, vol. 33, 1331-1364, 1992. The recovery uses local discrete least square smoothing over an element patch surrounding the particular node considered.

Definition at line 63 of file sprnodalrecoverymodel.h.

Constructor & Destructor Documentation

◆ SPRNodalRecoveryModel()

oofem::SPRNodalRecoveryModel::SPRNodalRecoveryModel ( Domain * d)

Constructor.

Definition at line 56 of file sprnodalrecoverymodel.C.

References oofem::NodalRecoveryModel::NodalRecoveryModel().

◆ ~SPRNodalRecoveryModel()

oofem::SPRNodalRecoveryModel::~SPRNodalRecoveryModel ( )
virtual

Destructor.

Definition at line 59 of file sprnodalrecoverymodel.C.

Member Function Documentation

◆ computePatch()

◆ computePolynomialTerms()

◆ determinePatchAssemblyPoints()

◆ determinePatchType()

◆ determineValuesFromPatch()

void oofem::SPRNodalRecoveryModel::determineValuesFromPatch ( FloatArray & dofManValues,
IntArray & dofManCount,
IntArray & regionNodalNumbers,
IntArray & dofManToDetermine,
FloatMatrix & a,
SPRPatchType type )
private

◆ exchangeDofManValues()

void oofem::SPRNodalRecoveryModel::exchangeDofManValues ( FloatArray & dofManValues,
IntArray & dofManPatchCount,
IntArray & regionNodalNumbers,
int regionValSize )
private

Definition at line 634 of file sprnodalrecoverymodel.C.

References oofem::NodalRecoveryModel::communicator.

Referenced by initRegionMap(), and recoverValues().

◆ giveClassName()

const char * oofem::SPRNodalRecoveryModel::giveClassName ( ) const
inlineoverridevirtual

Implements oofem::NodalRecoveryModel.

Definition at line 87 of file sprnodalrecoverymodel.h.

◆ giveNumberOfUnknownPolynomialCoefficients()

int oofem::SPRNodalRecoveryModel::giveNumberOfUnknownPolynomialCoefficients ( SPRPatchType regType)
private

◆ initCommMaps()

◆ initPatch()

◆ initRegionMap()

void oofem::SPRNodalRecoveryModel::initRegionMap ( IntArray & regionMap,
IntArray & regionTypes,
InternalStateType type )
private

Initializes the region table indicating regions to skip.

Parameters
regionMapRegion table, the nonzero entry for region indicates region to skip due to unsupported elements or incompatible value size
regionTypesSPRPatchType of each region.
typeDetermines the type of internal variable to be recovered

References computePatch(), computePolynomialTerms(), determinePatchAssemblyPoints(), determinePatchType(), determineValuesFromPatch(), exchangeDofManValues(), giveNumberOfUnknownPolynomialCoefficients(), initCommMaps(), initPatch(), packSharedDofManData(), and unpackSharedDofManData().

◆ packSharedDofManData()

◆ recoverValues()

◆ unpackSharedDofManData()


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