55 bool flipTangent =
false;
58 double r = 0.0, theta = 0.0;
64 for (
double val:oEnrFunc ) {
65 if ( !std :: isfinite(val) ) {
66 printf(
"r: %e theta: %e\n", r, theta);
79 bool flipTangent =
false;
82 double r = 0.0, theta = 0.0;
86 size_t sizeStart = oEnrFuncDeriv.size();
98 for (
size_t j = sizeStart; j < oEnrFuncDeriv.size(); j++ ) {
100 enrFuncDerivGlob.
beProductOf(E, oEnrFuncDeriv [ j ]);
101 oEnrFuncDeriv [ j ] = enrFuncDerivGlob;
110 double radius = gpCoord.
distance(xTip);
112 std :: vector< double >jumps;
115 oEnrFuncJumps.insert( oEnrFuncJumps.end(), jumps.begin(), jumps.end() );
EnrFrontCohesiveBranchFuncOneEl.
TipInfo mTipInfo
reference to the associated enrichment item
double & at(int i)
Coefficient access function.
TipInfo gathers useful information about a crack tip, like its position and tangent direction...
virtual void evaluateEnrFuncJumps(std::vector< double > &oEnrFuncJumps, GaussPoint &iGP, int iNodeInd, bool iGPLivesOnCurrentCrack, const double &iNormalSignDist) const
Base class for dof managers.
CohesiveBranchFunction * mpBranchFunc
virtual void evaluateEnrFuncDerivAt(std::vector< FloatArray > &oEnrFuncDeriv, const EfInput &iEfInput, const FloatArray &iGradLevelSet) const
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...
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.
virtual ~EnrFrontCohesiveBranchFuncOneEl()
double distance(const FloatArray &x) const
Computes the distance between position represented by receiver and position given as parameter...
virtual void evaluateEnrFuncDerivAt(std::vector< FloatArray > &oEnrFuncDeriv, const double &iR, const double &iTheta) const
void beProductOf(const FloatMatrix &aMatrix, const FloatArray &anArray)
Receiver becomes the result of the product of aMatrix and anArray.
const FloatArray & giveGlobalCoordinates()
Class representing vector of real numbers.
void computeCrackTangent(FloatArray &oTangent, FloatArray &oNormal, bool &oFlipTangent, const EfInput &iEfInput) const
Class representing a branch function for cohesive cracks.
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)
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.
virtual void evaluateEnrFuncAt(std::vector< double > &oEnrFunc, const EfInput &iEfInput) const
virtual void evaluateEnrFuncAt(std::vector< double > &oEnrFunc, const double &iR, const double &iTheta) const
virtual int giveNumEnrichments(const DofManager &iDMan) const
virtual void giveJump(std::vector< double > &oJumps) const
REGISTER_EnrichmentFront(EnrFrontCohesiveBranchFuncOneEl)
virtual IRResultType initializeFrom(InputRecord *ir)
the oofem namespace is to define a context or scope in which all oofem names are defined.
Class representing integration point in finite element program.
virtual const char * giveInputRecordName() const