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

This error estimator measures the quality of the elements. More...

#include <meshqualityerrorestimator.h>

+ Inheritance diagram for oofem::MeshQualityErrorEstimator:
+ Collaboration diagram for oofem::MeshQualityErrorEstimator:

Public Member Functions

 MeshQualityErrorEstimator (int n, Domain *d)
 Constructor. More...
virtual ~MeshQualityErrorEstimator ()
 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)
 Gives the max error from any element in the domain. More...
virtual int estimateError (EE_ErrorMode mode, TimeStep *tStep)
 Empty implementation. More...
virtual RemeshingCriteriagiveRemeshingCrit ()
 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...
DomaingiveDomain () 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 InterfacegiveInterface (InterfaceType t)
 Interface requesting service. More...
std::string errorInfo (const char *func) const
 Returns string for prepending output (used by error reporting macros). More...

Static Protected Member Functions

static double computeTriangleRadiusError (Element *elem)
 Computes error based on the inscribed triangle/circle ratio. More...
static double computeJacobianError (FEInterpolation &fei, IntegrationRule &ir, Element *elem)
 Computes the error based on the conditioning of the Jacobian. More...

Additional Inherited Members

- Protected Attributes inherited from oofem::ErrorEstimator
ErrorEstimatorType eeType
std::unique_ptr< RemeshingCriteriarc
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...
 Link to domain object, useful for communicating with other FEM components. More...

Detailed Description

This error estimator measures the quality of the elements.

This is useful when elements are deformed during the simulation.

Error estimates should be unitless, positive, and scaled properly. Zero error should reflect a perfect element. Error value of one should reflect an element of acceptable quality.

Its open for discussion whether the routine should give the reciprocal error to handle extremely badly shaped elements.
Mikael Öhman

Definition at line 61 of file meshqualityerrorestimator.h.

Constructor & Destructor Documentation

oofem::MeshQualityErrorEstimator::MeshQualityErrorEstimator ( int  n,
Domain d 


Definition at line 78 of file meshqualityerrorestimator.h.

References oofem::EET_MeshQuality.

virtual oofem::MeshQualityErrorEstimator::~MeshQualityErrorEstimator ( )


Definition at line 82 of file meshqualityerrorestimator.h.

Member Function Documentation

double oofem::MeshQualityErrorEstimator::computeJacobianError ( FEInterpolation fei,
IntegrationRule ir,
Element elem 

Computes the error based on the conditioning of the Jacobian.

Error value for the element.

Definition at line 88 of file meshqualityerrorestimator.C.

References oofem::FloatMatrix::computeReciprocalCondition(), oofem::FloatMatrix::giveDeterminant(), oofem::FEInterpolation::giveJacobianMatrixAt(), and oofem::sgn().

Referenced by giveElementError().

double oofem::MeshQualityErrorEstimator::computeTriangleRadiusError ( Element elem)

Computes error based on the inscribed triangle/circle ratio.

Error value for the element. Zero for equilateral triangle.

Definition at line 70 of file meshqualityerrorestimator.C.

References oofem::FloatArray::distance(), oofem::Node::giveCoordinates(), and oofem::Element::giveNode().

Referenced by giveElementError().

int oofem::MeshQualityErrorEstimator::estimateError ( EE_ErrorMode  mode,
TimeStep tStep 

Empty implementation.

Implements oofem::ErrorEstimator.

Definition at line 115 of file meshqualityerrorestimator.C.

virtual const char* oofem::MeshQualityErrorEstimator::giveClassName ( ) const
Class name of the receiver.

Implements oofem::FEMComponent.

Definition at line 95 of file meshqualityerrorestimator.h.

double oofem::MeshQualityErrorEstimator::giveElementError ( EE_ErrorType  type,
Element elem,
TimeStep tStep 

Returns the element error.

The estimateError service should be called before.

typeError type.
elemElement for which error requested.
tStepTime step.
Element error.

Implements oofem::ErrorEstimator.

Definition at line 45 of file meshqualityerrorestimator.C.

References computeJacobianError(), computeTriangleRadiusError(), oofem::Element::giveDefaultIntegrationRulePtr(), oofem::Element::giveGeometryType(), and oofem::Element::giveInterpolation().

Referenced by giveValue().

virtual RemeshingCriteria* oofem::MeshQualityErrorEstimator::giveRemeshingCrit ( )

Returns reference to associated remeshing criteria.

Implements oofem::ErrorEstimator.

Definition at line 92 of file meshqualityerrorestimator.h.

double oofem::MeshQualityErrorEstimator::giveValue ( EE_ValueType  type,
TimeStep tStep 

Gives the max error from any element in the domain.

Implements oofem::ErrorEstimator.

Definition at line 103 of file meshqualityerrorestimator.C.

References oofem::FEMComponent::domain, giveElementError(), oofem::Domain::giveElements(), and oofem::unknownET.

IRResultType oofem::MeshQualityErrorEstimator::initializeFrom ( InputRecord ir)

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.

See also
irInput record to initialize from.

Reimplemented from oofem::ErrorEstimator.

Definition at line 120 of file meshqualityerrorestimator.C.

References oofem::ErrorEstimator::initializeFrom().

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:38 for OOFEM by doxygen 1.8.11 written by Dimitri van Heesch, © 1997-2011