Mechanics of Defect Evolution Library
Loading...
Searching...
No Matches
MicrostructureBase.h
Go to the documentation of this file.
1/* This file is part of MoDELib, the Mechanics Of Defects Evolution Library.
2 *
3 *
4 * MoDELib is distributed without any warranty under the
5 * GNU General Public License (GPL) v2 <http://www.gnu.org/licenses/>.
6 */
7
8#ifndef model_MicrostructureBase_H_
9#define model_MicrostructureBase_H_
10
11#include <vector>
12#include <fstream>
17
18namespace model
19{
20
21 template <int dim>
23
24 template <int dim>
26 {
27
30
35
37
38 typedef Eigen::Matrix<double,dim,dim> MatrixDim;
39 typedef Eigen::Matrix<double,dim,1> VectorDim;
40 typedef Eigen::Matrix<double,mSize,1> VectorMSize;
41 typedef Eigen::Matrix<double,iSize,1> VectorISize;
42
43 MicrostructureBase(const std::string& tag_in,MicrostructureContainer<dim>& m_in);
44 virtual ~MicrostructureBase() = default;
45
46 const std::string tag;
48
50
51 double timeSinceLastUpdate() const;
52 std::set<const Grain<dim>*> pointGrains(const VectorDim& x, const NodeType* const node, const ElementType* const ele,const SimplexDim* const guess) const;
53
54
55 virtual void initializeConfiguration(const DefectiveCrystalConfigIO<dim>& configIO,const std::ofstream& f_file,const std::ofstream& F_labels) = 0;
56 virtual void solve() = 0;
57 virtual void reSolve() = 0;
58 virtual double getDt() const = 0;
59 virtual void output(DefectiveCrystalConfigIO<dim>& configIO,DefectiveCrystalAuxIO<dim>& auxIO,std::ofstream& f_file,std::ofstream& F_labels) const = 0;
60 virtual void updateConfiguration() = 0;
63 virtual VectorDim displacement(const VectorDim&, const NodeType* const, const ElementType* const,const SimplexDim* const) const = 0;
64 virtual MatrixDim stress(const VectorDim&, const NodeType* const, const ElementType* const,const SimplexDim* const) const = 0;
65 virtual MatrixDim averageStress() const = 0;
66 virtual VectorDim inelasticDisplacementRate(const VectorDim&, const NodeType* const, const ElementType* const,const SimplexDim* const) const = 0;
67 virtual VectorMSize mobileConcentration(const VectorDim&, const NodeType* const, const ElementType* const,const SimplexDim* const) const = 0;
68 virtual VectorISize immobileClusters(const VectorDim&, const NodeType* const, const ElementType* const,const SimplexDim* const) const = 0;
69
70 Eigen::Matrix<double,Eigen::Dynamic,dim> displacement(Eigen::Ref<const Eigen::Matrix<double,Eigen::Dynamic,dim>>) const;
71 std::vector<Eigen::Matrix<double,dim,dim>> stress(Eigen::Ref<const Eigen::Matrix<double,Eigen::Dynamic,dim>>) const;
72
73 };
74
75}
76#endif
LagrangeNode< ElementType > NodeType
x
Definition int_R.m:12
LagrangeElement< 3, 2 > ElementType
Eigen::Matrix< double, Eigen::Dynamic, dim > displacement(Eigen::Ref< const Eigen::Matrix< double, Eigen::Dynamic, dim > >) const
Eigen::Matrix< double, mSize, 1 > VectorMSize
std::vector< Eigen::Matrix< double, dim, dim > > stress(Eigen::Ref< const Eigen::Matrix< double, Eigen::Dynamic, dim > >) const
virtual VectorDim displacement(const VectorDim &, const NodeType *const, const ElementType *const, const SimplexDim *const) const =0
Eigen::Matrix< double, dim, dim > MatrixDim
virtual void output(DefectiveCrystalConfigIO< dim > &configIO, DefectiveCrystalAuxIO< dim > &auxIO, std::ofstream &f_file, std::ofstream &F_labels) const =0
std::set< const Grain< dim > * > pointGrains(const VectorDim &x, const NodeType *const node, const ElementType *const ele, const SimplexDim *const guess) const
virtual void reSolve()=0
ElementType::NodeType NodeType
virtual VectorMSize mobileConcentration(const VectorDim &, const NodeType *const, const ElementType *const, const SimplexDim *const) const =0
MicrostructureBase(const std::string &tag_in, MicrostructureContainer< dim > &m_in)
virtual MatrixDim averagePlasticDistortionRate() const =0
virtual MatrixDim averagePlasticDistortion() const =0
virtual VectorDim inelasticDisplacementRate(const VectorDim &, const NodeType *const, const ElementType *const, const SimplexDim *const) const =0
Eigen::Matrix< double, dim, 1 > VectorDim
virtual void updateConfiguration()=0
virtual void initializeConfiguration(const DefectiveCrystalConfigIO< dim > &configIO, const std::ofstream &f_file, const std::ofstream &F_labels)=0
virtual VectorISize immobileClusters(const VectorDim &, const NodeType *const, const ElementType *const, const SimplexDim *const) const =0
MicrostructureContainerType & microstructures
virtual double getDt() const =0
static constexpr int iSize
virtual void solve()=0
FiniteElement< ElementType > FiniteElementType
DefectiveCrystalBase< dim >::ElementType ElementType
Eigen::Matrix< double, iSize, 1 > VectorISize
Simplex< dim, dim > SimplexDim
const std::string tag
MicrostructureContainer< dim > MicrostructureContainerType
virtual MatrixDim stress(const VectorDim &, const NodeType *const, const ElementType *const, const SimplexDim *const) const =0
virtual MatrixDim averageStress() const =0
static constexpr int mSize
virtual ~MicrostructureBase()=default