OOFEM  2.4
OOFEM.org - Object Oriented Finite Element Solver
oofem::SPRNodalRecoveryModel Class Reference

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. More...

#include <sprnodalrecoverymodel.h>

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

Classes

struct  parallelStruct
 Helper structure to pass required arguments to packing/unpacking functions needed in parallel mode. More...
 

Public Member Functions

 SPRNodalRecoveryModel (Domain *d)
 Constructor. More...
 
virtual ~SPRNodalRecoveryModel ()
 Destructor. More...
 
virtual int recoverValues (Set elementSet, InternalStateType type, TimeStep *tStep)
 Recovers the nodal values for all regions. More...
 
virtual const char * giveClassName () const
 
- Public Member Functions inherited from oofem::NodalRecoveryModel
 NodalRecoveryModel (Domain *d)
 Constructor. More...
 
virtual ~NodalRecoveryModel ()
 Destructor. More...
 
void setDomain (Domain *ipDomain)
 
virtual int clear ()
 Clears the receiver's nodal table. More...
 
int giveNodalVector (const FloatArray *&ptr, int node)
 Returns vector of recovered values for given node and region. More...
 
virtual int giveRegionRecordSize ()
 Returns the region record size. More...
 
std::string errorInfo (const char *func)
 

Private Member Functions

void initRegionMap (IntArray &regionMap, IntArray &regionTypes, InternalStateType type)
 Initializes the region table indicating regions to skip. More...
 
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, 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)
 Determine local region node numbering and determine and check nodal values size. More...
 
int updateRegionRecoveredValues (const IntArray &regionNodalNumbers, int regionValSize, const FloatArray &rhs)
 Update the nodal table according to recovered solution for given region. More...
 
- Protected Attributes inherited from oofem::NodalRecoveryModel
std::map< int, FloatArraynodalValList
 Map of nodal values. More...
 
InternalStateType valType
 Determines the type of recovered values. More...
 
StateCounterType stateCounter
 Time stamp of recovered values. More...
 
Domaindomain
 
CommunicatorBuffcommBuff
 Common Communicator buffer. More...
 
ProblemCommunicatorcommunicator
 Communicator. More...
 
bool initCommMap
 Communication init flag. More...
 

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

oofem::SPRNodalRecoveryModel::SPRNodalRecoveryModel ( Domain d)

Constructor.

Definition at line 56 of file sprnodalrecoverymodel.C.

oofem::SPRNodalRecoveryModel::~SPRNodalRecoveryModel ( )
virtual

Destructor.

Definition at line 59 of file sprnodalrecoverymodel.C.

Member Function Documentation

void oofem::SPRNodalRecoveryModel::computePolynomialTerms ( FloatArray P,
FloatArray coords,
SPRPatchType  type 
)
private
void oofem::SPRNodalRecoveryModel::determineValuesFromPatch ( FloatArray dofManValues,
IntArray dofManCount,
IntArray regionNodalNumbers,
IntArray dofManToDetermine,
FloatMatrix a,
SPRPatchType  type 
)
private
void oofem::SPRNodalRecoveryModel::exchangeDofManValues ( FloatArray dofManValues,
IntArray dofManPatchCount,
IntArray regionNodalNumbers,
int  regionValSize 
)
private
virtual const char* oofem::SPRNodalRecoveryModel::giveClassName ( ) const
inlinevirtual

Implements oofem::NodalRecoveryModel.

Definition at line 87 of file sprnodalrecoverymodel.h.

int oofem::SPRNodalRecoveryModel::giveNumberOfUnknownPolynomialCoefficients ( SPRPatchType  regType)
private
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

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

This page is part of the OOFEM documentation. Copyright (c) 2011 Borek Patzak
Project e-mail: info@oofem.org
Generated at Tue Jan 2 2018 20:07:41 for OOFEM by doxygen 1.8.11 written by Dimitri van Heesch, © 1997-2011