47EnrFrontLinearBranchFuncRadius :: EnrFrontLinearBranchFuncRadius() :
48 mEnrichmentRadius(0.0),
52EnrFrontLinearBranchFuncRadius :: ~EnrFrontLinearBranchFuncRadius() { }
54void EnrFrontLinearBranchFuncRadius :: 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)
70 for (
int i = 1; i <= nNodes; i++ ) {
93int EnrFrontLinearBranchFuncRadius :: giveNumEnrichments(
const DofManager &iDMan)
const
98void EnrFrontLinearBranchFuncRadius :: evaluateEnrFuncAt(std :: vector< double > &oEnrFunc,
const EfInput &iEfInput)
const
110 bool flipTangent =
false;
113 double r = 0.0, theta = 0.0;
114 EnrichmentItem :: calcPolarCoord(r, theta, xTip, pos, n, t, iEfInput, flipTangent);
119void EnrFrontLinearBranchFuncRadius :: evaluateEnrFuncDerivAt(std :: vector< FloatArray > &oEnrFuncDeriv,
const EfInput &iEfInput,
const FloatArray &iGradLevelSet)
const
125 bool flipTangent =
false;
128 double r = 0.0, theta = 0.0;
129 EnrichmentItem :: calcPolarCoord(r, theta, xTip, iEfInput.
mPos, n, t, iEfInput, flipTangent);
132 size_t sizeStart = oEnrFuncDeriv.size();
133 mpBranchFunc.evaluateEnrFuncDerivAt(oEnrFuncDeriv, r, theta);
144 for (
size_t j = sizeStart; j < oEnrFuncDeriv.size(); j++ ) {
147 oEnrFuncDeriv [ j ] = enrFuncDerivGlob;
151void EnrFrontLinearBranchFuncRadius :: evaluateEnrFuncJumps(std :: vector< double > &oEnrFuncJumps,
GaussPoint &iGP,
int iNodeInd,
bool iGPLivesOnCurrentCrack,
const double &iNormalSignDist)
const
155 double radius =
distance(gpCoord, xTip);
157 std :: vector< double >jumps;
160 oEnrFuncJumps.insert( oEnrFuncJumps.end(), jumps.begin(), jumps.end() );
163void EnrFrontLinearBranchFuncRadius :: initializeFrom(
InputRecord &ir)
#define REGISTER_EnrichmentFront(class)
const FloatArray & giveCoordinates() const
int giveNumberOfDofManagers() const
Returns number of dof managers in domain.
DofManager * giveDofManager(int n)
LinElBranchFunction mpBranchFunc
const char * giveInputRecordName() const override
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)
TipInfo mTipInfo
reference to the associated enrichment item
void computeCrackTangent(FloatArray &oTangent, FloatArray &oNormal, bool &oFlipTangent, const EfInput &iEfInput) const
void beProductOf(const FloatMatrix &aMatrix, const FloatArray &anArray)
const FloatArray & giveGlobalCoordinates()
#define _IFT_EnrFrontLinearBranchFuncRadius_Radius
static FloatArray Vec2(const double &a, const double &b)
@ NodeEnr_START_AND_END_TIP
double distance(const FloatArray &x, const FloatArray &y)
double distance_square(const FloatArray &x, const FloatArray &y)