OOFEM  2.4
OOFEM.org - Object Oriented Finite Element Solver
oofem::XfemStructuralElementInterface Class Reference

Provides Xfem interface for a structural element. More...

#include <xfemstructuralelementinterface.h>

+ Inheritance diagram for oofem::XfemStructuralElementInterface:
+ Collaboration diagram for oofem::XfemStructuralElementInterface:

Public Member Functions

 XfemStructuralElementInterface (Element *e)
 
virtual ~XfemStructuralElementInterface ()
 
virtual bool XfemElementInterface_updateIntegrationRule ()
 Updates integration rule based on the triangulation. More...
 
MaterialStatusgiveClosestGP_MatStat (double &oClosestDist, std::vector< std::unique_ptr< IntegrationRule > > &iRules, const FloatArray &iCoord)
 
double computeEffectiveSveSize (StructuralFE2MaterialStatus *iFe2Ms)
 
virtual void XfemElementInterface_computeConstitutiveMatrixAt (FloatMatrix &answer, MatResponseMode rMode, GaussPoint *, TimeStep *tStep)
 
virtual void XfemElementInterface_computeStressVector (FloatArray &answer, const FloatArray &strain, GaussPoint *gp, TimeStep *tStep)
 
virtual bool hasCohesiveZone () const
 
virtual void computeCohesiveForces (FloatArray &answer, TimeStep *tStep)
 
virtual void computeGlobalCohesiveTractionVector (FloatArray &oT, const FloatArray &iJump, const FloatArray &iCrackNormal, const FloatMatrix &iNMatrix, GaussPoint &iGP, TimeStep *tStep)
 
virtual void computeCohesiveTangent (FloatMatrix &answer, TimeStep *tStep)
 
virtual void computeCohesiveTangentAt (FloatMatrix &answer, TimeStep *tStep)
 
virtual void XfemElementInterface_computeConsistentMassMatrix (FloatMatrix &answer, TimeStep *tStep, double &mass, const double *ipDensity=NULL)
 
virtual IRResultType initializeCZFrom (InputRecord *ir)
 
virtual void giveCZInputRecord (DynamicInputRecord &input)
 
virtual void initializeCZMaterial ()
 
bool useNonStdCz ()
 
virtual void XfemElementInterface_computeDeformationGradientVector (FloatArray &answer, GaussPoint *gp, TimeStep *tStep)
 
void giveIntersectionsTouchingCrack (std::vector< int > &oTouchingEnrItemIndices, const std::vector< int > &iCandidateIndices, int iEnrItemIndex, XfemManager &iXMan)
 Identify enrichment items with an intersection enrichment front that touches a given enrichment item. More...
 
void giveSubtriangulationCompositeExportData (std::vector< VTKPiece > &vtkPieces, IntArray &primaryVarsToExport, IntArray &internalVarsToExport, IntArray cellVarsToExport, TimeStep *tStep)
 VTK Interface. More...
 
void computeIPAverageInTriangle (FloatArray &answer, IntegrationRule *iRule, Element *elem, InternalStateType isType, TimeStep *tStep, const Triangle &iTri)
 Help functions for VTK export. More...
 
- Public Member Functions inherited from oofem::XfemElementInterface
virtual const char * giveClassName () const
 
std::string errorInfo (const char *func) const
 
 XfemElementInterface (Element *e)
 Constructor. More...
 
virtual ~XfemElementInterface ()
 
 XfemElementInterface (const XfemElementInterface &src)=delete
 
XfemElementInterfaceoperator= (const XfemElementInterface &src)=delete
 
void XfemElementInterface_createEnrBmatrixAt (FloatMatrix &oAnswer, GaussPoint &iGP, Element &iEl)
 Creates enriched B-matrix. More...
 
void XfemElementInterface_createEnrBHmatrixAt (FloatMatrix &oAnswer, GaussPoint &iGP, Element &iEl)
 Creates enriched BH-matrix. More...
 
void ComputeBOrBHMatrix (FloatMatrix &oAnswer, GaussPoint &iGP, Element &iEl, bool iComputeBH, const FloatArray &iNaturalGpCoord)
 Help function for computation of B and BH. More...
 
