Mechanics of Defect Evolution Library
Loading...
Searching...
No Matches
DefectiveCrystalBase.h
Go to the documentation of this file.
1/* This file is part of MoDELib, the Mechanics Of Defects Evolution Library.
2 *
3 *
4 * Additional contributors:
5 * Nicholas Huebner Julian <njulian@lanl.gov>
6 *
7 * MoDELib is distributed without any warranty under the
8 * GNU General Public License (GPL) v2 <http://www.gnu.org/licenses/>.
9 */
10
11
12#ifndef model_DefectiveCrystalBase_H_
13#define model_DefectiveCrystalBase_H_
14
15#include <string>
16#include <memory>
17#include <vector>
18#include <Eigen/Dense>
19
21#include <SimplicialMesh.h>
22#include <Polycrystal.h>
23#include <FiniteElement.h>
24#include <Math/VoigtTraits.h>
25
26namespace model
27{
28 template<int dim> struct DislocationDynamicsBase;
29 template<int dim> struct ClusterDynamicsBase;
30 template<int dim> struct ElasticDeformationBase;
31
32 template <int _dim>
34 {
35 // Shared data for MicrostructureGenerator and DefectiveCrystal.
36 static constexpr int dim=_dim;
37 typedef Eigen::Matrix<double,dim,1> VectorDim;
38 typedef Eigen::Matrix<double,dim,dim> MatrixDim;
42
43 DefectiveCrystalBase( const std::string& folderName);
46 const std::shared_ptr<const SimplicialMesh<dim>> meshOwner;
48
49 const std::vector<int> periodicImageSize;
50 const Eigen::Matrix<double,dim,Eigen::Dynamic> periodicLatticeBasis;
51 const Eigen::Matrix<double,dim,Eigen::Dynamic> periodicLatticeReciprocalBasis;
52 const std::vector<VectorDim> periodicShifts;
53 const std::shared_ptr<const Polycrystal<dim>> polyOwner;
55 std::shared_ptr<FiniteElement<ElementType>> fe;
56 const std::vector<std::string> activePhysics;
57 const std::shared_ptr<DislocationDynamicsBase<dim>> dislocationDynamicsBase;
58 const std::shared_ptr<ClusterDynamicsBase<dim>> clusterDynamicsBase;
59 const std::shared_ptr<ElasticDeformationBase<dim>> elasticDeformationBase;
60
61 bool hasPhysics(const std::string& name) const;
67
68 Eigen::VectorXd periodicCoordinates(const VectorDim& x) const;
69
70 };
71} // namespace model
72#endif
Class template for a Lagrange finite element of degree p on a d-dimensional Simplex.
Eigen::Matrix< double, 1, dim+1 > BaryType
x
Definition int_R.m:12
Eigen::VectorXd periodicCoordinates(const VectorDim &x) const
DefectiveCrystalParameters simulationParameters
DefectiveCrystalBase(const DefectiveCrystalBase &)=delete
const std::vector< std::string > activePhysics
const std::shared_ptr< const Polycrystal< dim > > polyOwner
LagrangeElement< 3, 2 > ElementType
const Polycrystal< dim > & poly
const Eigen::Matrix< double, dim, Eigen::Dynamic > periodicLatticeBasis
ElementType::BaryType BaryType
DefectiveCrystalBase & operator=(const DefectiveCrystalBase &)=delete
Eigen::Matrix< double, dim, dim > MatrixDim
const std::vector< int > periodicImageSize
static constexpr int dim
const SymmetricVoigtTraits< dim > voigtTraits
const SimplicialMesh< dim > & mesh
ElasticDeformationBase< dim > & elasticDeformation() const
const std::shared_ptr< const SimplicialMesh< dim > > meshOwner
const std::shared_ptr< ElasticDeformationBase< dim > > elasticDeformationBase
DefectiveCrystalBase< dim > DefectiveCrystalBaseType
const std::shared_ptr< ClusterDynamicsBase< dim > > clusterDynamicsBase
const std::vector< VectorDim > periodicShifts
const Eigen::Matrix< double, dim, Eigen::Dynamic > periodicLatticeReciprocalBasis
std::shared_ptr< FiniteElement< ElementType > > fe
DislocationDynamicsBase< dim > & dislocationDynamics() const
Eigen::Matrix< double, dim, 1 > VectorDim
const std::shared_ptr< DislocationDynamicsBase< dim > > dislocationDynamicsBase
ClusterDynamicsBase< dim > & clusterDynamics() const