|
OOFEM 3.0
|
#include <sprnodalrecoverymodel.h>
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) |
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) |
| int | updateRegionRecoveredValues (const IntArray ®ionNodalNumbers, int regionValSize, const FloatArray &rhs) |
| Protected Attributes inherited from oofem::NodalRecoveryModel | |
| std ::map< int, FloatArray > | nodalValList |
| InternalStateType | valType |
| Determines the type of recovered values. | |
| StateCounterType | stateCounter |
| Time stamp of recovered values. | |
| Domain * | domain |
| CommunicatorBuff * | commBuff |
| Common Communicator buffer. | |
| ProblemCommunicator * | communicator |
| Communicator. | |
| bool | initCommMap |
| Communication init flag. | |
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.
| oofem::SPRNodalRecoveryModel::SPRNodalRecoveryModel | ( | Domain * | d | ) |
Constructor.
Definition at line 56 of file sprnodalrecoverymodel.C.
References oofem::NodalRecoveryModel::NodalRecoveryModel().
|
virtual |
Destructor.
Definition at line 59 of file sprnodalrecoverymodel.C.
|
private |
Definition at line 468 of file sprnodalrecoverymodel.C.
References oofem::FloatArray::at(), oofem::FloatMatrix::at(), oofem::IntArray::at(), oofem::Element::computeGlobalCoordinates(), computePolynomialTerms(), oofem::NodalRecoveryModel::domain, oofem::Element::giveDefaultIntegrationRulePtr(), oofem::FEMComponent::giveInterface(), oofem::Element::giveIPValue(), giveNumberOfUnknownPolynomialCoefficients(), oofem::FloatArray::giveSize(), oofem::IntArray::giveSize(), oofem::FloatArray::resize(), oofem::FloatMatrix::resize(), oofem::FloatMatrix::solveForRhs(), oofem::SPRNodalRecoveryModelInterfaceType, oofem::FloatArray::zero(), and oofem::FloatMatrix::zero().
Referenced by initRegionMap(), and recoverValues().
|
private |
Definition at line 541 of file sprnodalrecoverymodel.C.
References oofem::FloatArray::at(), OOFEM_ERROR, oofem::FloatArray::resize(), oofem::SPRPatchType_2dquadratic, oofem::SPRPatchType_2dxy, oofem::SPRPatchType_3dBiLin, and oofem::SPRPatchType_3dBiQuadratic.
Referenced by computePatch(), determineValuesFromPatch(), and initRegionMap().
|
private |
Definition at line 156 of file sprnodalrecoverymodel.C.
References oofem::IntArray::at(), oofem::NodalRecoveryModel::domain, oofem::Element_local, oofem::Set::giveElementList(), oofem::FEMComponent::giveInterface(), oofem::FEMComponent::giveNumber(), giveNumberOfUnknownPolynomialCoefficients(), oofem::Element::giveParallelMode(), oofem::IntArray::giveSize(), oofem::Set::hasElement(), OOFEM_WARNING, oofem::IntArray::resize(), oofem::SPRNodalRecoveryModelInterface::SPRNodalRecoveryMI_giveNumberOfIP(), oofem::SPRNodalRecoveryModelInterface::SPRNodalRecoveryMI_giveSPRAssemblyPoints(), and oofem::SPRNodalRecoveryModelInterfaceType.
Referenced by initRegionMap(), and recoverValues().
|
private |
Definition at line 596 of file sprnodalrecoverymodel.C.
References oofem::IntArray::at(), oofem::NodalRecoveryModel::domain, oofem::Set::giveElementList(), oofem::FEMComponent::giveInterface(), oofem::IntArray::giveSize(), OOFEM_ERROR, oofem::SPRNodalRecoveryModelInterface::SPRNodalRecoveryMI_givePatchType(), and oofem::SPRNodalRecoveryModelInterfaceType.
Referenced by initRegionMap(), and recoverValues().
|
private |
Definition at line 518 of file sprnodalrecoverymodel.C.
References oofem::FloatArray::at(), oofem::IntArray::at(), oofem::FloatArray::beTProductOf(), computePolynomialTerms(), oofem::NodalRecoveryModel::domain, oofem::FloatArray::giveSize(), and oofem::IntArray::giveSize().
Referenced by initRegionMap(), and recoverValues().
|
private |
Definition at line 634 of file sprnodalrecoverymodel.C.
References oofem::NodalRecoveryModel::communicator.
Referenced by initRegionMap(), and recoverValues().
|
inlineoverridevirtual |
Implements oofem::NodalRecoveryModel.
Definition at line 87 of file sprnodalrecoverymodel.h.
|
private |
Definition at line 580 of file sprnodalrecoverymodel.C.
References oofem::SPRPatchType_2dquadratic, oofem::SPRPatchType_2dxy, oofem::SPRPatchType_3dBiLin, and oofem::SPRPatchType_3dBiQuadratic.
Referenced by computePatch(), determinePatchAssemblyPoints(), and initRegionMap().
|
private |
Definition at line 617 of file sprnodalrecoverymodel.C.
References oofem::CBT_dynamic, oofem::NodalRecoveryModel::commBuff, oofem::NodalRecoveryModel::communicator, oofem::NodalRecoveryModel::domain, oofem::EngngModel::giveNumberOfProcesses(), oofem::EngngModel::giveRank(), oofem::NodalRecoveryModel::initCommMap, and OOFEM_LOG_INFO.
Referenced by initRegionMap(), and recoverValues().
|
private |
Definition at line 336 of file sprnodalrecoverymodel.C.
References oofem::IntArray::at(), oofem::IntArray::clear(), oofem::NodalRecoveryModel::domain, oofem::Element_local, oofem::Set::giveElementList(), oofem::FEMComponent::giveInterface(), oofem::Element::giveParallelMode(), oofem::IntArray::giveSize(), oofem::Set::hasElement(), oofem::IntArray::resize(), oofem::SPRNodalRecoveryModelInterface::SPRNodalRecoveryMI_giveDofMansDeterminedByPatch(), oofem::SPRNodalRecoveryModelInterface::SPRNodalRecoveryMI_giveSPRAssemblyPoints(), oofem::SPRNodalRecoveryModelInterfaceType, and oofem::IntArray::zero().
Referenced by initRegionMap(), and 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 |
| regionTypes | SPRPatchType of each region. |
| type | Determines the type of internal variable to be recovered |
References computePatch(), computePolynomialTerms(), determinePatchAssemblyPoints(), determinePatchType(), determineValuesFromPatch(), exchangeDofManValues(), giveNumberOfUnknownPolynomialCoefficients(), initCommMaps(), initPatch(), packSharedDofManData(), and unpackSharedDofManData().
|
private |
Definition at line 647 of file sprnodalrecoverymodel.C.
References oofem::FloatArray::at(), oofem::IntArray::at(), oofem::SPRNodalRecoveryModel::parallelStruct::dofManPatchCount, oofem::SPRNodalRecoveryModel::parallelStruct::dofManValues, oofem::ProcessCommunicator::giveProcessCommunicatorBuff(), oofem::ProcessCommunicator::giveToSendMap(), oofem::SPRNodalRecoveryModel::parallelStruct::regionNodalNumbers, oofem::SPRNodalRecoveryModel::parallelStruct::regionValSize, and oofem::ProcessCommunicatorBuff::write().
Referenced by initRegionMap().
|
overridevirtual |
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 63 of file sprnodalrecoverymodel.C.
References oofem::__InternalStateTypeToString(), oofem::FloatArray::at(), oofem::IntArray::at(), oofem::NodalRecoveryModel::clear(), computePatch(), determinePatchAssemblyPoints(), determinePatchType(), determineValuesFromPatch(), oofem::DofManager_local, oofem::DofManager_shared, oofem::NodalRecoveryModel::domain, exchangeDofManValues(), oofem::IntArray::giveSize(), oofem::TimeStep::giveSolutionStateCounter(), initCommMaps(), initPatch(), oofem::NodalRecoveryModel::initRegionNodeNumbering(), OOFEM_WARNING, oofem::FloatArray::resize(), oofem::IntArray::resize(), oofem::NodalRecoveryModel::stateCounter, oofem::NodalRecoveryModel::updateRegionRecoveredValues(), oofem::NodalRecoveryModel::valType, oofem::FloatArray::zero(), and oofem::IntArray::zero().
|
private |
Definition at line 674 of file sprnodalrecoverymodel.C.
References oofem::FloatArray::at(), oofem::IntArray::at(), oofem::SPRNodalRecoveryModel::parallelStruct::dofManPatchCount, oofem::SPRNodalRecoveryModel::parallelStruct::dofManValues, oofem::ProcessCommunicator::giveProcessCommunicatorBuff(), oofem::ProcessCommunicator::giveToRecvMap(), oofem::ProcessCommunicatorBuff::read(), oofem::SPRNodalRecoveryModel::parallelStruct::regionNodalNumbers, and oofem::SPRNodalRecoveryModel::parallelStruct::regionValSize.
Referenced by initRegionMap().