Mechanics of Defect Evolution Library
Loading...
Searching...
No Matches
SphericalInclusionIndividualSpecification.cpp
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_SphericalInclusionIndividualSpecification_cpp_
9#define model_SphericalInclusionIndividualSpecification_cpp_
10
12
13namespace model
14{
16 /* init */ MicrostructureSpecificationBase("SphericalInclusion","Individual")
17// /* init */,allowOverlap(false)
18// /* init */,allowOutside(false)
19 {
20
21 }
22
24 /* init */ MicrostructureSpecificationBase("SphericalInclusion","Individual",fileName)
25 /* init */,radii_SI(this->parser->readArray<double>("radii_SI",true))
26 /* init */,centers(radii_SI.size()? this->parser->readMatrix<double>("centers",radii_SI.size(),3,true) : Eigen::Matrix<double,Eigen::Dynamic,3>::Zero(0,3))
27 /* init */,crystalEigenDistortions(radii_SI.size()? this->parser->readMatrix<double>("crystalEigenDistortions",radii_SI.size(),3*3,true) : Eigen::Matrix<double,Eigen::Dynamic,3>::Zero(0,3))
28 /* init */,velocityReductionFactors(radii_SI.size()? this->parser->readArray<double>("velocityReductionFactors",true) : std::vector<double>())
29 /* init */,phaseIDs(radii_SI.size()? this->parser->readArray<int>("phaseIDs",true) : std::vector<int>())
30 /* init */,allowOverlap(radii_SI.size()? this->parser->readScalar<int>("allowOverlap",true) : false)
31 /* init */,allowOutside(radii_SI.size()? this->parser->readScalar<int>("allowOutside",true) : false)
32 {
33 if(radii_SI.size())
34 {
35// const std::vector<int> periodicDipoleExitFaceIDs(this->parser->readArray<int>("periodicDipoleExitFaceIDs",true));
36// const Eigen::Matrix<double,Eigen::Dynamic,3> centers(this->parser->readMatrix<double>("centers",radii_SI.size(),3,true));
37// const Eigen::Matrix<double,Eigen::Dynamic,3*3> crystalEigenDistortions(this->parser->readMatrix<double>("crystalEigenDistortions",radii_SI.size(),3*3,true));
38// const std::vector<double> velocityReductionFactors(this->parser->readArray<double>("inclusionVelocityReductionFactors",true));
39// const std::vector<int> phaseIDs(this->parser->readArray<int>("phaseIDs",true));
40
41 if(int(radii_SI.size())!=centers.rows())
42 {
43 throw std::runtime_error("radii_SI.size()="+std::to_string(radii_SI.size())+" NOT EQUAL TO centers.rows()="+std::to_string(centers.rows()));
44 }
45 if(int(radii_SI.size())!=crystalEigenDistortions.rows())
46 {
47 throw std::runtime_error("radii_SI.size()="+std::to_string(radii_SI.size())+" NOT EQUAL TO crystalEigenDistortions.rows()="+std::to_string(crystalEigenDistortions.rows()));
48 }
49 if(radii_SI.size()!=velocityReductionFactors.size())
50 {
51 throw std::runtime_error("radii_SI.size()="+std::to_string(radii_SI.size())+" NOT EQUAL TO velocityReductionFactors.size()="+std::to_string(velocityReductionFactors.size()));
52 }
53 if(radii_SI.size()!=phaseIDs.size())
54 {
55 throw std::runtime_error("radii_SI.size()="+std::to_string(radii_SI.size())+" NOT EQUAL TO phaseIDs.size()="+std::to_string(phaseIDs.size()));
56 }
57 }
58 }
59}
60#endif
the R vector(source to field) R
const std::unique_ptr< TextFileParser > parser
MicrostructureSpecificationBase(const std::string &type_in, const std::string &style_in)
Eigen::Matrix< double, Eigen::Dynamic, 3 *3 > crystalEigenDistortions