Mechanics of Defect Evolution Library
Loading...
Searching...
No Matches
ElasticDeformation.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_ElasticDeformation_H_
9#define model_ElasticDeformation_H_
10
11#ifdef MODELIB_CHOLMOD // SuiteSparse Cholmod module
12#include <Eigen/CholmodSupport>
13#endif
14
17#include <IntegrationDomain.h>
18#include <GaussLegendre.h>
20#include <WeakProblem.h>
22#include <FEMLoadController.h>
23
24namespace model
25{
26 template<int dim>
28{
39
40 using DirectSolverType=Eigen::SparseLU<typename ElasticDeformationFEM<dim>::SparseMatrixType>;
41 using IterativeSolverType=Eigen::BiCGSTAB<typename ElasticDeformationFEM<dim>::SparseMatrixType>;
43
45 const std::unique_ptr<ElasticDeformationFEM<dim>> elasticDeformationFEM;
46 const std::unique_ptr<UniformControllerType> uniformLoadController;
49 std::shared_ptr<FEMControllerType> femLoadController;
50 std::shared_ptr<WeakProblemType> weakProblemSolver;
51 Eigen::VectorXd zDot;
53
55 void initializeConfiguration(const DefectiveCrystalConfigIO<dim>& configIO,const std::ofstream& f_file,const std::ofstream& F_labels) override;
56 void solve() override;
57 void reSolve() override;
58 double getDt() const override;
59 void output(DefectiveCrystalConfigIO<dim>& configIO,DefectiveCrystalAuxIO<dim>& auxIO,std::ofstream& f_file,std::ofstream& F_labels) const override;
60 void updateConfiguration() override;
61 MatrixDim averagePlasticDistortion() const override ;
63 VectorDim displacement(const VectorDim&,const NodeType* const,const ElementType* const,const SimplexDim* const) const override;
64 MatrixDim stress(const VectorDim&,const NodeType* const,const ElementType* const,const SimplexDim* const) const override;
65 MatrixDim averageStress() const override;
66 VectorDim inelasticDisplacementRate(const VectorDim&, const NodeType* const, const ElementType* const,const SimplexDim* const) const override;
67 VectorMSize mobileConcentration(const VectorDim&, const NodeType* const, const ElementType* const,const SimplexDim* const) const override;
68 VectorISize immobileClusters(const VectorDim&, const NodeType* const, const ElementType* const,const SimplexDim* const) const override;
69 void initializeSolver();
71};
72}
73#endif
74
MatrixDim averageStress() const override
const std::unique_ptr< ElasticDeformationFEM< dim > > elasticDeformationFEM
FEMLoadController< typename ElasticDeformationFEM< dim >::TrialFunctionType > FEMControllerType
MicrostructureBase< dim >::MatrixDim MatrixDim
VectorDim inelasticDisplacementRate(const VectorDim &, const NodeType *const, const ElementType *const, const SimplexDim *const) const override
MicrostructureContainer< dim > MicrostructureContainerType
double getDt() const override
const std::unique_ptr< UniformControllerType > uniformLoadController
Eigen::SparseLU< typename ElasticDeformationFEM< dim >::SparseMatrixType > DirectSolverType
MicrostructureBase< dim >::VectorDim VectorDim
VectorMSize mobileConcentration(const VectorDim &, const NodeType *const, const ElementType *const, const SimplexDim *const) const override
MicrostructureBase< dim >::VectorMSize VectorMSize
void initializeConfiguration(const DefectiveCrystalConfigIO< dim > &configIO, const std::ofstream &f_file, const std::ofstream &F_labels) override
MatrixDim averagePlasticDistortionRate() const override
MatrixDim stress(const VectorDim &, const NodeType *const, const ElementType *const, const SimplexDim *const) const override
void output(DefectiveCrystalConfigIO< dim > &configIO, DefectiveCrystalAuxIO< dim > &auxIO, std::ofstream &f_file, std::ofstream &F_labels) const override
MicrostructureBase< dim >::VectorISize VectorISize
MicrostructureBase< dim >::SimplexDim SimplexDim
MatrixDim averagePlasticDistortion() const override
std::shared_ptr< FEMControllerType > femLoadController
ElasticDeformation(MicrostructureContainerType &mc)
Eigen::BiCGSTAB< typename ElasticDeformationFEM< dim >::SparseMatrixType > IterativeSolverType
WeakProblem< DirectSolverType, IterativeSolverType > WeakProblemType
UniformController< SymmetricVoigtTraits< dim >::voigtSize > UniformControllerType
MicrostructureBase< dim >::NodeType NodeType
std::shared_ptr< WeakProblemType > weakProblemSolver
MicrostructureBase< dim >::FiniteElementType FiniteElementType
VectorDim displacement(const VectorDim &, const NodeType *const, const ElementType *const, const SimplexDim *const) const override
VectorISize immobileClusters(const VectorDim &, const NodeType *const, const ElementType *const, const SimplexDim *const) const override
MicrostructureBase< dim >::ElementType ElementType
Eigen::Matrix< double, mSize, 1 > VectorMSize
Eigen::Matrix< double, dim, dim > MatrixDim
ElementType::NodeType NodeType
MicrostructureBase(const std::string &tag_in, MicrostructureContainer< dim > &m_in)
Eigen::Matrix< double, dim, 1 > VectorDim
FiniteElement< ElementType > FiniteElementType
DefectiveCrystalBase< dim >::ElementType ElementType
Eigen::Matrix< double, iSize, 1 > VectorISize
Simplex< dim, dim > SimplexDim