60 using namespace RotCoeff;
67 Mat3x3 Phi(1., phi*coeff[0]);
79 Mat3x3 Ga(1., phi*coeff[1]);
91 Phi =
Mat3x3(1., phi*coeff[0]);
94 Ga =
Mat3x3(1., phi*coeff[1]);
116 Mat3x3 GaI(1., phi*(-.5));
127 PhiIT =
Mat3x3(1., phi*coeff[0]);
130 GaIT =
Mat3x3(1., phi*.5);
149 cosphi = (Phi.
Trace() - 1.)/2.;
152 sinphi = unit.
Norm();
164 if (eet(2, 2) > eet(1, 1)) {
167 if (eet(3, 3) > eet(maxcol, maxcol)) {
170 unit = (eet.GetVec(maxcol)/
sqrt(eet(maxcol, maxcol)*(1. - cosphi)));
172 sinphi = -(unit.
Cross(Phi)).Trace()/2.;
173 unit *=
atan2(sinphi, cosphi);
187 L += (phi.
Cross(a)).Tens(phi*coeff[3]);
200 L -=
MatExp(phi,a*coeff[2]);
202 L += (phi.
Cross(a)).Tens(phi*coeff[3]);
203 L += (
MatExp(phi,phi)*
a).Tens(phi*coeff[4]);
213 MatExp Phi(1., phi*coeff[0]);
214 Phi +=
MatExp(phi, phi*coeff[1]);
224 MatExp Ga(1., phi*coeff[1]);
225 Ga +=
MatExp(phi, phi*coeff[2]);
235 Phi =
MatExp(1., phi*coeff[0]);
236 Phi +=
MatExp(phi, phi*coeff[1]);
238 Ga =
MatExp(1., phi*coeff[1]);
239 Ga +=
MatExp(phi, phi*coeff[2]);
250 GaIT +=
MatExp(phi, phi*coeffs[0]);
261 GaIT +=
MatExp(phi, phi*coeffs[0]);
273 PhiIT =
MatExp(1., phi*coeff[0]);
274 PhiIT +=
MatExp(phi, phi*coeff[1]);
276 GaIT =
MatExp(1., phi*.5);
277 GaIT +=
MatExp(phi, phi*coeffs[0]);
const Vec3 & GetVec(void) const
Mat3x3 DRot_IT(const Vec3 &phi)
Vec3 Cross(const Vec3 &v) const
const Mat3x3 & GetVec(void) const
MatrixExpression< TransposedMatrix< MatrixDirectExpr< Matrix< T, N_rows, N_cols > > >, N_cols, N_rows > Transpose(const Matrix< T, N_rows, N_cols > &A)
void CoeffC(const T1 &phi, const Vec3 &p, T2 *const coeff)
const MatCross_Manip MatCross
MatExp DRoTr_It(const VecExp &eta)
doublereal Norm(void) const
MatExp DRoTr_I(const VecExp &eta)
Mat3x3 DRot(const Vec3 &phi)
Vec3 VecRot(const Mat3x3 &Phi)
void RoTrAndDRoTr_It(const VecExp &eta, MatExp &HIt, MatExp &ThIt)
VecExp Helix(const MatExp &H)
void CoeffB(const T1 &phi, const Vec3 &p, T2 *const coeff)
doublereal Trace(void) const
MatExp RoTr(const VecExp &eta)
void CoeffCStar(const T1 &phi, const Vec3 &p, T2 *const coeff, T2 *const coeffs)
MatExp DRoTr(const VecExp &eta)
Mat3x3 Rot(const Vec3 &phi)
GradientExpression< UnaryExpr< FuncSqrt, Expr > > sqrt(const GradientExpression< Expr > &u)
Mat3x3 Elle(const Vec3 &phi, const Vec3 &a)
void CoeffA(const T1 &phi, const Vec3 &p, T2 *const coeff)
Mat3x3 Transpose(void) const
const MatCrossCross_Manip MatCrossCross
void RotAndDRot(const Vec3 &phi, Mat3x3 &Phi, Mat3x3 &Ga)
VecExp Cross(const VecExp &v) const
static const doublereal a
GradientExpression< BinaryExpr< FuncAtan2, LhsExpr, RhsExpr > > atan2(const GradientExpression< LhsExpr > &u, const GradientExpression< RhsExpr > &v)
void CoeffE(const T1 &phi, const Vec3 &p, T2 *const coeff)
const Mat3x3 & GetMom(void) const
void RotAndDRot_IT(const Vec3 &phi, Mat3x3 &PhiIT, Mat3x3 &GaIT)
void RoTrAndDRoTr(const VecExp &eta, MatExp &H, MatExp &Th)
Mat3x3 DRot_I(const Vec3 &phi)
MatExp Elle(const VecExp &phi, const VecExp &a)