Mechanics of Defect Evolution Library
Loading...
Searching...
No Matches
EllipsoidalInclusionIO.h
Go to the documentation of this file.
1/* This file is part of MoDELib, the Mechanics Of Defects Evolution Library.
2 * MoDELib is distributed without any warranty under the
3 * GNU General Public License (GPL) v2 <http://www.gnu.org/licenses/>.
4 */
5#ifndef model_EllipsoidalInclusionIO_H_
6#define model_EllipsoidalInclusionIO_H_
7
8#include <cstddef>
9#include <iomanip>
10#include <sstream>
11#include <Eigen/Dense>
12
13namespace model
14{
15 template <int dim> class EllipsoidalInclusion;
16 template <int dim> struct EllipsoidalInclusionIO
17 {
18 static_assert(dim == 3, "EllipsoidalInclusionIO requires dim=3");
19 typedef Eigen::Matrix<double, dim, dim> MatrixDim;
20 typedef Eigen::Matrix<double, dim, 1> VectorDim;
21
22 std::size_t inclusionID;
24 MatrixDim axes; // Columns are mutually orthogonal semiaxis vectors.
28
30
31 EllipsoidalInclusionIO(const std::size_t &inclusionID_in, const VectorDim &C_in, const MatrixDim &axes_in,
32 const MatrixDim &eT_in, const double &mobilityReduction_in, const int &phaseID_in);
34 EllipsoidalInclusionIO(std::stringstream &ss);
35
36 // One record: ID, C, axes (row-major), eT (row-major), mobility, phase.
37 // Material constants and numerical settings are supplied when reconstructing
38 // the inclusion, as material constants are for SphericalInclusionIO.
39 void write(std::ostream &os) const;
40 template <class T> friend T &operator<<(T &os, const EllipsoidalInclusionIO<dim> &ei)
41 {
42 ei.write(os);
43 return os;
44 }
45 };
46} // namespace model
47#endif
Eigen::Matrix< double, dim, dim > MatrixDim
EllipsoidalInclusionIO(const EllipsoidalInclusion< dim > &ei)
Eigen::Matrix< double, dim, 1 > VectorDim
void write(std::ostream &os) const
friend T & operator<<(T &os, const EllipsoidalInclusionIO< dim > &ei)
newsubseg ss[0]