void XfemElementInterface_createEnrNmatrixAt (FloatMatrix &oAnswer, const FloatArray &iLocCoord, Element &iEl, bool iSetDiscontContribToZero)
 Creates enriched N-matrix. More...
 
void XfemElementInterface_createEnrNmatrixAt (FloatMatrix &oAnswer, const FloatArray &iLocCoord, Element &iEl, const std::vector< int > &iLocNodeInd, bool iSetDiscontContribToZero)
 Creates enriched N-matrix for a chosen subset of element nodes. More...
 
int XfemElementInterface_giveNumDofManEnrichments (const DofManager &iDMan, XfemManager &iXMan) const
 Computes total number of enrichments in a node. More...
 
virtual void XfemElementInterface_partitionElement (std::vector< Triangle > &oTriangles, const std::vector< FloatArray > &iPoints)
 Partitions the element into patches by a triangulation. More...
 
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 element. More...
 
virtual void XfemElementInterface_prepareNodesForDelaunay (std::vector< std::vector< FloatArray > > &oPointPartitions, double &oCrackStartXi, double &oCrackEndXi, const Triangle &iTri, int iEnrItemIndex, bool &oIntersection)
 
void putPointsInCorrectPartition (std::vector< std::vector< FloatArray > > &oPointPartitions, const std::vector< FloatArray > &iIntersecPoints, const std::vector< const FloatArray * > &iNodeCoord) const
 
void partitionEdgeSegment (int iBndIndex, std::vector< Line > &oSegments, std::vector< FloatArray > &oIntersectionPoints, const double &iTangDistPadding=0.0)
 Partition a boundary segment to account for cracks cutting the boundary. More...
 
MaterialMode giveMaterialMode ()
 
void updateYourselfCZ (TimeStep *tStep)
 
void computeDisplacementJump (GaussPoint &iGP, FloatArray &oJump, const FloatArray &iSolVec, const FloatMatrix &iNMatrix)
 
void computeNCohesive (FloatMatrix &oN, GaussPoint &iGP, int iEnrItemIndex, const std::vector< int > &iTouchingEnrItemIndices)
 Compute N-matrix for cohesive zone. More...
 
- Public Member Functions inherited from oofem::Interface
 Interface ()
 Constructor. More...
 
virtual ~Interface ()
 

Public Attributes

MaterialmpCZMat
 
int mCZMaterialNum
 
int mCSNumGaussPoints
 
bool mIncludeBulkJump
 
bool mIncludeBulkCorr
 
std::vector< TrianglemSubTri
 
- Public Attributes inherited from oofem::XfemElementInterface
Elementelement
 
std::vector< int > mCZEnrItemIndices
 Index of enrichment items associated with cohesive zones. More...
 
std::vector< std::vector< int > > mCZTouchingEnrItemIndices
 Indices of enrichment items that give cohesive zone contributions to a given GP, even though the GP is not located on any of these enrichment items. More...
 
bool mUsePlaneStrain
 Flag that tells if plane stress or plane strain is assumed. More...
 
std::vector< std::unique_ptr< IntegrationRule > > mpCZIntegrationRules
 
std::vector< std::unique_ptr< IntegrationRule > > mpCZExtraIntegrationRules
 
std::vector< std::unique_ptr< IntegrationRule > > mpCZIntegrationRules_tmp
 
std::vector< std::unique_ptr< IntegrationRule > > mpCZExtraIntegrationRules_tmp
 
std::vector< std::unique_ptr< IntegrationRule > > mIntRule_tmp
 

Detailed Description

Provides Xfem interface for a structural element.

Author
Erik Svenning
Date
Feb 14, 2014

Definition at line 50 of file xfemstructuralelementinterface.h.

Constructor & Destructor Documentation

oofem::XfemStructuralElementInterface::XfemStructuralElementInterface ( Element e)

Definition at line 80 of file xfemstructuralelementinterface.C.

oofem::XfemStructuralElementInterface::~XfemStructuralElementInterface ( )
virtual

Definition at line 92 of file xfemstructuralelementinterface.C.

Member Function Documentation

