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

EnrichmentItem with direct geometry description in the following sense: We have a BasicGeometry to describe the underlying geometry, and we use this BasicGeometry directly to compute level set fields. More...

#include <directei.h>

+ Inheritance diagram for oofem::DirectEI:
+ Collaboration diagram for oofem::DirectEI:

Public Member Functions

 DirectEI (int n, XfemManager *xm, Domain *aDomain)
 
virtual ~DirectEI ()
 
virtual const char * giveClassName () const
 
virtual const char * giveInputRecordName () const
 
virtual void evalLevelSetNormal (double &oLevelSet, const FloatArray &iGlobalCoord, const FloatArray &iN, const IntArray &iNodeInd) const
 Evaluate the normal direction level set in the point iGlobalCoord. More...
 
virtual void evalLevelSetTangential (double &oLevelSet, const FloatArray &iGlobalCoord, const FloatArray &iN, const IntArray &iNodeInd) const
 Evaluate the tangential direction level set in the point iGlobalCoord. More...
 
virtual void evalGradLevelSetNormal (FloatArray &oGradLevelSet, const FloatArray &iGlobalCoord, const FloatMatrix &idNdX, const IntArray &iNodeInd) const
 Evaluate the gradient of the normal direction level set in the point iGlobalCoord. More...
 
- Public Member Functions inherited from oofem::GeometryBasedEI
 GeometryBasedEI (int n, XfemManager *xm, Domain *aDomain)
 
virtual ~GeometryBasedEI ()
 
virtual int instanciateYourself (DataReader &dr)
 
virtual void updateDofIdPool ()
 
virtual void appendInputRecords (DynamicDataReader &oDR)
 
virtual void updateGeometry ()
 
virtual void updateNodeEnrMarker (XfemManager &ixFemMan)
 
void updateLevelSets (XfemManager &ixFemMan)
 
virtual void evaluateEnrFuncInNode (std::vector< double > &oEnrFunc, const Node &iNode) const
 
virtual void evaluateEnrFuncAt (std::vector< double > &oEnrFunc, const FloatArray &iGlobalCoord, const FloatArray &iLocalCoord, int iNodeInd, const Element &iEl) const
 
virtual void evaluateEnrFuncAt (std::vector< double > &oEnrFunc, const FloatArray &iGlobalCoord, const FloatArray &iLocalCoord, int iNodeInd, const Element &iEl, const FloatArray &iN, const IntArray &iElNodes) const
 
virtual void evaluateEnrFuncDerivAt (std::vector< FloatArray > &oEnrFuncDeriv, const FloatArray &iGlobalCoord, const FloatArray &iLocalCoord, int iNodeInd, const Element &iEl) const
 
virtual void evaluateEnrFuncDerivAt (std::vector< FloatArray > &oEnrFuncDeriv, const FloatArray &iGlobalCoord, const FloatArray &iLocalCoord, int iNodeInd, const Element &iEl, const FloatArray &iN, const FloatMatrix &idNdX, const IntArray &iElNodes) const
 
void evaluateEnrFuncJumps (std::vector< double > &oEnrFuncJumps, int iNodeInd, GaussPoint &iGP, bool iGPLivesOnCurrentCrack) const
 
virtual void computeIntersectionPoints (std::vector< FloatArray > &oIntersectionPoints, std::vector< int > &oIntersectedEdgeInd, Element *element, std::vector< double > &oMinDistArcPos) const
 
virtual void computeIntersectionPoints (std::vector< FloatArray > &oIntersectionPoints, std::vector< int > &oIntersectedEdgeInd, Element *element, const Triangle &iTri, std::vector< double > &oMinDistArcPos) const
 
virtual void writeVtkDebug () const
 
void giveSubPolygon (std::vector< FloatArray > &oPoints, const double &iXiStart, const double &iXiEnd) const
 
virtual void propagateFronts (bool &oFrontsHavePropagated)
 
virtual bool giveElementTipCoord (FloatArray &oCoord, double &oArcPos, Element &iEl, const FloatArray &iElCenter) const
 
virtual void giveBoundingSphere (FloatArray &oCenter, double &oRadius)
 
BasicGeometrygiveGeometry ()
 
