35 #include "../sm/Elements/Shells/tr2shell7xfem.h" 36 #include "../sm/Materials/structuralms.h" 37 #include "../sm/xfem/enrichmentitems/crack.h" 38 #include "../sm/xfem/enrichmentitems/shellcrack.h" 60 IntArray
Tr2Shell7XFEM :: orderingDofTypes = {1, 2, 3, 8, 9, 10, 15, 16, 17, 22, 23, 24, 29, 30, 31, 36, 37, 38,
61 4, 5, 6, 11, 12, 13, 18, 19, 20, 25, 26, 27, 32, 33, 34, 39, 40, 41,
62 7, 14, 21, 28, 35, 42};
63 IntArray
Tr2Shell7XFEM :: orderingNodes = {1, 2, 3, 19, 20, 21, 37, 4, 5, 6, 22, 23, 24, 38, 7, 8, 9, 25, 26, 27, 39,
64 10, 11, 12, 28, 29, 30, 40, 13, 14, 15, 31, 32, 33, 41, 16, 17, 18,
66 IntArray
Tr2Shell7XFEM :: orderingEdgeNodes = {1, 2, 3, 10, 11, 12, 19, 4, 5, 6, 13, 14, 15, 20, 7, 8, 9, 16, 17, 18, 21};
95 nodeLocalXiCoords = {1., 0., 0., .5, 0., .5};
96 nodeLocalEtaCoords = {0., 1., 0., .5, .5, 0.};
121 for (
int j = 0; j < numberOfInterfaces; j++ ) {
144 std :: vector< std :: vector< FloatArray > >pointPartitions;
151 for (
int i = 0; i < numberOfLayers; i++ ) {
159 for (
int eiIndex = 1; eiIndex <= numEI; eiIndex++ ) {
161 if ( dynamic_cast< ShellCrack*> (ei) ) {
167 double startXi, endXi;
168 bool intersection =
false;
169 pointPartitions.resize(0);
172 if ( intersection ) {
173 for (
int j = 0; j < int( pointPartitions.size() ); j++ ) {
180 int nPointsTriSubTri = 3;
206 for (
int j = 0; j < numberOfInterfaces; j++ ) {
234 answer = {1, 2, 3, 8, 9, 10, 22, 23, 24, 4, 5, 6, 11, 12, 13, 25, 26, 27, 7, 14, 28};
236 }
else if ( iEdge == 2 ) {
237 answer = { 8, 9, 10, 15, 16, 17, 29, 30, 31, 11, 12, 13, 18, 19, 20, 32, 33, 34, 14, 21, 35};
239 }
else if ( iEdge == 3 ) {
240 answer = { 15, 16, 17, 1, 2, 3, 36, 37, 38, 18, 19, 20, 4, 5, 6, 39, 40, 41, 21, 7, 42};
251 for(
int i = 1; i <= 42; i++){
double giveDeterminant() const
Returns the trace (sum of diagonal components) of the receiver.
virtual void XfemElementInterface_prepareNodesForDelaunay(std::vector< std::vector< FloatArray > > &oPointPartitions, double &oCrackStartXi, double &oCrackEndXi, int iEnrItemIndex, bool &oIntersection)
Returns an array of array of points. Each array of points defines the points of a subregion of the el...
virtual const IntArray & giveOrderingNodes() const
double evaluateHeavisideXi(double xi, ShellCrack *ei)
Abstract class representing entity, which is included in the FE model using one (or more) global func...
double giveMidSurfaceZcoordFromBottom()
void beVectorProductOf(const FloatArray &v1, const FloatArray &v2)
Computes vector product (or cross product) of vectors given as parameters, , and stores the result in...
std::vector< std::vector< Triangle > > crackSubdivisions
double & at(int i)
Coefficient access function.
LayeredCrossSection * layeredCS
virtual void computeGaussPoints()
Initializes the array of integration rules member variable.
Tr2Shell7XFEM(int n, Domain *d)
void mapLayerGpCoordsToShellCoords(std::vector< std::unique_ptr< IntegrationRule > > &layerIntegrationRulesArray)
Class implementing an array of integers.
int & at(int i)
Coefficient access function.
XfemManager * giveXfemManager()
virtual void giveLocalNodeCoords(FloatArray &nodeLocalXiCoords, FloatArray &nodeLocalEtaCoords)
virtual const IntArray & giveOrderingEdgeNodes() const
void beColumnOf(const FloatMatrix &mat, int col)
Reciever will be set to a given column in a matrix.
Class representing a general abstraction for finite element interpolation class.
int giveNumberOfEnrichmentItems() const
double computeIntegralThick()
Returns the total thickness of all layers.
void evalInitialCovarBaseVectorsAt(const FloatArray &lCoords, FloatMatrix &Gcov)
double giveNaturalCoordinate(int i) const
Returns i-th natural element coordinate of receiver.
bool updateIntegrationRuleMultiCrack()
static IntArray orderingNodes
double giveLayerThickness(int layer)
virtual double giveWeight()
Returns integration weight of receiver.
Wrapper around element definition to provide FEICellGeometry interface.
double giveLayerMidZ(int layer)
void resize(int n)
Checks size of receiver towards requested bounds.
std::vector< std::unique_ptr< IntegrationRule > > czIntegrationRulesArray
virtual double computeArea()
Computes the area (zero for all but 2d geometries).
virtual FEInterpolation * giveInterpolation() const
Class representing vector of real numbers.
Implementation of matrix containing floating point numbers.
static IntArray orderingEdgeNodes
virtual double computeAreaAround(GaussPoint *gp, double xi)
static IntArray orderingDofTypes
static FEI3dTrQuad interpolation
double giveArea(const FEICellGeometry &cellgeo) const
virtual const IntArray & giveOrderingDofTypes() const
double computeNorm() const
Computes the norm (or length) of the vector.
bool isElementEnriched(const Element *elem)
virtual double computeVolumeAroundLayer(GaussPoint *mastergp, int layer)
IntArray numSubDivisionsArray
EnrichmentItem * giveEnrichmentItem(int n)
std::vector< std::unique_ptr< IntegrationRule > > integrationRulesArray
List of integration rules of receiver (each integration rule contains associated integration points a...
virtual void XfemElementInterface_partitionElement(std::vector< Triangle > &oTriangles, const std::vector< FloatArray > &iPoints)
Partitions the element into patches by a triangulation.
Domain * giveDomain() const
int giveNumIntegrationPointsInLayer()
the oofem namespace is to define a context or scope in which all oofem names are defined.
Class representing integration point in finite element program.
int numberOfDofMans
Number of dofmanagers.
virtual void giveEdgeDofMapping(IntArray &answer, int iEdge) const
Assembles edge dof mapping mask, which provides mapping between edge local DOFs and "global" element ...
PatchIntegrationRule provides integration over a triangle patch.
const FloatArray & giveNaturalCoordinates()
Returns coordinate array of receiver.
Class representing Gaussian-quadrature integration rule.
virtual void giveSurfaceDofMapping(IntArray &answer, int iSurf) const
Assembles surface dof mapping mask, which provides mapping between surface local DOFs and "global" el...