95void LinElBranchFunction :: evaluateEnrFuncAt(std :: vector< double > &oEnrFunc,
const double &iR,
const double &iTheta)
const
97 oEnrFunc.push_back( sqrt(iR) * sin(0.5 * iTheta) );
98 oEnrFunc.push_back( sqrt(iR) * sin(0.5 * iTheta) * sin(iTheta) );
99 oEnrFunc.push_back( sqrt(iR) * cos(0.5 * iTheta) );
100 oEnrFunc.push_back( sqrt(iR) * cos(0.5 * iTheta) * sin(iTheta) );
103void LinElBranchFunction :: evaluateEnrFuncDerivAt(std :: vector< FloatArray > &oEnrFuncDeriv,
const double &iR,
const double &iTheta)
const
109 const double drdx = cos(iTheta);
110 const double drdy = sin(iTheta);
111 const double dtdx = -( 1.0 / iR ) * sin(iTheta);
112 const double dtdy = ( 1.0 / iR ) * cos(iTheta);
129 const double dP1dr = ( 1.0 / ( 2.0 * sqrt(iR) ) ) * sin(0.5 * iTheta);
130 const double dP1dt = 0.5 * sqrt(iR) * cos(0.5 * iTheta);
131 oEnrFuncDeriv.push_back(
Vec2( dP1dr *drdx + dP1dt *dtdx, dP1dr *drdy + dP1dt *dtdy ));
134 const double dP2dr = ( 1.0 / ( 2.0 * sqrt(iR) ) ) * sin(0.5 * iTheta) * sin(iTheta);
135 const double dP2dt = 0.5 * sqrt(iR) * cos(0.5 * iTheta) * sin(iTheta) + sqrt(iR) * sin(0.5 * iTheta) * cos(iTheta);
136 oEnrFuncDeriv.push_back(
Vec2( dP2dr *drdx + dP2dt *dtdx, dP2dr *drdy + dP2dt *dtdy ));
139 const double dP3dr = ( 1.0 / ( 2.0 * sqrt(iR) ) ) * cos(0.5 * iTheta);
140 const double dP3dt = -0.5 * sqrt(iR) * sin(0.5 * iTheta);
141 oEnrFuncDeriv.push_back(
Vec2( dP3dr *drdx + dP3dt *dtdx, dP3dr *drdy + dP3dt *dtdy ));
144 const double dP4dr = ( 1.0 / ( 2.0 * sqrt(iR) ) ) * cos(0.5 * iTheta) * sin(iTheta);
145 const double dP4dt = -0.5 * sqrt(iR) * sin(0.5 * iTheta) * sin(iTheta) + sqrt(iR) * cos(0.5 * iTheta) * cos(iTheta);
146 oEnrFuncDeriv.push_back(
Vec2( dP4dr *drdx + dP4dt *dtdx, dP4dr *drdy + dP4dt *dtdy ));
172void CohesiveBranchFunction :: evaluateEnrFuncDerivAt(std :: vector< FloatArray > &oEnrFuncDeriv,
const double &iR,
const double &iTheta)
const
178 const double drdx = cos(iTheta);
179 const double drdy = sin(iTheta);
180 const double dtdx = -( 1.0 / iR ) * sin(iTheta);
181 const double dtdy = ( 1.0 / iR ) * cos(iTheta);
187 const double dP1dt = 0.5 * pow(iR,
mExponent) * cos(0.5 * iTheta);
188 oEnrFuncDeriv.push_back(
Vec2( dP1dr *drdx + dP1dt *dtdx, dP1dr *drdy + dP1dt *dtdy ));