Mechanics of Defect Evolution Library
Loading...
Searching...
No Matches
src/DefectiveCrystal/DefectiveCrystalParameters.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_DefectiveCrystalParameters_cpp_
9#define model_DefectiveCrystalParameters_cpp_
10
11#include <cfloat>
13
14namespace model
15{
16
18 {
19 // Menage restart
20 IDreader<1,400,double> vReader(traitsIO.fFolder+"/F");
21 vReader.readLabelsFile(traitsIO.fFolder+"/F_labels.txt");
22 if (vReader.isGood(0,true))
23 {// F/F_0.txt exists
24 vReader.read(0,true);
25 if(vReader.empty())
26 {
27 // DDqt opens the history files for append even when no
28 // simulation steps are run. An empty history has no restart
29 // time data; retain defaults and the explicitly requested frame.
30 if(runID<0)
31 {
32 runID=0;
33 }
34 }
35 else if(runID<0)
36 {// Restart from last available step
37 if(vReader.size())
38 {// at least a line is available
39// vReader.readLabelsFile("F/F_labels.txt");
40 runID=vReader.rbegin()->first;
41 totalTime=vReader.last("time [b/cs]");
42 dt=vReader.last("dt [b/cs]");
43 }
44 else
45 {// file is empty, keep default initialization
46 runID=0;
47 }
48 }
49 else
50 {// Restart from specific runID
51// const auto iter=vReader.find(runID);
52 totalTime=vReader(runID,"time [b/cs]");
53 dt=vReader(runID,"dt [b/cs]");
54 }
55 }
56 else
57 {// F/F_0.txt is not there, keep default initialization
58 std::cout<<"Unable to read F/F_0.txt"<<std::endl;
59 runID=0;
60 }
61
62 std::cout<<"starting at time step "<<runID<<std::endl;
63 std::cout<<"totalTime= "<<totalTime<<std::endl;
64 std::cout<<"dt= "<<dt<<std::endl;
65 }
66
67 /**********************************************************************/
68// std::set<int> DefectiveCrystalParameters::getSubCyclingSet(const std::vector<int> &inpVector)
69// {
70// std::set<int> temp;
71// for (const auto &iv : inpVector)
72// {
73// temp.insert(iv);
74// }
75// return temp;
76// }
77
78 /**********************************************************************/
80 /* init */ traitsIO(folderName)
81 /* init */,useFEM(TextFileParser(traitsIO.dcFile).readScalar<int>("useFEM",true))
82// /* init */,useElasticDeformation(TextFileParser(traitsIO.dcFile).readScalar<int>("useElasticDeformation",true))
83// /* init */,useDislocations(TextFileParser(traitsIO.dcFile).readScalar<int>("useDislocations",true))
84// /* init */,useClusterDynamics(TextFileParser(traitsIO.dcFile).readScalar<int>("useClusterDynamics",true))
85// /* init */,useCracks(TextFileParser(traitsIO.dcFile).readScalar<int>("useCracks",true))
86// /* init */,useInclusions(TextFileParser(traitsIO.dcFile).readScalar<int>("useInclusions",true))
87 /* init */,physics(TextFileParser(traitsIO.dcFile).readString("physics",true))
88 /* init */,Nsteps(TextFileParser(traitsIO.dcFile).readScalar<size_t>("Nsteps",true))
89 /* init */,maxResolveSteps(TextFileParser(traitsIO.dcFile).readScalar<int>("maxResolveSteps",true))
90// /* init */,useSubCycling(TextFileParser(traitsIO.dcFile).readScalar<int>("useSubCycling",true))
91// /* init */,subcyclingBins(getSubCyclingSet(TextFileParser(traitsIO.dcFile).readArray<int>("subcyclingBins",true)))
92// /* init */,use_stochasticForce(TextFileParser(traitsIO.dcFile).readScalar<int>("use_stochasticForce",true))
93 /* init */,periodicFaceIDs(TextFileParser(traitsIO.polyFile).template readSet<int>("periodicFaceIDs",true))
94 /* init */,dtMax(TextFileParser(traitsIO.dcFile).template readScalar<double>("dtMax",true))
95 /* init */,outputFrequency(TextFileParser(traitsIO.dcFile).readScalar<int>("outputFrequency",true))
96 /* init */,outputBinary(TextFileParser(traitsIO.dcFile).readScalar<int>("outputBinary",true))
97 /* init */,runID(TextFileParser(traitsIO.dcFile).readScalar<long int>("startAtTimeStep",true))
98 /* init */,totalTime(0.0)
99 /* init */,dt(10.0)
100 {
101
102 if (Nsteps < 0)
103 {
104 throw std::runtime_error("Nsteps MUST BE >= 0.");
105 }
106
107 if (dtMax < FLT_EPSILON)
108 {
109 throw std::runtime_error("dtMax must be > FLT_EPSILON.");
110 }
111
113
114
115 }
116
117
118 }
119#endif
A class template.
Definition IDreader.h:55
void readLabelsFile(const std::string &labelsFileName)
Definition IDreader.h:174
bool read(const long long int &frameN, const bool &useTXT)
Definition IDreader.h:264
const T & first(const std::string &label)
Definition IDreader.h:220
bool isGood(const long long int &frameN, const bool &useTXT) const
Definition IDreader.h:255
const T & last(const std::string &label)
Definition IDreader.h:229
const DefectiveCrystalTraitsIO traitsIO