void setGeometry (std::unique_ptr< BasicGeometry > &&ipBasicGeometry)
 
- Public Member Functions inherited from oofem::EnrichmentItem
 EnrichmentItem (int n, XfemManager *xm, Domain *aDomain)
 Constructor / destructor. More...
 
virtual ~EnrichmentItem ()
 
virtual IRResultType initializeFrom (InputRecord *ir)
 Initializes receiver according to object description stored in input record. More...
 
virtual void giveInputRecord (DynamicInputRecord &input)
 Note the special treatment here, the "normal" syntax would be giveInputRecord(DynamicInputRecord &input). More...
 
const IntArraygiveEnrichesDofsWithIdArray () const
 
int giveNumberOfEnrDofs () const
 
bool isElementEnriched (const Element *element) const
 
bool isDofManEnriched (const DofManager &iDMan) const
 
int giveNumDofManEnrichments (const DofManager &iDMan) const
 
virtual bool canModifyMaterial () const
 
virtual bool isMaterialModified (GaussPoint &iGP, Element &iEl, CrossSection *&opCS) const
 
virtual void updateGeometry (FailureCriteriaStatus *fc, TimeStep *tStep)
 
virtual void updateGeometry (TimeStep *tStep)
 
virtual bool hasPropagatingFronts () const
 
virtual bool hasInitiationCriteria ()
 
int giveStartOfDofIdPool () const
 
int giveEndOfDofIdPool () const
 
virtual int giveDofPoolSize () const
 
virtual void computeEnrichedDofManDofIdArray (IntArray &oDofIdArray, DofManager &iDMan)
 Compute Id's of enriched dofs for a given DofManager. More...
 
virtual void giveEIDofIdArray (IntArray &answer) const
 
virtual void givePotentialEIDofIdArray (IntArray &answer) const
 
bool evalLevelSetNormalInNode (double &oLevelSet, int iNodeInd, const FloatArray &iGlobalCoord) const
 
bool evalLevelSetTangInNode (double &oLevelSet, int iNodeInd, const FloatArray &iGlobalCoord) const
 
bool evalNodeEnrMarkerInNode (double &oNodeEnrMarker, int iNodeInd) const
 
virtual void createEnrichedDofs ()
 
PropagationLawgivePropagationLaw ()
 
void setPropagationLaw (PropagationLaw *ipPropagationLaw)
 
bool hasPropagationLaw ()
 
virtual void callGnuplotExportModule (GnuplotExportModule &iExpMod, TimeStep *tStep)
 
const std::unordered_map< int, NodeEnrichmentType > & giveEnrNodeMap () const
 
EnrichmentFrontgiveEnrichmentFrontStart ()
 
void setEnrichmentFrontStart (EnrichmentFront *ipEnrichmentFrontStart, bool iDeleteOld=true)
 
EnrichmentFrontgiveEnrichmentFrontEnd ()
 
void setEnrichmentFrontEnd (EnrichmentFront *ipEnrichmentFrontEnd, bool iDeleteOld=true)
 
bool tipIsTouchingEI (const TipInfo &iTipInfo)
 
void setEnrichmentFunction (EnrichmentFunction *ipEnrichmentFunc)
 
- 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
 
virtual void setDomain (Domain *d)
 Sets associated Domain. More...
 
int giveNumber () const
 
void setNumber (int num)
 Sets number of receiver. More...
 
virtual void updateLocalNumbering (EntityRenumberingFunctor &f)
 Local renumbering support. 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...
 

Additional Inherited Members

- Static Public Member Functions inherited from oofem::EnrichmentItem
static double calcXiZeroLevel (const double &iQ1, const double &iQ2)
 
static void calcPolarCoord (double &oR, double &oTheta, const FloatArray &iOrigin, const FloatArray &iPos, const FloatArray &iN, const FloatArray &iT, const EfInput &iEfInput, bool iFlipTangent)
 
- Protected Attributes inherited from oofem::GeometryBasedEI
std::unique_ptr< BasicGeometrympBasicGeometry
 
- Protected Attributes inherited from oofem::EnrichmentItem
EnrichmentFunctionmpEnrichmentFunc
 
EnrichmentFrontmpEnrichmentFrontStart
 
