|
OOFEM 3.0
|
#include <xfemelementinterface.h>
Public Member Functions | |
| const char * | giveClassName () const override |
| std::string | errorInfo (const char *func) const |
| XfemElementInterface (Element *e) | |
| Constructor. | |
| virtual | ~XfemElementInterface () |
| XfemElementInterface (const XfemElementInterface &src)=delete | |
| XfemElementInterface & | operator= (const XfemElementInterface &src)=delete |
| void | XfemElementInterface_createEnrBmatrixAt (FloatMatrix &oAnswer, GaussPoint &iGP, Element &iEl) |
| Creates enriched B-matrix. | |
| void | XfemElementInterface_createEnrBHmatrixAt (FloatMatrix &oAnswer, GaussPoint &iGP, Element &iEl) |
| Creates enriched BH-matrix. | |
| void | ComputeBOrBHMatrix (FloatMatrix &oAnswer, GaussPoint &iGP, Element &iEl, bool iComputeBH, const FloatArray &iNaturalGpCoord) |
| void | XfemElementInterface_createEnrNmatrixAt (FloatMatrix &oAnswer, const FloatArray &iLocCoord, Element &iEl, bool iSetDiscontContribToZero) |
| Creates enriched N-matrix. | |
| void | XfemElementInterface_createEnrNmatrixAt (FloatMatrix &oAnswer, const FloatArray &iLocCoord, Element &iEl, const std ::vector< int > &iLocNodeInd, bool iSetDiscontContribToZero) |
| int | XfemElementInterface_giveNumDofManEnrichments (const DofManager &iDMan, XfemManager &iXMan) const |
| virtual void | XfemElementInterface_partitionElement (std ::vector< Triangle > &oTriangles, const std ::vector< FloatArray > &iPoints) |
| Partitions the element into patches by a triangulation. | |
| virtual bool | XfemElementInterface_updateIntegrationRule () |
| Updates integration rule based on the triangulation. | |
| 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. | |
| 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) |
| 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) |
| Public Member Functions inherited from oofem::Interface | |
| Interface () | |
| Constructor. | |
| virtual | ~Interface () |
Public Attributes | |
| Element * | element |
| std ::vector< int > | mCZEnrItemIndices |
| Index of enrichment items associated with cohesive zones. | |
| std ::vector< std ::vector< int > > | mCZTouchingEnrItemIndices |
| bool | mUsePlaneStrain |
| Flag that tells if plane stress or plane strain is assumed. | |
| 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 |
Static Protected Attributes | |
| static ParamKey | IPK_XfemElementInterface_CohesiveZoneMaterial |
| static ParamKey | IPK_XfemElementInterface_NumIntPointsCZ |
| static ParamKey | IPK_XfemElementInterface_PlaneStrain |
Provides Xfem interface for an element.
Definition at line 64 of file xfemelementinterface.h.
| oofem::XfemElementInterface::XfemElementInterface | ( | Element * | e | ) |
Constructor.
Definition at line 63 of file xfemelementinterface.C.
References element, oofem::Interface::Interface(), mpCZExtraIntegrationRules, mpCZIntegrationRules, and mUsePlaneStrain.
Referenced by oofem::Shell7BaseXFEM::giveInterface(), operator=(), oofem::Shell7BaseXFEM::Shell7BaseXFEM(), XfemElementInterface(), and oofem::XfemStructuralElementInterface::XfemStructuralElementInterface().
|
virtual |
Definition at line 72 of file xfemelementinterface.C.
|
delete |
References XfemElementInterface().
| void oofem::XfemElementInterface::ComputeBOrBHMatrix | ( | FloatMatrix & | oAnswer, |
| GaussPoint & | iGP, | ||
| Element & | iEl, | ||
| bool | iComputeBH, | ||
| const FloatArray & | iNaturalGpCoord ) |
Help function for computation of B and BH. Avoid duplication of code.
Definition at line 85 of file xfemelementinterface.C.
References oofem::FloatArray::at(), oofem::FloatMatrix::at(), oofem::column(), oofem::Element::computeLocalCoordinates(), element, oofem::FEInterpolation::evaldNdx(), oofem::FEInterpolation::evalN(), oofem::EnrichmentItem::evaluateEnrFuncAt(), oofem::EnrichmentItem::evaluateEnrFuncDerivAt(), oofem::EnrichmentItem::evaluateEnrFuncInNode(), oofem::DofManager::giveCoordinates(), oofem::Element::giveDofManager(), oofem::Element::giveDofManArray(), oofem::FEMComponent::giveDomain(), oofem::XfemManager::giveEnrDofScaleFactor(), oofem::XfemManager::giveEnrichmentItem(), oofem::DofManager::giveGlobalNumber(), oofem::Element::giveInterpolation(), oofem::Element::giveNode(), oofem::XfemManager::giveNodeEnrichmentItemIndices(), oofem::Element::giveNumberOfDofManagers(), oofem::Domain::giveXfemManager(), oofem::Domain::hasXfemManager(), oofem::EnrichmentItem::isDofManEnriched(), mUsePlaneStrain, N, oofem::FloatArray::resize(), oofem::FloatMatrix::resize(), oofem::FloatMatrix::setSubMatrix(), oofem::Vec2(), and XfemElementInterface_giveNumDofManEnrichments().
Referenced by oofem::XfemStructuralElementInterface::computeCohesiveForces(), oofem::XfemStructuralElementInterface::computeCohesiveTangent(), operator=(), XfemElementInterface_createEnrBHmatrixAt(), and XfemElementInterface_createEnrBmatrixAt().
| void oofem::XfemElementInterface::computeDisplacementJump | ( | GaussPoint & | iGP, |
| FloatArray & | oJump, | ||
| const FloatArray & | iSolVec, | ||
| const FloatMatrix & | iNMatrix ) |
Definition at line 1005 of file xfemelementinterface.C.
Referenced by oofem::XfemStructuralElementInterface::computeCohesiveForces(), and oofem::XfemStructuralElementInterface::computeCohesiveTangent().
| void oofem::XfemElementInterface::computeNCohesive | ( | FloatMatrix & | oN, |
| GaussPoint & | iGP, | ||
| int | iEnrItemIndex, | ||
| const std ::vector< int > & | iTouchingEnrItemIndices ) |
Compute N-matrix for cohesive zone.
Definition at line 1012 of file xfemelementinterface.C.
References oofem::FloatArray::at(), oofem::FloatMatrix::beNMatrixOf(), oofem::column(), element, oofem::FEInterpolation::evalN(), oofem::GeometryBasedEI::evaluateEnrFuncJumps(), oofem::XfemManager::giveEnrDofScaleFactor(), oofem::XfemManager::giveEnrichmentItem(), oofem::GaussPoint::giveGlobalCoordinates(), oofem::DofManager::giveGlobalNumber(), oofem::XfemManager::giveNodeEnrichmentItemIndices(), oofem::EnrichmentItem::giveNumDofManEnrichments(), oofem::EnrichmentItem::isDofManEnriched(), oofem::FloatArray::resize(), XfemElementInterface_giveNumDofManEnrichments(), and oofem::FloatArray::zero().
Referenced by oofem::XfemStructuralElementInterface::computeCohesiveForces(), and oofem::XfemStructuralElementInterface::computeCohesiveTangent().
|
inline |
Definition at line 89 of file xfemelementinterface.h.
References giveClassName().
|
inlineoverridevirtual |
Implements oofem::Interface.
Definition at line 88 of file xfemelementinterface.h.
Referenced by errorInfo().
| MaterialMode oofem::XfemElementInterface::giveMaterialMode | ( | ) |
Definition at line 977 of file xfemelementinterface.C.
References mUsePlaneStrain.
|
delete |
References ComputeBOrBHMatrix(), partitionEdgeSegment(), putPointsInCorrectPartition(), XfemElementInterface(), XfemElementInterface_createEnrBHmatrixAt(), XfemElementInterface_createEnrBmatrixAt(), XfemElementInterface_createEnrNmatrixAt(), XfemElementInterface_giveNumDofManEnrichments(), XfemElementInterface_partitionElement(), XfemElementInterface_prepareNodesForDelaunay(), and XfemElementInterface_updateIntegrationRule().
| void oofem::XfemElementInterface::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. This is a necessary step to evaluate integrals along an edge cut by one or several cracks.
Definition at line 856 of file xfemelementinterface.C.
References oofem::FloatArray::at(), oofem::FEInterpolation2d::computeLocalEdgeMapping(), element, oofem::EnrichmentItem::evalLevelSetNormalInNode(), oofem::EnrichmentItem::evalLevelSetTangInNode(), oofem::FEInterpolation::evalN(), oofem::XfemManager::giveEnrichmentItem(), oofem::XfemManager::giveNumberOfEnrichmentItems(), oofem::FloatArray::giveSize(), OOFEM_ERROR, and oofem::FloatArray::resize().
Referenced by oofem::PrescribedGradientBCWeak::findCrackBndIntersecCoord(), oofem::PrescribedGradientBCNeumann::integrateTangent(), and operator=().
| void oofem::XfemElementInterface::putPointsInCorrectPartition | ( | std ::vector< std ::vector< FloatArray > > & | oPointPartitions, |
| const std ::vector< FloatArray > & | iIntersecPoints, | ||
| const std ::vector< const FloatArray * > & | iNodeCoord ) const |
Definition at line 828 of file xfemelementinterface.C.
References oofem::det().
Referenced by operator=(), XfemElementInterface_prepareNodesForDelaunay(), and XfemElementInterface_prepareNodesForDelaunay().
| void oofem::XfemElementInterface::updateYourselfCZ | ( | TimeStep * | tStep | ) |
Definition at line 986 of file xfemelementinterface.C.
References mpCZExtraIntegrationRules, and mpCZIntegrationRules.
| void oofem::XfemElementInterface::XfemElementInterface_createEnrBHmatrixAt | ( | FloatMatrix & | oAnswer, |
| GaussPoint & | iGP, | ||
| Element & | iEl ) |
Creates enriched BH-matrix.
Definition at line 80 of file xfemelementinterface.C.
References ComputeBOrBHMatrix(), and oofem::GaussPoint::giveNaturalCoordinates().
Referenced by oofem::PlaneStress2dXfem::computeBHmatrixAt(), oofem::QTrPlaneStress2dXFEM::computeBHmatrixAt(), oofem::TrPlaneStress2dXFEM::computeBHmatrixAt(), and operator=().
| void oofem::XfemElementInterface::XfemElementInterface_createEnrBmatrixAt | ( | FloatMatrix & | oAnswer, |
| GaussPoint & | iGP, | ||
| Element & | iEl ) |
Creates enriched B-matrix.
Definition at line 75 of file xfemelementinterface.C.
References ComputeBOrBHMatrix(), and oofem::GaussPoint::giveNaturalCoordinates().
Referenced by oofem::PlaneStress2dXfem::computeBmatrixAt(), oofem::QTrPlaneStress2dXFEM::computeBmatrixAt(), oofem::TrPlaneStress2dXFEM::computeBmatrixAt(), and operator=().
| void oofem::XfemElementInterface::XfemElementInterface_createEnrNmatrixAt | ( | FloatMatrix & | oAnswer, |
| const FloatArray & | iLocCoord, | ||
| Element & | iEl, | ||
| bool | iSetDiscontContribToZero ) |
Creates enriched N-matrix.
Definition at line 250 of file xfemelementinterface.C.
References oofem::Element::giveNumberOfDofManagers(), and XfemElementInterface_createEnrNmatrixAt().
Referenced by oofem::PrescribedGradientBCWeak::assembleTangentGPContributionNew(), oofem::QTrPlaneStress2dXFEM::computeField(), oofem::TrPlaneStress2dXFEM::computeField(), oofem::PlaneStress2dXfem::computeNmatrixAt(), oofem::QTrPlaneStress2dXFEM::computeNmatrixAt(), oofem::TrPlaneStress2dXFEM::computeNmatrixAt(), oofem::XfemStructuralElementInterface::giveSubtriangulationCompositeExportData(), oofem::PrescribedGradientBCNeumann::integrateTangent(), operator=(), and XfemElementInterface_createEnrNmatrixAt().
| void oofem::XfemElementInterface::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.
Definition at line 263 of file xfemelementinterface.C.
References oofem::FloatArray::at(), oofem::FloatMatrix::beNMatrixOf(), oofem::column(), oofem::Element::computeLocalCoordinates(), element, oofem::FEInterpolation::evalN(), oofem::EnrichmentItem::evaluateEnrFuncAt(), oofem::EnrichmentItem::evaluateEnrFuncInNode(), oofem::DofManager::giveCoordinate(), oofem::DofManager::giveCoordinates(), oofem::Element::giveDofManager(), oofem::Element::giveDofManArray(), oofem::FEMComponent::giveDomain(), oofem::XfemManager::giveEnrDofScaleFactor(), oofem::XfemManager::giveEnrichmentItem(), oofem::DofManager::giveGlobalNumber(), oofem::Element::giveInterpolation(), oofem::XfemManager::giveNodeEnrichmentItemIndices(), oofem::Element::giveNumberOfDofManagers(), oofem::Domain::giveXfemManager(), oofem::EnrichmentItem::isDofManEnriched(), oofem::FloatArray::resize(), XfemElementInterface_giveNumDofManEnrichments(), and oofem::FloatArray::zero().
| int oofem::XfemElementInterface::XfemElementInterface_giveNumDofManEnrichments | ( | const DofManager & | iDMan, |
| XfemManager & | iXMan ) const |
Computes total number of enrichments in a node.
Definition at line 368 of file xfemelementinterface.C.
References element, oofem::XfemManager::giveEnrichmentItem(), oofem::DofManager::giveGlobalNumber(), oofem::XfemManager::giveNodeEnrichmentItemIndices(), oofem::EnrichmentItem::giveNumDofManEnrichments(), and oofem::EnrichmentItem::isDofManEnriched().
Referenced by ComputeBOrBHMatrix(), computeNCohesive(), operator=(), and XfemElementInterface_createEnrNmatrixAt().
|
virtual |
Partitions the element into patches by a triangulation.
Definition at line 384 of file xfemelementinterface.C.
References oofem::Delaunay::triangulate().
Referenced by operator=(), oofem::Tr2Shell7XFEM::updateIntegrationRuleMultiCrack(), XfemElementInterface_updateIntegrationRule(), and oofem::XfemStructuralElementInterface::XfemElementInterface_updateIntegrationRule().
|
virtual |
Definition at line 707 of file xfemelementinterface.C.
References oofem::FloatArray::add(), oofem::GeometryBasedEI::computeIntersectionPoints(), element, oofem::GeometryBasedEI::giveElementTipCoord(), oofem::XfemManager::giveEnrichmentItem(), oofem::FloatArray::giveSize(), oofem::BasicGeometry::giveVertex(), putPointsInCorrectPartition(), oofem::FloatArray::resize(), oofem::FloatArray::resizeWithValues(), oofem::FloatArray::times(), and oofem::FloatArray::zero().
|
virtual |
Returns an array of array of points. Each array of points defines the points of a subregion of the element.
Definition at line 486 of file xfemelementinterface.C.
References oofem::FloatArray::add(), oofem::GeometryBasedEI::computeIntersectionPoints(), oofem::distance_square(), element, oofem::GeometryBasedEI::giveElementTipCoord(), oofem::XfemManager::giveEnrichmentItem(), OOFEM_ERROR, putPointsInCorrectPartition(), oofem::FloatArray::resize(), oofem::FloatArray::resizeWithValues(), oofem::FloatArray::times(), and oofem::FloatArray::zero().
Referenced by operator=(), oofem::Tr2Shell7XFEM::updateIntegrationRuleMultiCrack(), XfemElementInterface_updateIntegrationRule(), and oofem::XfemStructuralElementInterface::XfemElementInterface_updateIntegrationRule().
|
virtual |
Updates integration rule based on the triangulation.
Reimplemented in oofem::XfemStructuralElementInterface.
Definition at line 392 of file xfemelementinterface.C.
References element, oofem::XfemManager::giveDomain(), oofem::XfemManager::giveElementEnrichmentItemIndices(), oofem::Domain::giveElementPlaceInArray(), oofem::XfemManager::giveNumGpPerTri(), oofem::XfemManager::giveVtkDebug(), oofem::XfemManager::isElementEnriched(), XfemElementInterface_partitionElement(), and XfemElementInterface_prepareNodesForDelaunay().
Referenced by operator=(), and oofem::XfemSolverInterface::propagateXfemInterfaces().
| Element* oofem::XfemElementInterface::element |
Definition at line 72 of file xfemelementinterface.h.
Referenced by ComputeBOrBHMatrix(), oofem::XfemStructuralElementInterface::computeCohesiveForces(), oofem::XfemStructuralElementInterface::computeCohesiveTangent(), computeNCohesive(), oofem::XfemStructuralElementInterface::giveSubtriangulationCompositeExportData(), oofem::XfemStructuralElementInterface::initializeCZFrom(), oofem::XfemStructuralElementInterface::initializeCZMaterial(), partitionEdgeSegment(), oofem::XfemStructuralElementInterface::useNonStdCz(), XfemElementInterface(), oofem::XfemStructuralElementInterface::XfemElementInterface_computeConsistentMassMatrix(), oofem::XfemStructuralElementInterface::XfemElementInterface_computeConstitutiveMatrixAt(), oofem::XfemStructuralElementInterface::XfemElementInterface_computeDeformationGradientVector(), oofem::XfemStructuralElementInterface::XfemElementInterface_computeStressVector(), XfemElementInterface_createEnrNmatrixAt(), XfemElementInterface_giveNumDofManEnrichments(), XfemElementInterface_prepareNodesForDelaunay(), XfemElementInterface_prepareNodesForDelaunay(), XfemElementInterface_updateIntegrationRule(), and oofem::XfemStructuralElementInterface::XfemElementInterface_updateIntegrationRule().
|
staticprotected |
Definition at line 67 of file xfemelementinterface.h.
Referenced by oofem::XfemStructuralElementInterface::initializeCZFrom().
|
staticprotected |
Definition at line 68 of file xfemelementinterface.h.
Referenced by oofem::XfemStructuralElementInterface::initializeCZFrom().
|
staticprotected |
Definition at line 69 of file xfemelementinterface.h.
Referenced by oofem::XfemStructuralElementInterface::initializeCZFrom().
| std :: vector< int > oofem::XfemElementInterface::mCZEnrItemIndices |
Index of enrichment items associated with cohesive zones.
Definition at line 76 of file xfemelementinterface.h.
Referenced by oofem::XfemStructuralElementInterface::computeCohesiveForces(), oofem::XfemStructuralElementInterface::computeCohesiveTangent(), and oofem::XfemStructuralElementInterface::XfemElementInterface_updateIntegrationRule().
| std :: vector< std :: vector< int > > oofem::XfemElementInterface::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.
Definition at line 83 of file xfemelementinterface.h.
Referenced by oofem::XfemStructuralElementInterface::computeCohesiveForces(), oofem::XfemStructuralElementInterface::computeCohesiveTangent(), and oofem::XfemStructuralElementInterface::XfemElementInterface_updateIntegrationRule().
| std :: vector< std :: unique_ptr< IntegrationRule > > oofem::XfemElementInterface::mIntRule_tmp |
Definition at line 153 of file xfemelementinterface.h.
Referenced by oofem::XfemStructuralElementInterface::XfemElementInterface_updateIntegrationRule().
| std :: vector< std :: unique_ptr< IntegrationRule > > oofem::XfemElementInterface::mpCZExtraIntegrationRules |
Definition at line 147 of file xfemelementinterface.h.
Referenced by oofem::XfemStructuralElementInterface::computeCohesiveForces(), oofem::XfemStructuralElementInterface::computeCohesiveTangent(), updateYourselfCZ(), XfemElementInterface(), and oofem::XfemStructuralElementInterface::XfemElementInterface_updateIntegrationRule().
| std :: vector< std :: unique_ptr< IntegrationRule > > oofem::XfemElementInterface::mpCZExtraIntegrationRules_tmp |
Definition at line 152 of file xfemelementinterface.h.
Referenced by oofem::XfemStructuralElementInterface::XfemElementInterface_updateIntegrationRule().
| std :: vector< std :: unique_ptr< IntegrationRule > > oofem::XfemElementInterface::mpCZIntegrationRules |
Definition at line 144 of file xfemelementinterface.h.
Referenced by oofem::XfemStructuralElementInterface::computeCohesiveForces(), oofem::XfemStructuralElementInterface::computeCohesiveTangent(), oofem::OctreeSpatialLocalizer::giveClosestIP(), oofem::OctreeSpatialLocalizer::giveClosestIP(), oofem::OctreeSpatialLocalizer::giveClosestIPWithinOctant(), oofem::OctreeSpatialLocalizer::giveClosestIPWithinOctant(), oofem::OctreeSpatialLocalizer::giveElementsWithIPWithinBox(), oofem::XfemStructuralElementInterface::hasCohesiveZone(), updateYourselfCZ(), XfemElementInterface(), and oofem::XfemStructuralElementInterface::XfemElementInterface_updateIntegrationRule().
| std :: vector< std :: unique_ptr< IntegrationRule > > oofem::XfemElementInterface::mpCZIntegrationRules_tmp |
Definition at line 151 of file xfemelementinterface.h.
Referenced by oofem::XfemStructuralElementInterface::XfemElementInterface_updateIntegrationRule().
| bool oofem::XfemElementInterface::mUsePlaneStrain |
Flag that tells if plane stress or plane strain is assumed.
Definition at line 86 of file xfemelementinterface.h.
Referenced by ComputeBOrBHMatrix(), oofem::XfemStructuralElementInterface::giveCZInputRecord(), giveMaterialMode(), oofem::XfemStructuralElementInterface::initializeCZFrom(), XfemElementInterface(), oofem::XfemStructuralElementInterface::XfemElementInterface_computeConstitutiveMatrixAt(), oofem::XfemStructuralElementInterface::XfemElementInterface_computeStressVector(), and oofem::XfemStructuralElementInterface::XfemStructuralElementInterface().