Skip to content

Commit cb047f2

Browse files
authored
Patch: Added sim-time output to history and screen log
1 parent 5a519d0 commit cb047f2

File tree

4 files changed

+22
-10
lines changed

4 files changed

+22
-10
lines changed

include/common/globalconstants.hpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,7 @@ inline std::map<std::string, VOLUME_OUTPUT> VolOutput_Map{
178178
enum SCALAR_OUTPUT {
179179
WALL_TIME,
180180
ITER,
181+
SIM_TIME,
181182
MASS,
182183
RMS_FLUX,
183184
VTK_OUTPUT,
@@ -202,7 +203,8 @@ enum SCALAR_OUTPUT {
202203
};
203204

204205
inline std::map<std::string, SCALAR_OUTPUT> ScalarOutput_Map{ { "ITER", ITER },
205-
{ "WALL_TIME", WALL_TIME },
206+
{ "WALL_TIME", WALL_TIME },
207+
{ "SIM_TIME", SIM_TIME },
206208
{ "MASS", MASS },
207209
{ "RMS_FLUX", RMS_FLUX },
208210
{ "VTK_OUTPUT", VTK_OUTPUT },

include/solvers/snsolver_hpc.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ class SNSolverHPC
2424
unsigned long _startSysIdx;
2525
unsigned long _endSysIdx;
2626

27+
double _curSimTime;/*!< @brief current in-simulation time after current iteration */
2728
double _currTime; /*!< @brief wall-time after current iteration */
2829
Config* _settings; /*!< @brief config class for global information */
2930
Mesh* _mesh;

src/common/config.cpp

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -760,6 +760,7 @@ void Config::SetPostprocessing() {
760760
case PROBLEM_Lattice:
761761
legalOutputs = { ITER,
762762
WALL_TIME,
763+
SIM_TIME,
763764
MASS,
764765
RMS_FLUX,
765766
VTK_OUTPUT,
@@ -780,7 +781,7 @@ void Config::SetPostprocessing() {
780781
ErrorMessages::Error(
781782
"Illegal output field <" + foundKey +
782783
"> for option SCREEN_OUTPUT for this test case.\n"
783-
"Supported fields are: ITER, MASS, RMS_FLUX, VTK_OUTPUT, CSV_OUTPUT, FINAL_TIME_OUTFLOW, TOTAL_OUTFLOW, MAX_OUTFLOW, "
784+
"Supported fields are: ITER, SIM_TIME, WALL_TIME, MASS, RMS_FLUX, VTK_OUTPUT, CSV_OUTPUT, FINAL_TIME_OUTFLOW, TOTAL_OUTFLOW, MAX_OUTFLOW, "
784785
"FINAL_TIME_PARTICLE_ABSORPTION, TOTAL_PARTICLE_ABSORPTION, MAX_PARTICLE_ABSORPTION\n"
785786
"Please check your .cfg file.",
786787
CURRENT_FUNCTION );
@@ -790,6 +791,7 @@ void Config::SetPostprocessing() {
790791
case PROBLEM_SymmetricHohlraum:
791792
legalOutputs = {
792793
ITER,
794+
SIM_TIME,
793795
WALL_TIME,
794796
MASS,
795797
RMS_FLUX,
@@ -813,7 +815,7 @@ void Config::SetPostprocessing() {
813815
ErrorMessages::Error(
814816
"Illegal output field <" + foundKey +
815817
"> for option SCREEN_OUTPUT for this test case.\n"
816-
"Supported fields are: ITER, MASS, RMS_FLUX, VTK_OUTPUT, CSV_OUTPUT, TOTAL_PARTICLE_ABSORPTION_CENTER, \n"
818+
"Supported fields are: ITER, SIM_TIME, WALL_TIME, MASS, RMS_FLUX, VTK_OUTPUT, CSV_OUTPUT, TOTAL_PARTICLE_ABSORPTION_CENTER, \n"
817819
"TOTAL_PARTICLE_ABSORPTION_VERTICAL, TOTAL_PARTICLE_ABSORPTION_HORIZONTAL, PROBE_MOMENT_TIME_TRACE, CUR_OUTFLOW, \n "
818820
"TOTAL_OUTFLOW, MAX_OUTFLOW, VAR_ABSORPTION_GREEN \n"
819821
"Please check your .cfg file.",
@@ -822,15 +824,15 @@ void Config::SetPostprocessing() {
822824
break;
823825

824826
default:
825-
legalOutputs = { ITER, WALL_TIME, MASS, RMS_FLUX, VTK_OUTPUT, CSV_OUTPUT, CUR_OUTFLOW, TOTAL_OUTFLOW, MAX_OUTFLOW };
827+
legalOutputs = { ITER, SIM_TIME, WALL_TIME, MASS, RMS_FLUX, VTK_OUTPUT, CSV_OUTPUT, CUR_OUTFLOW, TOTAL_OUTFLOW, MAX_OUTFLOW };
826828
it = std::find( legalOutputs.begin(), legalOutputs.end(), _screenOutput[idx_screenOutput] );
827829

828830
if( it == legalOutputs.end() ) {
829831
std::string foundKey = findKey( ScalarOutput_Map, _screenOutput[idx_screenOutput] );
830832
ErrorMessages::Error(
831833
"Illegal output field <" + foundKey +
832834
"> for option SCREEN_OUTPUT for this test case.\n"
833-
"Supported fields are: ITER, MASS, RMS_FLUX, VTK_OUTPUT, CSV_OUTPUT, CUR_OUTFLOW, TOTAL_OUTFLOW, MAX_OUTFLOW \n"
835+
"Supported fields are: ITER, SIM_TIME, WALL_TIME, MASS RMS_FLUX, VTK_OUTPUT, CSV_OUTPUT, CUR_OUTFLOW, TOTAL_OUTFLOW, MAX_OUTFLOW \n"
834836
"Please check your .cfg file.",
835837
CURRENT_FUNCTION );
836838
}
@@ -909,6 +911,7 @@ void Config::SetPostprocessing() {
909911
case PROBLEM_Lattice:
910912
legalOutputs = { ITER,
911913
WALL_TIME,
914+
SIM_TIME,
912915
MASS,
913916
RMS_FLUX,
914917
VTK_OUTPUT,
@@ -929,7 +932,7 @@ void Config::SetPostprocessing() {
929932
ErrorMessages::Error(
930933
"Illegal output field <" + foundKey +
931934
"> for option HISTORY_OUTPUT for this test case.\n"
932-
"Supported fields are: ITER, MASS, RMS_FLUX, VTK_OUTPUT, CSV_OUTPUT, FINAL_TIME_OUTFLOW,\n"
935+
"Supported fields are: ITER, SIM_TIME, WALL_TIME, MASS, RMS_FLUX, VTK_OUTPUT, CSV_OUTPUT, FINAL_TIME_OUTFLOW,\n"
933936
"TOTAL_OUTFLOW, MAX_OUTFLOW, FINAL_TIME_PARTICLE_ABSORPTION, TOTAL_PARTICLE_ABSORPTION, MAX_PARTICLE_ABSORPTION\n"
934937
"Please check your .cfg file.",
935938
CURRENT_FUNCTION );
@@ -939,6 +942,7 @@ void Config::SetPostprocessing() {
939942
case PROBLEM_SymmetricHohlraum:
940943
legalOutputs = { ITER,
941944
WALL_TIME,
945+
SIM_TIME,
942946
MASS,
943947
RMS_FLUX,
944948
VTK_OUTPUT,
@@ -962,7 +966,7 @@ void Config::SetPostprocessing() {
962966
ErrorMessages::Error(
963967
"Illegal output field <" + foundKey +
964968
"> for option HISTORY_OUTPUT for this test case.\n"
965-
"Supported fields are: ITER, MASS, RMS_FLUX, VTK_OUTPUT, CSV_OUTPUT, TOTAL_PARTICLE_ABSORPTION_CENTER, \n "
969+
"Supported fields are: ITER, SIM_TIME, WALL_TIME, MASS RMS_FLUX, VTK_OUTPUT, CSV_OUTPUT, TOTAL_PARTICLE_ABSORPTION_CENTER, \n "
966970
"TOTAL_PARTICLE_ABSORPTION_VERTICAL, TOTAL_PARTICLE_ABSORPTION_HORIZONTAL,PROBE_MOMENT_TIME_TRACE, CUR_OUTFLOW, \n"
967971
"TOTAL_OUTFLOW, MAX_OUTFLOW , VAR_ABSORPTION_GREEN, ABSORPTION_GREEN_BLOCK, ABSORPTION_GREEN_LINE \n"
968972
"Please check your .cfg file.",
@@ -971,15 +975,15 @@ void Config::SetPostprocessing() {
971975
break;
972976

973977
default:
974-
legalOutputs = { ITER, WALL_TIME, MASS, RMS_FLUX, VTK_OUTPUT, CSV_OUTPUT, CUR_OUTFLOW, TOTAL_OUTFLOW, MAX_OUTFLOW };
978+
legalOutputs = { ITER, WALL_TIME, SIM_TIME, MASS, RMS_FLUX, VTK_OUTPUT, CSV_OUTPUT, CUR_OUTFLOW, TOTAL_OUTFLOW, MAX_OUTFLOW };
975979
it = std::find( legalOutputs.begin(), legalOutputs.end(), _historyOutput[idx_historyOutput] );
976980

977981
if( it == legalOutputs.end() ) {
978982
std::string foundKey = findKey( ScalarOutput_Map, _historyOutput[idx_historyOutput] );
979983
ErrorMessages::Error(
980984
"Illegal output field <" + foundKey +
981985
"> for option SCREEN_OUTPUT for this test case.\n"
982-
"Supported fields are: ITER, MASS, RMS_FLUX, VTK_OUTPUT, CSV_OUTPUT, CUR_OUTFLOW, TOTAL_OUTFLOW, MAX_OUTFLOW \n"
986+
"Supported fields are: ITER, SIM_TIME, WALL_TIME, MASS RMS_FLUX, VTK_OUTPUT, CSV_OUTPUT, CUR_OUTFLOW, TOTAL_OUTFLOW, MAX_OUTFLOW \n"
983987
"Please check your .cfg file.",
984988
CURRENT_FUNCTION );
985989
}

src/solvers/snsolver_hpc.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -286,7 +286,7 @@ void SNSolverHPC::Solve() {
286286
PrepareVolumeOutput();
287287
DrawPreSolverOutput();
288288
}
289-
289+
_curSimTime = 0.0;
290290
auto start = std::chrono::high_resolution_clock::now(); // Start timing
291291

292292
std::chrono::duration<double> duration;
@@ -317,6 +317,7 @@ void SNSolverHPC::Solve() {
317317
( _spatialOrder == 2 ) ? FluxOrder2() : FluxOrder1();
318318
FVMUpdate();
319319
}
320+
_curSimTime += _dT;
320321
IterPostprocessing();
321322
// --- Wall time measurement
322323
duration = std::chrono::high_resolution_clock::now() - start;
@@ -885,6 +886,7 @@ void SNSolverHPC::PrepareScreenOutput() {
885886
switch( _settings->GetScreenOutput()[idx_field] ) {
886887
case MASS: _screenOutputFieldNames[idx_field] = "Mass"; break;
887888
case ITER: _screenOutputFieldNames[idx_field] = "Iter"; break;
889+
case SIM_TIME: _screenOutputFieldNames[idx_field] = "Sim time"; break;
888890
case WALL_TIME: _screenOutputFieldNames[idx_field] = "Wall time [s]"; break;
889891
case RMS_FLUX: _screenOutputFieldNames[idx_field] = "RMS flux"; break;
890892
case VTK_OUTPUT: _screenOutputFieldNames[idx_field] = "VTK out"; break;
@@ -932,6 +934,7 @@ void SNSolverHPC::WriteScalarOutput( unsigned idx_iter ) {
932934
switch( _settings->GetScreenOutput()[idx_field] ) {
933935
case MASS: _screenOutputFields[idx_field] = _mass; break;
934936
case ITER: _screenOutputFields[idx_field] = idx_iter; break;
937+
case SIM_TIME: _screenOutputFields[idx_field] = _curSimTime; break;
935938
case WALL_TIME: _screenOutputFields[idx_field] = _currTime; break;
936939
case RMS_FLUX: _screenOutputFields[idx_field] = _rmsFlux; break;
937940
case VTK_OUTPUT:
@@ -986,6 +989,7 @@ void SNSolverHPC::WriteScalarOutput( unsigned idx_iter ) {
986989
switch( _settings->GetHistoryOutput()[idx_field] ) {
987990
case MASS: _historyOutputFields[idx_field] = _mass; break;
988991
case ITER: _historyOutputFields[idx_field] = idx_iter; break;
992+
case SIM_TIME: _screenOutputFields[idx_field] = _curSimTime; break;
989993
case WALL_TIME: _historyOutputFields[idx_field] = _currTime; break;
990994
case RMS_FLUX: _historyOutputFields[idx_field] = _rmsFlux; break;
991995
case VTK_OUTPUT:
@@ -1131,6 +1135,7 @@ void SNSolverHPC::PrepareHistoryOutput() {
11311135
switch( _settings->GetHistoryOutput()[idx_field] ) {
11321136
case MASS: _historyOutputFieldNames[idx_field] = "Mass"; break;
11331137
case ITER: _historyOutputFieldNames[idx_field] = "Iter"; break;
1138+
case SIM_TIME: _historyOutputFieldNames[idx_field] = "Sim_time"; break;
11341139
case WALL_TIME: _historyOutputFieldNames[idx_field] = "Wall_time_[s]"; break;
11351140
case RMS_FLUX: _historyOutputFieldNames[idx_field] = "RMS_flux"; break;
11361141
case VTK_OUTPUT: _historyOutputFieldNames[idx_field] = "VTK_out"; break;

0 commit comments

Comments
 (0)