28 const std::string& tag)
const
30 std::cout<<
"tag="<<tag<<std::endl;
31 std::stringstream sstream(tag);
32 std::string mobilityType;
33 sstream >> mobilityType;
34 std::cout<<
"mobilityType="<<mobilityType<<std::endl;
43 std::string edgeSuffix;
44 sstream >> edgeSuffix;
45 std::string screwSuffix;
46 sstream >> screwSuffix;
47 const auto edgeMobility(
getMobilityBase(material,parser.readString(
"mobility_"+ edgeSuffix)));
48 const auto screwMobility(
getMobilityBase(material,parser.readString(
"mobility_"+screwSuffix)));
61 std::string interpolationType;
62 sstream >> interpolationType;
65 std::map<double,std::shared_ptr<DislocationMobilityBase>> mobilityMap;
67 while (sstream >> angleDeg)
69 size_t foundUnderscore(angleDeg.find_last_of(
'_'));
70 if(foundUnderscore != std::string::npos)
72 const double angleRad(std::stod(angleDeg.substr(foundUnderscore+1))*std::numbers::pi/180.0);
74 mobilityMap[angleRad]=
getMobilityBase(material,parser.readString(
"mobility_"+ angleDeg));
78 throw std::runtime_error(angleDeg+
" NOT in the format label_angleDeg");
101 throw std::runtime_error(
"unknown interpolationType of type "+interpolationType);
107 throw std::runtime_error(
"unknown DislocationMobility of type "+mobilityType);
113 const std::string& tag)
const
115 std::stringstream sstream(tag);
116 std::string mobilityType;
117 sstream >> mobilityType;
158 std::string conjugateAngle_deg;
159 sstream >> conjugateAngle_deg;
176 std::stod(conjugateAngle_deg)));
180 throw std::runtime_error(
"unknown DislocationMobilityBase of type "+mobilityType);