47#include <unordered_map>
54#define _IFT_XfemManager_Name "xfemmanager"
55#define _IFT_XfemManager_numberOfEnrichmentItems "numberofenrichmentitems"
56#define _IFT_XfemManager_numberOfNucleationCriteria "numberofnucleationcriteria"
57#define _IFT_XfemManager_numberOfGpPerTri "numberofgppertri"
60#define _IFT_XfemManager_numberOfTriRefs "numberoftrirefs"
62#define _IFT_XfemManager_enrDofScaleFac "enrdofscalefac"
64#define _IFT_XfemManager_debugVTK "debugvtk"
65#define _IFT_XfemManager_VTKExport "vtkexport"
66#define _IFT_XfemManager_VTKExportFields "exportfields"
77class DynamicInputRecord;
78class NucleationCriterion;
84#define XFEMStateType_DEF \
85 ENUM_ITEM_WITH_VALUE(XFEMST_Undefined, 0) \
86 ENUM_ITEM_WITH_VALUE(XFEMST_Enrichment, 1) \
87 ENUM_ITEM_WITH_VALUE(XFEMST_LevelSetPhi, 2) \
88 ENUM_ITEM_WITH_VALUE(XFEMST_LevelSetGamma, 3) \
89 ENUM_ITEM_WITH_VALUE(XFEMST_NodeEnrMarker, 4) \
90 ENUM_ITEM_WITH_VALUE(XFEMST_NumIntersecPoints, 5)
97#undef ENUM_ITEM_WITH_VALUE
183 bool isElementEnriched(
const Element *elem);
191 void createEnrichedDofs();
199 virtual int instanciateYourself(
DataReader &dr);
203 virtual void postInitialize();
206 void setDomain(
Domain *ipDomain);
227 virtual void updateYourself(
TimeStep *tStep);
229 virtual void propagateFronts(
bool &oAnyFronHasPropagated);
230 void initiateFronts(
bool &oAnyFronHasPropagated,
TimeStep *tStep);
231 bool hasPropagatingFronts();
232 bool hasInitiationCriteria();
235 void clearEnrichmentItems();
237 void appendEnrichmentItems(std :: vector< std :: unique_ptr< EnrichmentItem > > &iEIlist);
239 void nucleateEnrichmentItems(
bool &oNewItemsWereNucleated);
240 bool hasNucleationCriteria();
245 void updateNodeEnrichmentItemMap();
248 void giveElementEnrichmentItemIndices(std :: vector< int > &oElemEnrInd,
int iElementIndex)
const;
bool giveVtkDebug() const
std ::vector< int > mMaterialModifyingEnrItemIndices
void setVtkDebug(bool iDebug)
int giveNumGpPerTri() const
std ::vector< std ::vector< int > > mNodeEnrichmentItemIndices
std ::vector< std ::unique_ptr< EnrichmentItem > > enrichmentItemList
Enrichment item list.
XfemManager & operator=(const XfemManager &)=delete
int numberOfNucleationCriteria
XfemManager(Domain *domain)
Constructor.
const std ::vector< int > & giveMaterialModifyingEnrItemIndices() const
const std ::vector< int > & giveNodeEnrichmentItemIndices(int iNodeIndex) const
IntArray mXFEMPotentialDofIDs
std ::unordered_map< int, std ::vector< int > > mElementEnrichmentItemIndices
int giveNumberOfNucleationCriteria() const
int giveNumTriRefs() const
Number of Gauss points per sub-triangle in cut elements.
const IntArray & giveEnrichedDofIDs() const
InternalStateValueType giveXFEMStateValueType(XFEMStateType type)
EnrichmentItem * giveEnrichmentItem(int n)
int numberOfEnrichmentItems
std::shared_ptr< InputRecord > thisIr
std::vector< std ::unique_ptr< NucleationCriterion > > mNucleationCriteria
double giveEnrDofScaleFactor() const
NucleationCriterion * giveNucleationCriterion(int n)
XfemManager(const XfemManager &)=delete
virtual const char * giveInputRecordName() const
bool mDebugVTK
If extra debug vtk files should be written.
virtual const char * giveClassName() const
int giveNumberOfEnrichmentItems() const
const char * __XFEMStateTypeToString(XFEMStateType _value)
InternalStateValueType
Determines the type of internal variable.
#define _IFT_XfemManager_Name