8#ifndef model_MicrostructureBase_H_
9#define model_MicrostructureBase_H_
46 const std::string
tag;
58 virtual double getDt()
const = 0;
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;
LagrangeNode< ElementType > NodeType
static constexpr int mSize
static constexpr int iSize
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
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
FiniteElement< ElementType > FiniteElementType
DefectiveCrystalBase< dim >::ElementType ElementType
Eigen::Matrix< double, iSize, 1 > VectorISize
Simplex< dim, dim > SimplexDim
MicrostructureContainer< dim > MicrostructureContainerType
virtual MatrixDim stress(const VectorDim &, const NodeType *const, const ElementType *const, const SimplexDim *const) const =0
double timeSinceLastUpdate() const
virtual MatrixDim averageStress() const =0
static constexpr int mSize
virtual ~MicrostructureBase()=default