50SolutionStatusExportModule :: SolutionStatusExportModule(
int n,
EngngModel *e, FILE *out) :
ExportModule(n, e), outputFile(out)
57 ExportModule :: initializeFrom(ir);
59 std::string formatStr(
"m:s:a:nite:t:dt:st:cr");
63 std::istringstream input(formatStr);
65 while(std::getline(input, token,
':')) {
66 recs.push_back(token);
72SolutionStatusExportModule :: doOutput(
TimeStep *tStep,
bool forcedOutput)
80 for (
auto rec: this->
recs) {
83 }
else if (rec ==
"s") {
85 }
else if (rec ==
"a") {
87 }
else if (rec ==
"nite") {
89 }
else if (rec ==
"t") {
91 }
else if (rec ==
"dt") {
93 }
else if (rec ==
"cr") {
108 }
else if (rec ==
"st") {
109 int hours =
static_cast<int>(tStep->
solutionTime) / 3600;
110 int minutes = (
static_cast<int>(tStep->
solutionTime) % 3600) / 60;
112 fprintf(
outputFile,
"%02d:%02d:%04.1f ", hours, minutes, seconds);
113 }
else if (rec ==
"-") {
125 sprintf(
filename,
"%s.m%d", this->
emodel->giveOutputBaseFileName().c_str(), this->number);
130 time_t currtime = time(NULL);
131 fprintf(
outputFile,
"Job: %s\n", this->
emodel->giveReferenceFileName().c_str());
132 fprintf(
outputFile,
"%s\n\n", ctime(& currtime));
139 fprintf (
outputFile,
"\nAnalysis finished\n");
142 int rsec = 0, rmin = 0, rhrs = 0;
143 int usec = 0, umin = 0, uhrs = 0;
144 this->
emodel->giveAnalysisTime(rhrs, rmin, rsec, uhrs, umin, usec);
146 fprintf(
outputFile,
"Real time consumed: %03dh:%02dm:%02ds\n", rhrs, rmin, rsec);
147 fprintf(
outputFile,
"User time consumed: %03dh:%02dm:%02ds\n\n", uhrs, umin, usec);
151 fprintf (
outputFile,
"Total %d error(s) and %d warnings reported\n", ne, nw);
158SolutionStatusExportModule :: checkRecs()
160 std::string notrecognized;
161 for (
auto rec: this->
recs) {
162 if (!(rec ==
"m" || rec ==
"s" || rec ==
"a" || rec==
"nite" || rec ==
"t" ||
163 rec ==
"dt" || rec ==
"cr" || rec ==
"st" || rec==
"-")) {
164 notrecognized +=
" " + rec;
167 if (notrecognized.size()) {
168 OOFEM_WARNING (
"SolutionStatusExportModule: invalid tokens detected: %s", notrecognized.c_str());
174SolutionStatusExportModule :: printRecsHeader()
176 for (
auto rec: this->
recs) {
181 }
else if (rec ==
"s") {
183 }
else if (rec ==
"a") {
185 }
else if (rec ==
"nite") {
187 }
else if (rec ==
"t") {
189 }
else if (rec ==
"dt") {
191 }
else if (rec ==
"cr") {
193 }
else if (rec ==
"st") {
195 }
else if (rec ==
"-") {
201 std::string dashes (this->recs.size() * 11,
'-');
#define REGISTER_ExportModule(class)
EngngModel * emodel
Problem pointer.
bool testTimeStepOutput(TimeStep *tStep)
std::vector< std::string > recs
void initialize() override
void terminate() override
int numberOfAttempts
Number of attempts (reduction ot time incerement, etc) needed to reach convergence.
int giveMetaStepNumber()
Returns receiver's meta step number.
ConvergedReason convergedReason
Status of solution step (Converged,.
double giveTimeIncrement()
Returns solution step associated time increment.
double giveTargetTime()
Returns target time.
int numberOfIterations
Number of itarations needed to achieve convergence.
int giveNumber()
Returns receiver's number.
double solutionTime
time step solution time in seconds
#define OOFEM_WARNING(...)
Logger oofem_logger(Logger ::LOG_LEVEL_INFO)
OOFEM_EXPORT const char * OOFEM_GIT_HASH
OOFEM_EXPORT const char * HOST_TYPE
OOFEM_EXPORT const char * PRG_VERSION
OOFEM_EXPORT const char * MODULE_LIST
#define _IFT_SolutionStatusExportModule_format
Filename where rules are defined (normally the input file).