void oofem::XfemStructuralElementInterface::computeCohesiveForces ( FloatArray answer,
TimeStep tStep 
)
virtual

Definition at line 876 of file xfemstructuralelementinterface.C.

References oofem::FloatArray::add(), oofem::FloatMatrix::add(), oofem::FloatArray::beProductOf(), oofem::FloatArray::beTProductOf(), oofem::XfemElementInterface::ComputeBOrBHMatrix(), oofem::XfemElementInterface::computeDisplacementJump(), computeEffectiveSveSize(), computeGlobalCohesiveTractionVector(), oofem::Element::computeLocalCoordinates(), oofem::XfemElementInterface::computeNCohesive(), oofem::Element::computeVectorOf(), oofem::CS_Thickness, oofem::XfemElementInterface::element, oofem::CrossSection::give(), oofem::Element::giveCrossSection(), oofem::GaussPoint::giveGlobalCoordinates(), oofem::CrossSection::giveMaterial(), oofem::GaussPoint::giveMaterialStatus(), oofem::StructuralFE2MaterialStatus::giveNormal(), oofem::StructuralInterfaceMaterialStatus::giveNormal(), oofem::StructuralFE2Material::giveRealStressVector_3d(), oofem::StructuralMaterial::giveRealStressVector_3d(), oofem::FloatArray::giveSize(), oofem::Material::giveStatus(), oofem::GaussPoint::giveWeight(), hasCohesiveZone(), oofem::XfemElementInterface::mCZEnrItemIndices, oofem::XfemElementInterface::mCZTouchingEnrItemIndices, mIncludeBulkCorr, mIncludeBulkJump, oofem::XfemElementInterface::mpCZExtraIntegrationRules, oofem::XfemElementInterface::mpCZIntegrationRules, mpCZMat, OOFEM_ERROR, oofem::StructuralInterfaceMaterialStatus::setNewlyInserted(), oofem::FloatMatrix::times(), useNonStdCz(), and oofem::FloatArray::zero().

Referenced by oofem::PlaneStress2dXfem::giveInternalForcesVector(), oofem::TrPlaneStress2dXFEM::giveInternalForcesVector(), and oofem::QTrPlaneStress2dXFEM::giveInternalForcesVector().

void oofem::XfemStructuralElementInterface::computeCohesiveTangent ( FloatMatrix answer,
TimeStep tStep 
)
virtual

Definition at line 1136 of file xfemstructuralelementinterface.C.

References oofem::FloatArray::add(), oofem::FloatMatrix::add(), oofem::FloatArray::at(), oofem::FloatMatrix::at(), oofem::FloatMatrix::beProductOf(), oofem::FloatMatrix::beProductTOf(), oofem::FloatMatrix::beTProductOf(), oofem::FloatMatrix::beTranspositionOf(), oofem::FloatMatrix::beUnitMatrix(), oofem::FloatArray::beVectorProductOf(), oofem::XfemElementInterface::ComputeBOrBHMatrix(), oofem::XfemElementInterface::computeDisplacementJump(), computeEffectiveSveSize(), computeGlobalCohesiveTractionVector(), oofem::Element::computeLocalCoordinates(), oofem::XfemElementInterface::computeNCohesive(), oofem::Element::computeVectorOf(), oofem::CS_Thickness, oofem::XfemElementInterface::element, oofem::CrossSection::give(), oofem::StructuralFE2Material::give3dMaterialStiffnessMatrix(), oofem::StructuralMaterial::give3dMaterialStiffnessMatrix(), oofem::StructuralInterfaceMaterial::give3dStiffnessMatrix_dTdj(), oofem::Element::giveCrossSection(), oofem::GaussPoint::giveGlobalCoordinates(), oofem::CrossSection::giveMaterial(), oofem::GaussPoint::giveMaterialStatus(), oofem::StructuralFE2MaterialStatus::giveNormal(), oofem::StructuralInterfaceMaterialStatus::giveNormal(), oofem::Material::giveStatus(), oofem::GaussPoint::giveWeight(), oofem::StructuralInterfaceMaterial::hasAnalyticalTangentStiffness(), hasCohesiveZone(), oofem::XfemElementInterface::mCZEnrItemIndices, oofem::XfemElementInterface::mCZTouchingEnrItemIndices, mIncludeBulkCorr, mIncludeBulkJump, oofem::XfemElementInterface::mpCZExtraIntegrationRules, oofem::XfemElementInterface::mpCZIntegrationRules, mpCZMat, OOFEM_ERROR, oofem::FloatMatrix::resize(), oofem::FloatMatrix::setColumn(), oofem::FloatMatrix::times(), useNonStdCz(), and oofem::FloatMatrix::zero().

