85 bool flipTangent =
false;
88 double r = 0.0, theta = 0.0;
94 for (
double val:oEnrFunc ) {
95 if ( !std :: isfinite(val) ) {
96 printf(
"r: %e theta: %e\n", r, theta);
109 bool flipTangent =
false;
112 double r = 0.0, theta = 0.0;
116 size_t sizeStart = oEnrFuncDeriv.size();
128 for (
size_t j = sizeStart; j < oEnrFuncDeriv.size(); j++ ) {
130 enrFuncDerivGlob.
beProductOf(E, oEnrFuncDeriv [ j ]);
131 oEnrFuncDeriv [ j ] = enrFuncDerivGlob;
140 double radius = gpCoord.
distance(xTip);
142 std :: vector< double >jumps;
145 oEnrFuncJumps.insert( oEnrFuncJumps.end(), jumps.begin(), jumps.end() );
virtual IRResultType initializeFrom(InputRecord *ir)
TipInfo mTipInfo
reference to the associated enrichment item
virtual void giveJump(std::vector< double > &oJumps) const
double & at(int i)
Coefficient access function.
TipInfo gathers useful information about a crack tip, like its position and tangent direction...
Base class for dof managers.
EnrFrontLinearBranchFuncOneEl.
virtual int giveNumEnrichments(const DofManager &iDMan) const
virtual ~EnrFrontLinearBranchFuncOneEl()
void MarkTipElementNodesAsFront(std::unordered_map< int, NodeEnrichmentType > &ioNodeEnrMarkerMap, XfemManager &ixFemMan, const std::unordered_map< int, double > &iLevelSetNormalDirMap, const std::unordered_map< int, double > &iLevelSetTangDirMap, const TipInfo &iTipInfo)
Several enrichment fronts enrich all nodes in the tip element.
double distance(const FloatArray &x) const
Computes the distance between position represented by receiver and position given as parameter...
virtual void evaluateEnrFuncAt(std::vector< double > &oEnrFunc, const double &iR, const double &iTheta) const
virtual const char * giveInputRecordName() const
void beProductOf(const FloatMatrix &aMatrix, const FloatArray &anArray)
Receiver becomes the result of the product of aMatrix and anArray.
LinElBranchFunction * mpBranchFunc
virtual void MarkNodesAsFront(std::unordered_map< int, NodeEnrichmentType > &ioNodeEnrMarkerMap, XfemManager &ixFemMan, const std::unordered_map< int, double > &iLevelSetNormalDirMap, const std::unordered_map< int, double > &iLevelSetTangDirMap, const TipInfo &iTipInfo)
MarkNodesAsFront: Intput: -ioNodeEnrMarker: A vector with the same size as the number of nodes in the...
const FloatArray & giveGlobalCoordinates()
virtual void evaluateEnrFuncAt(std::vector< double > &oEnrFunc, const EfInput &iEfInput) const
Class representing vector of real numbers.
void computeCrackTangent(FloatArray &oTangent, FloatArray &oNormal, bool &oFlipTangent, const EfInput &iEfInput) const
Implementation of matrix containing floating point numbers.
This class manages the xfem part.
IRResultType
Type defining the return values of InputRecord reading operations.
virtual void giveInputRecord(DynamicInputRecord &input)
virtual void evaluateEnrFuncDerivAt(std::vector< FloatArray > &oEnrFuncDeriv, const EfInput &iEfInput, const FloatArray &iGradLevelSet) const
void resize(int rows, int cols)
Checks size of receiver towards requested bounds.
static void calcPolarCoord(double &oR, double &oTheta, const FloatArray &iOrigin, const FloatArray &iPos, const FloatArray &iN, const FloatArray &iT, const EfInput &iEfInput, bool iFlipTangent)
void setColumn(const FloatArray &src, int c)
Sets the values of the matrix in specified column.
REGISTER_EnrichmentFront(EnrFrontCohesiveBranchFuncOneEl)
virtual void evaluateEnrFuncJumps(std::vector< double > &oEnrFuncJumps, GaussPoint &iGP, int iNodeInd, bool iGPLivesOnCurrentCrack, const double &iNormalSignDist) const
virtual void evaluateEnrFuncDerivAt(std::vector< FloatArray > &oEnrFuncDeriv, const double &iR, const double &iTheta) const
the oofem namespace is to define a context or scope in which all oofem names are defined.
Class representing the four classical linear elastic branch functions.
Class representing integration point in finite element program.