35#ifndef Shell7BaseXFEM_h
36#define Shell7BaseXFEM_h
45#define _IFT_Shell7BaseXFEM_CohesiveZoneMaterial "czmaterial"
void giveLocationArray(IntArray &locationArray, const UnknownNumberingScheme &s, IntArray *dofIds=NULL) const
Stores all neccessary data (of a region) in a VTKPiece so it can be exported later.
std::vector< IntArray > activeDofsArrays
FEI3dTrQuad interpolationForCZExport
void edgeGiveUpdatedSolutionVector(FloatArray &answer, const int iedge, TimeStep *tStep) override
void recoverShearStress(TimeStep *tStep) override
virtual void discComputeStiffness(FloatMatrix &LCC, FloatMatrix &LDD, FloatMatrix &LDC, IntegrationPoint *ip, int layer, FloatMatrix A[3][3], TimeStep *tStep)
void computeCohesiveTangent(FloatMatrix &answer, TimeStep *tStep)
IntArray numSubDivisionsArray
double evaluateCutHeaviside(const double xi, const double xiBottom, const double xiTop) const
void giveDisUnknownsAt(const FloatArrayF< 3 > &lCoords, EnrichmentItem *ei, const FloatArray &solVec, FloatArrayF< 3 > &x, FloatArrayF< 3 > &m, double &gam, TimeStep *tStep)
FloatMatrixF< 3, 7 > computeLambdaNMatrixDis(double zeta)
void mapXi3FromLocalToShell(FloatArray &answer, FloatArray &local, int layer)
void giveBoundaryLocationArray(IntArray &locationArray, const IntArray &bNodes, const UnknownNumberingScheme &s, IntArray *dofIdArray) override
void giveCompositeExportData(std::vector< ExportRegion > &vtkPieces, IntArray &primaryVarsToExport, IntArray &internalVarsToExport, IntArray cellVarsToExport, TimeStep *tStep) override
void edgeComputeEnrichedNmatrixAt(const FloatArray &lCoords, FloatMatrix &answer, EnrichmentItem *ei, const int edge)
FloatArray computeSectionalForcesAt(IntegrationPoint *ip, Material *mat, TimeStep *tStep, FloatArray &genEps, double zeta)
static ParamKey IPK_Shell7BaseXFEM_CohesiveZoneMaterial
void computeDiscGeneralizedStrainVector(FloatArray &dGenEps, const FloatArray &lCoords, EnrichmentItem *ei, TimeStep *tStep)
std ::vector< Triangle > allTri
std::vector< FloatArray > giveFictiousCZNodeCoordsForExport(int layer, int subCell)
void computeEnrTractionForce(FloatArray &answer, const int iedge, BoundaryLoad *edgeLoad, TimeStep *tStep, ValueModeType mode, EnrichmentItem *ei)
void updateYourself(TimeStep *tStep) override
int giveNumberOfDofs() override
std ::vector< std ::unique_ptr< IntegrationRule > > czIntegrationRulesArray
int checkConsistency() override
void computeMassMatrixNum(FloatMatrix &answer, TimeStep *tStep) override
void giveFailedInterfaceNumber(IntArray &failedInterfaces, FloatArray &initiationFactor, TimeStep *tStep, bool recoverStresses=true)
void discComputeSectionalForces(FloatArray &answer, TimeStep *tStep, FloatArray &solVec, FloatArray &solVecD, EnrichmentItem *ei)
void giveAverageTransverseInterfaceStress(std::vector< FloatMatrix > &transverseStress, TimeStep *tStep)
IntArray DelaminatedInterfaceList
void computeCohesiveNmatrixAt(const FloatArray &lCoords, FloatMatrix &answer, EnrichmentItem *ei)
Shell7BaseXFEM(int n, Domain *d)
FloatArrayF< 3 > computeInterfaceJumpAt(int interf, const FloatArrayF< 3 > &lCoords, TimeStep *tStep)
void recoverValuesFromCZIP(std::vector< FloatArray > &recoveredValues, int interfce, InternalStateType type, TimeStep *tStep)
void computeOrderingArray(IntArray &orderingArray, IntArray &activeDofsArray, EnrichmentItem *ei)
std ::vector< std ::vector< Triangle > > crackSubdivisions
std::vector< FloatArray > giveFictiousUpdatedNodeCoordsForExport(int layer, TimeStep *tStep, int subCell)
void computeStiffnessMatrix(FloatMatrix &answer, MatResponseMode rMode, TimeStep *tStep) override
void computePressureTangentMatrixDis(FloatMatrix &KCC, FloatMatrix &KCD, FloatMatrix &KDD, IntegrationPoint *ip, Load *load, const int iSurf, TimeStep *tStep)
virtual void OLDcomputeStiffnessMatrix(FloatMatrix &answer, MatResponseMode rMode, TimeStep *tStep)
double evaluateHeavisideXi(double xi, ShellCrack *ei)
void jump(FloatMatrix lambda, FloatArray deltaUnknowns)
void giveInternalForcesVector(FloatArray &answer, TimeStep *tStep, int useUpdatedGpRecord) override
std::vector< FloatArray > giveFictiousUpdatedCZNodeCoordsForExport(int layer, TimeStep *tStep, int subCell)
void giveCZExportData(ExportRegion &vtkPiece, IntArray &primaryVarsToExport, IntArray &internalVarsToExport, IntArray cellVarsToExport, TimeStep *tStep)
double evaluateLevelSet(const FloatArray &lCoords, EnrichmentItem *ei)
void giveRecoveredTransverseInterfaceStress(std::vector< FloatMatrix > &transverseStress, TimeStep *tStep) override
void giveLocalNodeCoordsForExport(FloatArray &nodeLocalXi1Coords, FloatArray &nodeLocalXi2Coords, FloatArray &nodeLocalXi3Coords, int subCell, int layer, FloatMatrix &localNodeCoords)
void postInitialize() override
Performs post initialization steps.
void computeDiscSolutionVector(IntArray &dofIdArray, TimeStep *tStep, FloatArray &solVecD)
void edgeComputeEnrichedBmatrixAt(const FloatArray &lCoords, FloatMatrix &answer, EnrichmentItem *ei, const int edge)
bool hasCohesiveZone(int interfaceNum)
void computeCohesiveForces(FloatArray &answer, TimeStep *tStep, FloatArray &solVec, FloatArray &solVecD, EnrichmentItem *ei, EnrichmentItem *coupledToEi)
void discGiveInitialSolutionVector(FloatArray &answer, IntArray &eiDofIdArray)
double EvaluateEnrFuncInDofMan(int dofManNum, EnrichmentItem *ei)
std::vector< FloatArray > giveFictiousNodeCoordsForExport(int layer, int subCell)
std::array< FloatMatrixF< 3, 18 >, 3 > computeLambdaGMatricesDis(double zeta)
FloatArrayF< 3 > vtkEvalUpdatedGlobalCoordinateAt(const FloatArrayF< 3 > &localCoords, int layer, TimeStep *tStep) override
void computeFailureCriteriaQuantities(FailureCriteriaStatus *fc, TimeStep *tStep) override
Interface * giveInterface(InterfaceType it) override
void giveShellExportData(ExportRegion &vtkPiece, IntArray &primaryVarsToExport, IntArray &internalVarsToExport, IntArray cellVarsToExport, TimeStep *tStep) override
void initializeFrom(InputRecord &ir, int priority) override
void giveMaxCZDamages(FloatArray &answer, TimeStep *tStep)
const char * giveClassName() const override
void giveDofManDofIDMask(int inode, IntArray &answer) const override
void giveLocalCZNodeCoordsForExport(FloatArray &nodeLocalXi1Coords, FloatArray &nodeLocalXi2Coords, FloatArray &nodeLocalXi3Coords, int subCell, FloatMatrix &localNodeCoords)
void computeEnrichedBmatrixAt(const FloatArray &lCoords, FloatMatrix &answer, EnrichmentItem *ei)
void computeEnrichedNmatrixAt(const FloatArray &lCoords, FloatMatrix &answer, EnrichmentItem *ei)
void computeCohesiveTangentAt(FloatMatrix &answer, TimeStep *tStep, Delamination *dei, EnrichmentItem *ei_j, EnrichmentItem *ei_k)
FloatMatrixF< 3, 3 > evalCovarBaseVectorsAt(const FloatArrayF< 3 > &lCoords, FloatArray &solVec, TimeStep *tStep) override
std::string errorInfo(const char *func) const
std::vector< IntArray > orderingArrays
virtual void discComputeBulkTangentMatrix(FloatMatrix &KdIJ, IntegrationPoint *ip, EnrichmentItem *eiI, EnrichmentItem *eiJ, int layer, FloatMatrix A[3][3], TimeStep *tStep)
FEI3dWedgeQuad interpolationForExport
void computeTripleProduct(FloatMatrix &answer, const FloatMatrix &a, const FloatMatrix &b, const FloatMatrix &c)
void computeBoundaryEdgeLoadVector(FloatArray &answer, BoundaryLoad *load, int boundary, CharType type, ValueModeType mode, TimeStep *tStep, bool global) override
FloatMatrixF< 3, 3 > edgeEvalEnrCovarBaseVectorsAt(const FloatArrayF< 3 > &lCoords, const int iedge, TimeStep *tStep, EnrichmentItem *ei)
Shell7Base(int n, Domain *d)
XfemElementInterface(Element *e)
Constructor.
GaussPoint IntegrationPoint