Referenced by oofem::PlaneStress2dXfem::computeStiffnessMatrix(), oofem::TrPlaneStress2dXFEM::computeStiffnessMatrix(), and oofem::QTrPlaneStress2dXFEM::computeStiffnessMatrix().

void oofem::XfemStructuralElementInterface::computeCohesiveTangentAt ( FloatMatrix answer,
TimeStep tStep 
)
virtual

Definition at line 1493 of file xfemstructuralelementinterface.C.

References hasCohesiveZone().

void oofem::XfemStructuralElementInterface::computeIPAverageInTriangle ( FloatArray answer,
IntegrationRule iRule,
Element elem,
InternalStateType  isType,
TimeStep tStep,
const Triangle iTri 
)
MaterialStatus * oofem::XfemStructuralElementInterface::giveClosestGP_MatStat ( double &  oClosestDist,
std::vector< std::unique_ptr< IntegrationRule > > &  iRules,
const FloatArray iCoord 
)
void oofem::XfemStructuralElementInterface::giveIntersectionsTouchingCrack ( std::vector< int > &  oTouchingEnrItemIndices,
const std::vector< int > &  iCandidateIndices,
int  iEnrItemIndex,
XfemManager iXMan 
)
void oofem::XfemStructuralElementInterface::giveSubtriangulationCompositeExportData ( std::vector< VTKPiece > &  vtkPieces,
IntArray primaryVarsToExport,
IntArray internalVarsToExport,
IntArray  cellVarsToExport,
TimeStep tStep 
)

VTK Interface.

Definition at line 1714 of file xfemstructuralelementinterface.C.

References oofem::FloatArray::add(), oofem::IntArray::at(), oofem::FloatArray::at(), oofem::FloatArray::beDifferenceOf(), oofem::FloatArray::beProductOf(), oofem::VTKXMLExportModule::computeIPAverage(), computeIPAverageInTriangle(), oofem::Element::computeLocalCoordinates(), oofem::BasicGeometry::computeTangentialSignDist(), oofem::Element::computeVectorOf(), oofem::XfemElementInterface::element, oofem::EnrichmentItem::evalLevelSetNormalInNode(), oofem::EnrichmentItem::evalLevelSetTangInNode(), oofem::FEInterpolation::evalN(), oofem::EnrichmentItem::evalNodeEnrMarkerInNode(), oofem::DofManager::giveCoordinates(), oofem::Element::giveDofManager(), oofem::FEMComponent::giveDomain(), oofem::XfemManager::giveEnrichmentItem(), oofem::GeometryBasedEI::giveGeometry(), oofem::DofManager::giveGlobalNumber(), oofem::Element::giveIntegrationRule(), oofem::Element::giveInterpolation(), oofem::Element::giveNumberOfDofManagers(), oofem::XfemManager::giveNumberOfEnrichmentItems(), oofem::XfemTolerances::giveRelLengthTolTight(), oofem::IntArray::giveSize(), oofem::FloatArray::giveSize(), oofem::Domain::giveXfemManager(), oofem::Domain::hasXfemManager(), mSubTri, N, oofem::FloatArray::push_back(), oofem::FloatArray::resize(), oofem::FloatArray::times(), oofem::XfemManager::vtkExportFields, and oofem::XfemElementInterface::XfemElementInterface_createEnrNmatrixAt().

Referenced by oofem::PlaneStress2dXfem::giveCompositeExportData(), oofem::QTrPlaneStress2dXFEM::giveCompositeExportData(), and oofem::TrPlaneStress2dXFEM::giveCompositeExportData().

