OOFEM
2.4
OOFEM.org - Object Oriented Finite Element Solver
|
The implementation of Zienkiewicz Zhu Error Estimator (Zienkiewicz and Zhu: A simple error estimator and adaptive procedure for practical engineering analysis, International Journal for Numerical Methods in Engineering, vol. More...
#include <zzerrorestimator.h>
Public Types | |
enum | NormType { L2Norm, EnergyNorm } |
Type of norm used. More... | |
enum | NodalRecoveryType { ZZRecovery, SPRRecovery } |
Nodal recovery type. More... | |
Public Member Functions | |
ZZErrorEstimator (int n, Domain *d) | |
Constructor. More... | |
virtual | ~ZZErrorEstimator () |
Destructor. More... | |
virtual double | giveElementError (EE_ErrorType type, Element *elem, TimeStep *tStep) |
Returns the element error. More... | |
virtual double | giveValue (EE_ValueType type, TimeStep *tStep) |
Returns the characteristic value of given type. More... | |
virtual int | estimateError (EE_ErrorMode mode, TimeStep *tStep) |
Estimates the error on associated domain at given time step. More... | |
virtual RemeshingCriteria * | giveRemeshingCrit () |
Returns reference to associated remeshing criteria. More... | |
virtual IRResultType | initializeFrom (InputRecord *ir) |
Initializes receiver according to object description stored in input record. More... | |
virtual const char * | giveClassName () const |
Public Member Functions inherited from oofem::ErrorEstimator | |
ErrorEstimator (int n, Domain *d) | |
Constructor. More... | |
virtual | ~ErrorEstimator () |
Destructor. More... | |
void | setDomain (Domain *d) |
Sets Domain; should also re-initialize attributes if necessary. More... | |
int | giveNumberOfSkippedElements () |
Returns number of elements skipped in error estimation. More... | |
ErrorEstimatorType | giveErrorEstimatorType () const |
Returns error estimation type of receiver. More... | |
bool | skipRegion (int reg) |
Returns nonzero if region has been skipped in error estimation (user option). More... | |
virtual void | reinitialize () |
virtual const char * | giveInputRecordName () const |
Public Member Functions inherited from oofem::FEMComponent | |
FEMComponent (int n, Domain *d) | |
Regular constructor, creates component with given number and belonging to given domain. More... | |
virtual | ~FEMComponent () |
Virtual destructor. More... | |
Domain * | giveDomain () const |
int | giveNumber () const |
void | setNumber (int num) |
Sets number of receiver. More... | |
virtual void | updateLocalNumbering (EntityRenumberingFunctor &f) |
Local renumbering support. More... | |
virtual void | giveInputRecord (DynamicInputRecord &input) |
Setups the input record string of receiver. More... | |
virtual contextIOResultType | saveContext (DataStream &stream, ContextMode mode, void *obj=NULL) |
Stores receiver state to output stream. More... | |
virtual contextIOResultType | restoreContext (DataStream &stream, ContextMode mode, void *obj=NULL) |
Restores the receiver state previously written in stream. More... | |
virtual int | checkConsistency () |
Allows programmer to test some internal data, before computation begins. More... | |
virtual void | printOutputAt (FILE *file, TimeStep *tStep) |
Prints output of receiver to stream, for given time step. More... | |
virtual void | printYourself () |
Prints receiver state on stdout. Useful for debugging. More... | |
virtual Interface * | giveInterface (InterfaceType t) |
Interface requesting service. More... | |
std::string | errorInfo (const char *func) const |
Returns string for prepending output (used by error reporting macros). More... | |
Protected Attributes | |
double | globalENorm |
Global error norm. More... | |
double | globalSNorm |
Global norm of quantity which error is evaluated. More... | |
double | globalErrorEstimate |
Global error estimate (relative) More... | |
FloatArray | eNorms |
Cache storing element norms. More... | |
NormType | normType |
Type of norm used. More... | |
NodalRecoveryType | nodalRecoveryType |
Nodal recovery type. More... | |
StateCounterType | stateCounter |
Actual state counter. More... | |
Protected Attributes inherited from oofem::ErrorEstimator | |
ErrorEstimatorType | eeType |
std::unique_ptr< RemeshingCriteria > | rc |
IntArray | regionSkipMap |
Map indicating regions to skip (region - cross section model). More... | |
int | skippedNelems |
Number of skipped elements. More... | |
InternalStateType | IStype |
Internal state type of variable to get internal forces. More... | |
Protected Attributes inherited from oofem::FEMComponent | |
int | number |
Component number. More... | |
Domain * | domain |
Link to domain object, useful for communicating with other FEM components. More... | |
The implementation of Zienkiewicz Zhu Error Estimator (Zienkiewicz and Zhu: A simple error estimator and adaptive procedure for practical engineering analysis, International Journal for Numerical Methods in Engineering, vol.
24, 337-357, 1987). The basic task is to evaluate the stress error on associated domain. The algorithm is written in general way, so it is possible to to evaluate different errors (for example temperature error). Then corresponding member attribute identifying the type of quantity used should be declared and initialized (for example in instanciateYourself() service). Then the modification is required only when requesting element contributions.
This task requires the special element algorithms, which are supported at element level using interface concept. This estimator also provides the compatible Remeshing Criteria, which based on error measure will evaluate the required mesh density of a new domain.
Definition at line 82 of file zzerrorestimator.h.
Nodal recovery type.
Enumerator | |
---|---|
ZZRecovery | |
SPRRecovery |
Definition at line 88 of file zzerrorestimator.h.
|
inline |
Constructor.
Definition at line 111 of file zzerrorestimator.h.
References oofem::EET_ZZEE, oofem::ErrorEstimator::eeType, L2Norm, and ZZRecovery.
|
inlinevirtual |
Destructor.
Definition at line 118 of file zzerrorestimator.h.
References estimateError(), giveElementError(), giveRemeshingCrit(), giveValue(), and initializeFrom().
|
virtual |
Estimates the error on associated domain at given time step.
The estimated values can be requested using giveElementError and giveValue methods. The type of errors provided depends on error estimator type implementing the service.
mode | Error mode. |
tStep | Time step. |
Implements oofem::ErrorEstimator.
Definition at line 67 of file zzerrorestimator.C.
References oofem::ParallelContext::accumulate(), oofem::Set::addAllElements(), oofem::FloatArray::at(), oofem::FEMComponent::domain, eNorms, oofem::Domain::giveElement(), oofem::Domain::giveEngngModel(), oofem::FEMComponent::giveInterface(), oofem::Domain::giveNumber(), oofem::Domain::giveNumberOfElements(), oofem::EngngModel::giveParallelContext(), oofem::Element::giveRegionNumber(), oofem::Domain::giveSmoother(), oofem::TimeStep::giveSolutionStateCounter(), globalENorm, globalErrorEstimate, globalSNorm, oofem::ErrorEstimator::IStype, nodalRecoveryType, normType, OOFEM_ERROR, OOFEM_LOG_RELEVANT, oofem::NodalRecoveryModel::recoverValues(), oofem::FloatArray::resize(), oofem::Domain::setSmoother(), oofem::ErrorEstimator::skipRegion(), SPRRecovery, stateCounter, oofem::temporaryEM, oofem::ZZErrorEstimatorInterface::ZZErrorEstimatorI_computeElementContributions(), oofem::ZZErrorEstimatorInterfaceType, and ZZRecovery.
Referenced by oofem::CombinedZZSIErrorEstimator::estimateError(), giveElementError(), giveValue(), and ~ZZErrorEstimator().
|
inlinevirtual |
Implements oofem::FEMComponent.
Definition at line 127 of file zzerrorestimator.h.
|
virtual |
Returns the element error.
The estimateError service should be called before.
type | Error type. |
elem | Element for which error requested. |
tStep | Time step. |
Implements oofem::ErrorEstimator.
Definition at line 159 of file zzerrorestimator.C.
References oofem::FloatArray::at(), eNorms, oofem::equilibratedEM, estimateError(), oofem::FEMComponent::giveInterface(), oofem::FEMComponent::giveNumber(), oofem::Element::giveRegionNumber(), oofem::internalStressET, normType, oofem::ErrorEstimator::skipRegion(), oofem::ZZErrorEstimatorInterface::ZZErrorEstimatorI_computeElementContributions(), and oofem::ZZErrorEstimatorInterfaceType.
Referenced by oofem::CombinedZZSIErrorEstimator::giveElementError(), and ~ZZErrorEstimator().
|
virtual |
Returns reference to associated remeshing criteria.
Implements oofem::ErrorEstimator.
Definition at line 205 of file zzerrorestimator.C.
References oofem::ErrorEstimator::rc.
Referenced by initializeFrom(), and ~ZZErrorEstimator().
|
virtual |
Returns the characteristic value of given type.
The estimateError service should be called before. This method is supposed to be used by associated remeshingCriteria to access some characteristic values already computed or known at error estimator level.
type | Error type. |
tStep | Time step. |
Implements oofem::ErrorEstimator.
Definition at line 190 of file zzerrorestimator.C.
References oofem::equilibratedEM, estimateError(), globalENorm, oofem::globalErrorEEV, globalErrorEstimate, oofem::globalNormEEV, globalSNorm, and oofem::relativeErrorEstimateEEV.
Referenced by oofem::CombinedZZSIErrorEstimator::giveValue(), and ~ZZErrorEstimator().
|
virtual |
Initializes receiver according to object description stored in input record.
This function is called immediately after creating object using constructor. Input record can be imagined as data record in component database belonging to receiver. Receiver may use value-name extracting functions to extract particular field from record.
ir | Input record to initialize from. |
Reimplemented from oofem::ErrorEstimator.
Definition at line 216 of file zzerrorestimator.C.
References _IFT_ZZErrorEstimator_normtype, _IFT_ZZErrorEstimator_recoverytype, EnergyNorm, giveRemeshingCrit(), oofem::FEMComponent::initializeFrom(), oofem::ErrorEstimator::initializeFrom(), IR_GIVE_OPTIONAL_FIELD, L2Norm, nodalRecoveryType, normType, SPRRecovery, and ZZRecovery.
Referenced by oofem::CombinedZZSIErrorEstimator::initializeFrom(), ~ZZErrorEstimator(), and oofem::ZZRemeshingCriteria::~ZZRemeshingCriteria().
|
protected |
Cache storing element norms.
Definition at line 99 of file zzerrorestimator.h.
Referenced by estimateError(), and giveElementError().
|
protected |
Global error norm.
Definition at line 92 of file zzerrorestimator.h.
Referenced by estimateError(), and giveValue().
|
protected |
Global error estimate (relative)
Definition at line 96 of file zzerrorestimator.h.
Referenced by estimateError(), and giveValue().
|
protected |
Global norm of quantity which error is evaluated.
Definition at line 94 of file zzerrorestimator.h.
Referenced by estimateError(), and giveValue().
|
protected |
Nodal recovery type.
Definition at line 104 of file zzerrorestimator.h.
Referenced by estimateError(), and initializeFrom().
|
protected |
Type of norm used.
Definition at line 102 of file zzerrorestimator.h.
Referenced by estimateError(), giveElementError(), and initializeFrom().
|
protected |
Actual state counter.
Definition at line 107 of file zzerrorestimator.h.
Referenced by estimateError().