EnrichmentFrontmpEnrichmentFrontEnd
 
int mEnrFrontIndex
 mEnrFrontIndex: nonzero if an enrichment front is present, zero otherwise. More...
 
PropagationLawmpPropagationLaw
 
int mPropLawIndex
 mPropLawIndex: nonzero if a propagation law is present, zero otherwise. More...
 
bool mInheritBoundaryConditions
 If newly created enriched dofs should inherit boundary conditions from the node they are introduced in. More...
 
bool mInheritOrderedBoundaryConditions
 
int startOfDofIdPool
 
int endOfDofIdPool
 
IntArray mpEnrichesDofsWithIdArray
 Geometry associated with EnrichmentItem. More...
 
std::unordered_map< int, double > mLevelSetNormalDirMap
 
std::unordered_map< int, double > mLevelSetTangDirMap
 
std::unordered_map< int, NodeEnrichmentTypemNodeEnrMarkerMap
 
IntArray mEIDofIdArray
 
bool mLevelSetsNeedUpdate
 
const double mLevelSetTol2
 
- Protected Attributes inherited from oofem::FEMComponent
int number
 Component number. More...
 
Domaindomain
 Link to domain object, useful for communicating with other FEM components. More...
 
- Static Protected Attributes inherited from oofem::EnrichmentItem
static const double mLevelSetTol = 1.0e-12
 
static const double mLevelSetRelTol = 1.0e-3
 

Detailed Description

EnrichmentItem with direct geometry description in the following sense: We have a BasicGeometry to describe the underlying geometry, and we use this BasicGeometry directly to compute level set fields.

Author
Erik Svenning
Date
Sep 10, 2014

Definition at line 53 of file directei.h.

Constructor & Destructor Documentation

oofem::DirectEI::DirectEI ( int  n,
XfemManager xm,
Domain aDomain 
)

Definition at line 39 of file directei.C.

oofem::DirectEI::~DirectEI ( )
virtual

Definition at line 43 of file directei.C.

Member Function Documentation

void oofem::DirectEI::evalGradLevelSetNormal ( FloatArray oGradLevelSet,
const FloatArray iGlobalCoord,
const FloatMatrix idNdX,
const IntArray iNodeInd 
) const
virtual

Evaluate the gradient of the normal direction level set in the point iGlobalCoord.

To improve performance, basis function values corresponding to that point should also be provided.

Implements oofem::EnrichmentItem.

Definition at line 57 of file directei.C.

References oofem::GeometryBasedEI::mpBasicGeometry.

Referenced by giveInputRecordName().

void oofem::DirectEI::evalLevelSetNormal ( double &  oLevelSet,
const FloatArray iGlobalCoord,
const FloatArray iN,
const IntArray iNodeInd 
) const
virtual

Evaluate the normal direction level set in the point iGlobalCoord.

To improve performance, basis function values corresponding to that point should also be provided.

Implements oofem::EnrichmentItem.

Definition at line 46 of file directei.C.

References oofem::GeometryBasedEI::mpBasicGeometry.

Referenced by giveInputRecordName().

void oofem::DirectEI::evalLevelSetTangential ( double &  oLevelSet,
const FloatArray iGlobalCoord,
const FloatArray iN,
const IntArray iNodeInd 
) const
virtual

Evaluate the tangential direction level set in the point iGlobalCoord.

To improve performance, basis function values corresponding to that point should also be provided.

Implements oofem::EnrichmentItem.

Definition at line 51 of file directei.C.

References oofem::GeometryBasedEI::mpBasicGeometry.

Referenced by giveInputRecordName().

virtual const char* oofem::DirectEI::giveClassName ( ) const
inlinevirtual
Returns
Class name of the receiver.

Reimplemented from oofem::GeometryBasedEI.

Definition at line 59 of file directei.h.

virtual const char* oofem::DirectEI::giveInputRecordName ( ) const
inlinevirtual
Returns
Input record name of the receiver.

Reimplemented from oofem::GeometryBasedEI.

Definition at line 60 of file directei.h.

References _IFT_DirectEI_Name, evalGradLevelSetNormal(), evalLevelSetNormal(), and evalLevelSetTangential().


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