virtual bool oofem::XfemStructuralElementInterface::hasCohesiveZone ( ) const
inlinevirtual
bool oofem::XfemStructuralElementInterface::XfemElementInterface_updateIntegrationRule ( )
virtual

Updates integration rule based on the triangulation.

Reimplemented from oofem::XfemElementInterface.

Definition at line 94 of file xfemstructuralelementinterface.C.

References oofem::Crack::AppendCohesiveZoneGaussPoint(), oofem::FloatArray::at(), oofem::FloatArray::beDifferenceOf(), oofem::FloatArray::computeSquaredNorm(), oofem::MaterialStatusMapperInterface::copyStateVariables(), oofem::StructuralCrossSection::createMaterialStatus(), oofem::Material::CreateStatus(), oofem::XfemElementInterface::element, oofem::StructuralFE2MaterialStatus::giveBC(), giveClosestGP_MatStat(), oofem::EngngModel::giveCurrentStep(), oofem::FEMComponent::giveDomain(), oofem::XfemManager::giveDomain(), oofem::XfemManager::giveElementEnrichmentItemIndices(), oofem::Domain::giveElementPlaceInArray(), oofem::Domain::giveEngngModel(), oofem::XfemManager::giveEnrichmentItem(), oofem::Element::giveGlobalNumber(), oofem::Element::giveIntegrationRulesArray(), giveIntersectionsTouchingCrack(), oofem::Element::giveMaterialMode(), oofem::XfemManager::giveNumGpPerTri(), oofem::XfemManager::giveNumTriRefs(), oofem::Material::giveStatus(), oofem::StructuralElement::giveStructuralCrossSection(), oofem::GeometryBasedEI::giveSubPolygon(), oofem::TimeStep::giveTargetTime(), oofem::XfemStructureManager::giveUseNonStdCz(), oofem::XfemManager::giveVtkDebug(), oofem::Domain::giveXfemManager(), initializeCZMaterial(), oofem::XfemManager::isElementEnriched(), oofem::StructuralFE2MaterialStatus::letNormalBe(), oofem::StructuralInterfaceMaterialStatus::letNormalBe(), mCSNumGaussPoints, oofem::XfemElementInterface::mCZEnrItemIndices, mCZMaterialNum, oofem::XfemElementInterface::mCZTouchingEnrItemIndices, mIncludeBulkCorr, oofem::XfemElementInterface::mIntRule_tmp, oofem::XfemElementInterface::mpCZExtraIntegrationRules, oofem::XfemElementInterface::mpCZExtraIntegrationRules_tmp, oofem::XfemElementInterface::mpCZIntegrationRules, oofem::XfemElementInterface::mpCZIntegrationRules_tmp, mpCZMat, mSubTri, oofem::FloatArray::normalize(), OOFEM_ERROR, oofem::PrescribedGradientBCWeak::recomputeTractionMesh(), oofem::Triangle::refineTriangle(), oofem::Element::setIntegrationRules(), oofem::PrescribedGradientBCWeak::setPeriodicityNormal(), oofem::XFEMDebugTools::WritePointsToVTK(), oofem::XFEMDebugTools::WriteTrianglesToVTK(), oofem::XfemElementInterface::XfemElementInterface_partitionElement(), and oofem::XfemElementInterface::XfemElementInterface_prepareNodesForDelaunay().

Referenced by oofem::PlaneStress2dXfem::computeGaussPoints(), oofem::QTrPlaneStress2dXFEM::computeGaussPoints(), and oofem::TrPlaneStress2dXFEM::computeGaussPoints().

Member Data Documentation

int oofem::XfemStructuralElementInterface::mCSNumGaussPoints
int oofem::XfemStructuralElementInterface::mCZMaterialNum
bool oofem::XfemStructuralElementInterface::mIncludeBulkCorr
bool oofem::XfemStructuralElementInterface::mIncludeBulkJump

The documentation for this class was generated from the following files:

This page is part of the OOFEM documentation. Copyright (c) 2011 Borek Patzak
Project e-mail: info@oofem.org
Generated at Tue Jan 2 2018 20:07:43 for OOFEM by doxygen 1.8.11 written by Dimitri van Heesch, © 1997-2011