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" 77 class DynamicInputRecord;
78 class 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 182 bool isElementEnriched(
const Element *elem);
190 void createEnrichedDofs();
198 virtual int instanciateYourself(
DataReader &dr);
203 void setDomain(
Domain *ipDomain);
228 virtual void updateYourself(
TimeStep *tStep);
230 virtual void propagateFronts(
bool &oAnyFronHasPropagated);
231 void initiateFronts(
bool &oAnyFronHasPropagated,
TimeStep *tStep);
232 bool hasPropagatingFronts();
233 bool hasInitiationCriteria();
236 void clearEnrichmentItems();
238 void appendEnrichmentItems(std :: vector< std :: unique_ptr< EnrichmentItem > > &iEIlist);
240 void nucleateEnrichmentItems(
bool &oNewItemsWereNucleated);
241 bool hasNucleationCriteria();
246 void updateNodeEnrichmentItemMap();
249 void giveElementEnrichmentItemIndices(std :: vector< int > &oElemEnrInd,
int iElementIndex)
const;
254 #endif // xfemmanager_h const std::vector< int > & giveMaterialModifyingEnrItemIndices() const
std::vector< std::unique_ptr< NucleationCriterion > > mNucleationCriteria
Nucleation of new enrichment items.
IntArray mXFEMPotentialDofIDs
Abstract class representing entity, which is included in the FE model using one (or more) global func...
int giveNumGpPerTri() const
int giveNumTriRefs() const
Number of Gauss points per sub-triangle in cut elements.
The purpose of DataStream abstract class is to allow to store/restore context to different streams...
std::vector< int > mMaterialModifyingEnrItemIndices
Keep track of enrichment items that may assign a different material to some Gauss points...
const std::vector< int > & giveNodeEnrichmentItemIndices(int iNodeIndex) const
Abstract base class for all finite elements.
InternalStateValueType
Determines the type of internal variable.
NucleationCriterion * giveNucleationCriterion(int n)
Base class for dof managers.
Class representing the abstraction for input data source.
virtual const char * giveInputRecordName() const
int mNumTriRef
The number of times a subtriangle should be refined.
Class implementing an array of integers.
bool giveVtkDebug() const
int giveNumberOfEnrichmentItems() const
#define _IFT_XfemManager_Name
std::vector< std::unique_ptr< EnrichmentItem > > enrichmentItemList
Enrichment item list.
virtual const char * giveClassName() const
int numberOfNucleationCriteria
int numberOfEnrichmentItems
double giveEnrDofScaleFactor() const
void setVtkDebug(bool iDebug)
std::unordered_map< int, std::vector< int > > mElementEnrichmentItemIndices
const char * __XFEMStateTypeToString(XFEMStateType _value)
This class manages the xfem part.
IRResultType
Type defining the return values of InputRecord reading operations.
IntArray vtkExportFields
List with the fields that should be exported to VTK.
int giveNumberOfNucleationCriteria() const
bool mDebugVTK
If extra debug vtk files should be written.
EnrichmentItem * giveEnrichmentItem(int n)
long ContextMode
Context mode (mask), defining the type of information written/read to/from context.
int mNumGpPerTri
The number of Gauss points to be used in each sub-triangle when subdividing cut elements.
the oofem namespace is to define a context or scope in which all oofem names are defined.
const IntArray & giveEnrichedDofIDs() const
std::vector< std::vector< int > > mNodeEnrichmentItemIndices
Let the XfemManager keep track of enrichment items enriching each node and each element, to allow more efficient computations.
Class representing solution step.