35 #ifndef Shell7BaseXFEM_h 36 #define Shell7BaseXFEM_h 38 #include "../sm/Elements/Shells/shell7base.h" 39 #include "../sm/xfem/enrichmentitems/delamination.h" 45 #define _IFT_Shell7BaseXFEM_CohesiveZoneMaterial "czmaterial" double evaluateHeavisideXi(double xi, ShellCrack *ei)
virtual void giveFailedInterfaceNumber(IntArray &failedInterfaces, FloatArray &initiationFactor, TimeStep *tStep, bool recoverStresses=true)
InternalStateType
Type representing the physical meaning of element or constitutive model internal variable.
std::vector< Triangle > allTri
void computeCohesiveTangent(FloatMatrix &answer, TimeStep *tStep)
void computeLambdaGMatricesDis(FloatMatrix lambdaD[3], double zeta)
std::string errorInfo(const char *func) const
Abstract class representing entity, which is included in the FE model using one (or more) global func...
void giveFictiousNodeCoordsForExport(std::vector< FloatArray > &nodes, int layer, int subCell)
void giveMaxCZDamages(FloatArray &answer, TimeStep *tStep)
void computeCohesiveNmatrixAt(const FloatArray &lCoords, FloatMatrix &answer, EnrichmentItem *ei)
virtual void evalCovarBaseVectorsAt(const FloatArray &lCoords, FloatMatrix &gcon, FloatArray &solVec, TimeStep *tStep)
std::vector< std::vector< Triangle > > crackSubdivisions
virtual void updateYourself(TimeStep *tStep)
Updates element state after equilibrium in time step has been reached.
Provides Xfem interface for an element.
virtual Interface * giveInterface(InterfaceType it)
Interface requesting service.
Class representing implementation of quadratic wedge interpolation class.
void giveFictiousCZNodeCoordsForExport(std::vector< FloatArray > &nodes, int layer, int subCell)
virtual void giveAverageTransverseInterfaceStress(std::vector< FloatMatrix > &transverseStress, TimeStep *tStep)
ValueModeType
Type representing the mode of UnknownType or CharType, or similar types.
void computeEnrTractionForce(FloatArray &answer, const int iedge, BoundaryLoad *edgeLoad, TimeStep *tStep, ValueModeType mode, EnrichmentItem *ei)
Shell7BaseXFEM(int n, Domain *d)
void computeFailureCriteriaQuantities(FailureCriteriaStatus *fc, TimeStep *tStep)
void computeSectionalForcesAt(FloatArray §ionalForces, IntegrationPoint *ip, Material *mat, TimeStep *tStep, FloatArray &genEps, double zeta)
void discGiveInitialSolutionVector(FloatArray &answer, IntArray &eiDofIdArray)
void computeInterfaceJumpAt(int interf, FloatArray &lCoords, TimeStep *tStep, FloatArray &answer)
void jump(FloatMatrix lambda, FloatArray deltaUnknowns)
virtual void giveCZExportData(VTKPiece &vtkPiece, IntArray &primaryVarsToExport, IntArray &internalVarsToExport, IntArray cellVarsToExport, TimeStep *tStep)
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
Class implementing an array of integers.
MatResponseMode
Describes the character of characteristic material matrix.
virtual void discComputeBulkTangentMatrix(FloatMatrix &KdIJ, IntegrationPoint *ip, EnrichmentItem *eiI, EnrichmentItem *eiJ, int layer, FloatMatrix A[3][3], TimeStep *tStep)
void computePressureTangentMatrixDis(FloatMatrix &KCC, FloatMatrix &KCD, FloatMatrix &KDD, IntegrationPoint *ip, Load *load, const int iSurf, TimeStep *tStep)
void computeDiscSolutionVector(IntArray &dofIdArray, TimeStep *tStep, FloatArray &solVecD)
virtual void discComputeStiffness(FloatMatrix &LCC, FloatMatrix &LDD, FloatMatrix &LDC, IntegrationPoint *ip, int layer, FloatMatrix A[3][3], TimeStep *tStep)
void giveFictiousUpdatedNodeCoordsForExport(std::vector< FloatArray > &nodes, int layer, TimeStep *tStep, int subCell)
void mapXi3FromLocalToShell(FloatArray &answer, FloatArray &local, int layer)
Second order triangular interpolation in 3D space (6 nodes).
void computeMassMatrixNum(FloatMatrix &answer, TimeStep *tStep)
FEI3dWedgeQuad interpolationForExport
bool hasCohesiveZone(int interfaceNum)
Abstract base class representing a boundary load (force, momentum, ...) that acts directly on a bound...
std::vector< IntArray > orderingArrays
void giveLocalNodeCoordsForExport(FloatArray &nodeLocalXi1Coords, FloatArray &nodeLocalXi2Coords, FloatArray &nodeLocalXi3Coords, int subCell, int layer, FloatMatrix &localNodeCoords)
void giveLocationArray(IntArray &locationArray, const UnknownNumberingScheme &s, IntArray *dofIds=NULL) const
Returns the location array (array of code numbers) of receiver for given numbering scheme...
void computeBoundaryEdgeLoadVector(FloatArray &answer, BoundaryLoad *load, int boundary, CharType type, ValueModeType mode, TimeStep *tStep, bool global)
Computes the contribution of the given load at the given boundary edge.
Abstract base class allowing to control the way, how equations are assigned to individual DOFs...
std::vector< IntArray > activeDofsArrays
virtual void edgeGiveUpdatedSolutionVector(FloatArray &answer, const int iedge, TimeStep *tStep)
void recoverShearStress(TimeStep *tStep)
virtual int checkConsistency()
Performs consistency check.
double evaluateCutHeaviside(const double xi, const double xiBottom, const double xiTop) const
virtual void computeStiffnessMatrix(FloatMatrix &answer, MatResponseMode rMode, TimeStep *tStep)
Computes the stiffness matrix of receiver.
void computeEnrichedNmatrixAt(const FloatArray &lCoords, FloatMatrix &answer, EnrichmentItem *ei)
Abstract base class for all material models.
virtual void OLDcomputeStiffnessMatrix(FloatMatrix &answer, MatResponseMode rMode, TimeStep *tStep)
virtual void giveShellExportData(VTKPiece &vtkPiece, IntArray &primaryVarsToExport, IntArray &internalVarsToExport, IntArray cellVarsToExport, TimeStep *tStep)
std::vector< std::unique_ptr< IntegrationRule > > czIntegrationRulesArray
void computeDiscGeneralizedStrainVector(FloatArray &dGenEps, const FloatArray &lCoords, EnrichmentItem *ei, TimeStep *tStep)
void computeCohesiveTangentAt(FloatMatrix &answer, TimeStep *tStep, Delamination *dei, EnrichmentItem *ei_j, EnrichmentItem *ei_k)
Class representing vector of real numbers.
virtual void vtkEvalUpdatedGlobalCoordinateAt(const FloatArray &localCoords, int layer, FloatArray &globalCoords, TimeStep *tStep)
void computeLambdaNMatrixDis(FloatMatrix &lambda_xd, double zeta)
void giveDisUnknownsAt(const FloatArray &lCoords, EnrichmentItem *ei, FloatArray &solVec, FloatArray &x, FloatArray &m, double &gam, TimeStep *tStep)
void computeOrderingArray(IntArray &orderingArray, IntArray &activeDofsArray, EnrichmentItem *ei)
Implementation of matrix containing floating point numbers.
IntArray DelaminatedInterfaceList
This class manages the xfem part.
IRResultType
Type defining the return values of InputRecord reading operations.
virtual ~Shell7BaseXFEM()
void edgeComputeEnrichedBmatrixAt(const FloatArray &lCoords, FloatMatrix &answer, EnrichmentItem *ei, const int edge)
virtual int giveNumberOfDofs()
This class represent a 7 parameter shell element.
void edgeComputeEnrichedNmatrixAt(const FloatArray &lCoords, FloatMatrix &answer, EnrichmentItem *ei, const int edge)
void giveInternalForcesVector(FloatArray &answer, TimeStep *tStep, int useUpdatedGpRecord)
Evaluates nodal representation of real internal forces.
IntArray numSubDivisionsArray
double evaluateLevelSet(const FloatArray &lCoords, EnrichmentItem *ei)
virtual void giveRecoveredTransverseInterfaceStress(std::vector< FloatMatrix > &transverseStress, TimeStep *tStep)
virtual void postInitialize()
Performs post initialization steps.
virtual void giveDofManDofIDMask(int inode, IntArray &answer) const
Returns dofmanager dof mask for node.
virtual void giveCompositeExportData(std::vector< VTKPiece > &vtkPieces, IntArray &primaryVarsToExport, IntArray &internalVarsToExport, IntArray cellVarsToExport, TimeStep *tStep)
InterfaceType
Enumerative type, used to identify interface type.
void computeEnrichedBmatrixAt(const FloatArray &lCoords, FloatMatrix &answer, EnrichmentItem *ei)
double EvaluateEnrFuncInDofMan(int dofManNum, EnrichmentItem *ei)
Load is base abstract class for all loads.
void edgeEvalEnrCovarBaseVectorsAt(const FloatArray &lCoords, const int iedge, FloatMatrix &gcov, TimeStep *tStep, EnrichmentItem *ei)
void giveFictiousUpdatedCZNodeCoordsForExport(std::vector< FloatArray > &nodes, int layer, TimeStep *tStep, int subCell)
the oofem namespace is to define a context or scope in which all oofem names are defined.
virtual void giveBoundaryLocationArray(IntArray &locationArray, const IntArray &bNodes, const UnknownNumberingScheme &s, IntArray *dofIdArray)
Returns the location array for the boundary of the element.
void computeCohesiveForces(FloatArray &answer, TimeStep *tStep, FloatArray &solVec, FloatArray &solVecD, EnrichmentItem *ei, EnrichmentItem *coupledToEi)
virtual const char * giveClassName() const
void recoverValuesFromCZIP(std::vector< FloatArray > &recoveredValues, int interfce, InternalStateType type, TimeStep *tStep)
void discComputeSectionalForces(FloatArray &answer, TimeStep *tStep, FloatArray &solVec, FloatArray &solVecD, EnrichmentItem *ei)
FEI3dTrQuad interpolationForCZExport
Class representing integration point in finite element program.
void giveLocalCZNodeCoordsForExport(FloatArray &nodeLocalXi1Coords, FloatArray &nodeLocalXi2Coords, FloatArray &nodeLocalXi3Coords, int subCell, FloatMatrix &localNodeCoords)
void computeTripleProduct(FloatMatrix &answer, const FloatMatrix &a, const FloatMatrix &b, const FloatMatrix &c)
Class representing solution step.