37 typedef Eigen::Matrix<long int,dim,1>
VectorDimI;
53 const Eigen::Matrix<double,3,2> waveVectors((Eigen::Matrix<double,3,2>()<<0.0, 0.0,
58 const Eigen::Matrix<double,4,3>
f((Eigen::Matrix<double,4,3>()<<0.00,0.0, 0.0,
59 0.50,sqrt(3.0)/6.0, ISF,
60 0.25,sqrt(3.0)/12.0,USF,
61 1.00,sqrt(3.0)/3.0, MSF).finished());
64 const std::vector<Eigen::Matrix<double,2,1>> mirSymm;
65 const Eigen::Matrix<double,2,2>
A(
GlidePlaneBase(a1,a2,
nullptr).localBasis());
67 std::shared_ptr<GammaSurface> gammaSurface(
new GammaSurface(
A,waveVectors,
f,rotSymm,mirSymm));
76 const Eigen::Matrix<double,2,2>
A(
GlidePlaneBase(a1,
c,
nullptr).localBasis());
77 Eigen::Matrix<double,Eigen::Dynamic,3>
f(fr);
78 f.block(0,0,fr.rows(),2)=(
A*fr.block(0,0,fr.rows(),2).transpose()).transpose();
79 f.col(2)=fr.col(2)/(material.
mu_SI*material.
b_SI);
81 std::vector<Eigen::Matrix<double,2,1>> mirSymm;
82 mirSymm.push_back((Eigen::Matrix<double,2,1>()<<1.0,0.0).finished());
83 mirSymm.push_back((Eigen::Matrix<double,2,1>()<<0.0,1.0).finished());
85 std::shared_ptr<GammaSurface> gammaSurface(
new GammaSurface(
A,waveVectors,
f,rotSymm,mirSymm));
110 typedef Eigen::Matrix<long int,dim,1>
VectorDimI;
119 std::shared_ptr<GlidePlaneNoise> planeNoise(
new GlidePlaneNoise(material));
124 const double dBasal(ReciprocalLatticeDirectionType(a1.
cross(a2)).planeSpacing());
126 const std::shared_ptr<DislocationMobility> mobility(mobilitySelector.
getMobility(material,dislocationMobilityType));
128 for(
const auto& planeBase : plN)
130 if(std::fabs(planeBase.second->planeSpacing()-dBasal)<FLT_EPSILON)
132 const auto& b1(planeBase.second->primitiveVectors.first);
133 const auto& b2(planeBase.second->primitiveVectors.second);
134 const auto b3(b2-b1);
136 std::vector<RationalLatticeDirection<3>> slipDirs;
137 slipDirs.emplace_back(
Rational( 1,1),b1);
138 slipDirs.emplace_back(
Rational(-1,1),b1);
139 slipDirs.emplace_back(
Rational( 1,1),b2);
140 slipDirs.emplace_back(
Rational(-1,1),b2);
141 slipDirs.emplace_back(
Rational( 1,1),b3);
142 slipDirs.emplace_back(
Rational(-1,1),b3);
144 for(
const auto& slipDir : slipDirs)
146 temp.emplace(
temp.size(),
new SlipSystem(*planeBase.second, slipDir,mobility,planeNoise));
154 const double dBasal(ReciprocalLatticeDirectionType(a1.
cross(a2)).planeSpacing());
156 const std::shared_ptr<DislocationMobility> mobility(mobilitySelector.
getMobility(material,dislocationMobilityType));
158 for(
const auto& planeBase : plN)
160 if(std::fabs(planeBase.second->planeSpacing()-dBasal)<FLT_EPSILON)
162 const auto& b1(planeBase.second->primitiveVectors.first);
163 const auto& b2(planeBase.second->primitiveVectors.second);
164 const auto b3(b2-b1);
166 std::vector<RationalLatticeDirection<3>> slipDirs;
167 slipDirs.emplace_back(
Rational(1,3),b1-b3);
168 slipDirs.emplace_back(
Rational(1,3),b1-b2);
169 slipDirs.emplace_back(
Rational(1,3),b2-b1);
170 slipDirs.emplace_back(
Rational(1,3),b2-b3);
171 slipDirs.emplace_back(
Rational(1,3),b3-b2);
172 slipDirs.emplace_back(
Rational(1,3),b3-b1);
174 for(
const auto& slipDir : slipDirs)
176 temp.emplace(
temp.size(),
new SlipSystem(*planeBase.second, slipDir,mobility,planeNoise));
184 const double dPrismatic(ReciprocalLatticeDirectionType(a1.
cross(
c)).planeSpacing());
186 const std::shared_ptr<DislocationMobility> mobility(mobilitySelector.
getMobility(material,dislocationMobilityType));
188 for(
const auto& planeBase : plN)
190 if(std::fabs(planeBase.second->planeSpacing()-dPrismatic)<FLT_EPSILON)
192 const auto&
b(planeBase.second->primitiveVectors.first);
195 std::vector<RationalLatticeDirection<3>> slipDirs;
199 for(
const auto& slipDir : slipDirs)
201 temp.emplace(
temp.size(),
new SlipSystem(*planeBase.second, slipDir,mobility,planeNoise));
209 const double dPyramidal(ReciprocalLatticeDirectionType(a1.
cross(a2+
c)).planeSpacing());
211 const std::shared_ptr<DislocationMobility> mobility(mobilitySelector.
getMobility(material,dislocationMobilityType));
213 for(
const auto& planeBase : plN)
215 if(std::fabs(planeBase.second->planeSpacing()-dPyramidal)<FLT_EPSILON)
217 const auto&
b(planeBase.second->primitiveVectors.first);
220 std::vector<RationalLatticeDirection<3>> slipDirs;
224 for(
const auto& slipDir : slipDirs)
226 temp.emplace(
temp.size(),
new SlipSystem(*planeBase.second, slipDir,mobility,planeNoise));
Eigen::Matrix< Scalar, Eigen::Dynamic, Eigen::Dynamic > readMatrixCols(const std::string &key, const size_t &cols, const bool &verbose=false)
std::string readString(const std::string &key, const bool &verbose=false)
Scalar readScalar(const std::string &key, const bool &verbose=false)