16 static_assert(dim == 3,
"EllipsoidalInclusion requires dim=3");
17 typedef Eigen::Matrix<double, dim, dim> MatrixDim;
18 typedef Eigen::Matrix<double, dim, 1> VectorDim;
19 typedef Eigen::Matrix<double, 12, 1> Integrals;
27 const double &_mu,
const double &_mobilityReduction,
const int &_phaseID,
28 const std::shared_ptr<
SecondPhase<dim>> &sph,
const double quadratureTolerance = 1.0e-3,
29 const unsigned int quadratureMaxDepth = 30);
34 MatrixDim
stress(
const VectorDim &
x)
const override;
39 VectorDim axisSquared;
41 const double tolerance;
42 const unsigned int maxDepth;
43 Integrals interiorIntegrals;
45 struct InteriorStressCache
47 MatrixDim eigenstrain;
51 mutable std::shared_ptr<const InteriorStressCache> interiorStressCache;
56 double ellipsoidalCoordinate(
const VectorDim &r)
const;
57 Integrals integrate(
const double ell)
const;
EllipsoidalInclusion(const VectorDim &_C, const MatrixDim &_axes, const MatrixDim &_eT, const double &_nu, const double &_mu, const double &_mobilityReduction, const int &_phaseID, const std::shared_ptr< SecondPhase< dim > > &sph, const double quadratureTolerance=1.0e-3, const unsigned int quadratureMaxDepth=30)