OOFEM
2.4
OOFEM.org - Object Oriented Finite Element Solver
|
The nodal recovery model based on paper of Zienkiewicz and Zhu "A Simple Estimator and Adaptive Procedure for Practical Engineering Analysis". More...
#include <zznodalrecoverymodel.h>
Classes | |
struct | parallelStruct |
Helper structure to pass required arguments to packing/unpacking functions needed in parallel mode. More... | |
Public Member Functions | |
ZZNodalRecoveryModel (Domain *d) | |
Constructor. More... | |
virtual | ~ZZNodalRecoveryModel () |
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 ®ionMap, InternalStateType type) |
Initializes the region table indicating regions to skip. More... | |
void | initCommMaps () |
void | exchangeDofManValues (FloatArray &lhs, FloatMatrix &rhs, IntArray &rn) |
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 ®ionNodalNumbers, int ®ionDofMans, Set ®ion) |
Determine local region node numbering and determine and check nodal values size. More... | |
int | updateRegionRecoveredValues (const IntArray ®ionNodalNumbers, 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, FloatArray > | nodalValList |
Map of nodal values. More... | |
InternalStateType | valType |
Determines the type of recovered values. More... | |
StateCounterType | stateCounter |
Time stamp of recovered values. More... | |
Domain * | domain |
CommunicatorBuff * | commBuff |
Common Communicator buffer. More... | |
ProblemCommunicator * | communicator |
Communicator. More... | |
bool | initCommMap |
Communication init flag. More... | |
The nodal recovery model based on paper of Zienkiewicz and Zhu "A Simple Estimator and Adaptive Procedure for Practical Engineering Analysis".
The recovery is based on nodal averaging or projection process in which it is assumed that the stress is interpolated by the same function as the displacement.
Definition at line 54 of file zznodalrecoverymodel.h.
oofem::ZZNodalRecoveryModel::ZZNodalRecoveryModel | ( | Domain * | d | ) |
Constructor.
Definition at line 61 of file zznodalrecoverymodel.C.
|
virtual |
Destructor.
Definition at line 64 of file zznodalrecoverymodel.C.
|
private |
Definition at line 303 of file zznodalrecoverymodel.C.
References oofem::NodalRecoveryModel::communicator, oofem::Communicator::finishExchange(), oofem::Communicator::initExchange(), oofem::Communicator::packAllData(), packSharedDofManData(), oofem::Communicator::unpackAllData(), and unpackSharedDofManData().
Referenced by recoverValues().
|
inlinevirtual |
Implements oofem::NodalRecoveryModel.
Definition at line 77 of file zznodalrecoverymodel.h.
|
private |
Definition at line 286 of file zznodalrecoverymodel.C.
References oofem::CBT_dynamic, oofem::NodalRecoveryModel::commBuff, oofem::NodalRecoveryModel::communicator, oofem::NodalRecoveryModel::domain, oofem::Domain::giveEngngModel(), oofem::EngngModel::giveNumberOfProcesses(), oofem::EngngModel::giveRank(), oofem::NodalRecoveryModel::initCommMap, and OOFEM_LOG_INFO.
Referenced by recoverValues().
|
private |
Initializes the region table indicating regions to skip.
regionMap | Region table, the nonzero entry for region indicates region to skip due to unsupported elements or incompatible value size. |
type | Determines the type of internal variable to be recovered. |
|
private |
Definition at line 315 of file zznodalrecoverymodel.C.
References oofem::IntArray::at(), oofem::FloatArray::at(), oofem::FloatMatrix::at(), oofem::FloatMatrix::giveNumberOfColumns(), oofem::ProcessCommunicator::giveProcessCommunicatorBuff(), oofem::IntArray::giveSize(), oofem::ProcessCommunicator::giveToSendMap(), oofem::ZZNodalRecoveryModel::parallelStruct::lhs, oofem::ZZNodalRecoveryModel::parallelStruct::regionNodalNumbers, oofem::ZZNodalRecoveryModel::parallelStruct::rhs, and oofem::ProcessCommunicatorBuff::write().
Referenced by exchangeDofManValues().
|
virtual |
Recovers the nodal values for all regions.
type | Determines the type of internal variable to be recovered. |
tStep | Time step. |
Implements oofem::NodalRecoveryModel.
Definition at line 68 of file zznodalrecoverymodel.C.
References oofem::__InternalStateTypeToString(), oofem::IntArray::at(), oofem::FloatArray::at(), oofem::FloatMatrix::at(), oofem::NodalRecoveryModel::clear(), oofem::NodalRecoveryModel::domain, oofem::Element_local, exchangeDofManValues(), oofem::Domain::giveDofManager(), oofem::Element::giveDofManager(), oofem::Domain::giveElement(), oofem::Set::giveElementList(), oofem::Domain::giveEngngModel(), oofem::FEMComponent::giveInterface(), oofem::DofManager::giveLabel(), oofem::FEMComponent::giveNumber(), oofem::FloatMatrix::giveNumberOfColumns(), oofem::Domain::giveNumberOfDofManagers(), oofem::Element::giveNumberOfDofManagers(), oofem::Element::giveParallelMode(), oofem::IntArray::giveSize(), oofem::TimeStep::giveSolutionStateCounter(), initCommMaps(), oofem::NodalRecoveryModel::initRegionNodeNumbering(), oofem::EngngModel::isParallel(), OOFEM_LOG_RELEVANT, OOFEM_WARNING, oofem::FloatArray::resize(), oofem::FloatMatrix::resize(), oofem::NodalRecoveryModel::stateCounter, oofem::NodalRecoveryModel::updateRegionRecoveredValues(), oofem::NodalRecoveryModel::valType, oofem::FloatArray::zero(), oofem::FloatMatrix::zero(), oofem::ZZNodalRecoveryModelInterface::ZZNodalRecoveryMI_computeNNMatrix(), oofem::ZZNodalRecoveryModelInterface::ZZNodalRecoveryMI_computeNValProduct(), oofem::ZZNodalRecoveryModelInterfaceType, and ZZNRM_ZERO_VALUE.
|
private |
Definition at line 347 of file zznodalrecoverymodel.C.
References oofem::IntArray::at(), oofem::FloatArray::at(), oofem::FloatMatrix::at(), oofem::FloatMatrix::giveNumberOfColumns(), oofem::ProcessCommunicator::giveProcessCommunicatorBuff(), oofem::IntArray::giveSize(), oofem::ProcessCommunicator::giveToRecvMap(), oofem::ZZNodalRecoveryModel::parallelStruct::lhs, oofem::ProcessCommunicatorBuff::read(), oofem::ZZNodalRecoveryModel::parallelStruct::regionNodalNumbers, and oofem::ZZNodalRecoveryModel::parallelStruct::rhs.
Referenced by exchangeDofManValues().