Skip to content

Commit e003362

Browse files
NEW: added master flag to not save results in a transient run, needed for nudging
1 parent 477d474 commit e003362

8 files changed

Lines changed: 91 additions & 68 deletions

File tree

src/c/cores/transient_core.cpp

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ void transient_core(FemModel* femmodel){/*{{{*/
2424

2525
/*parameters: */
2626
IssmDouble finaltime,dt,yts;
27-
bool save_final_results;
27+
bool save_final_results,do_not_save_results,save_results;
2828
bool iscontrol,isautodiff;
2929
int timestepping;
3030
int output_frequency,checkpoint_frequency;
@@ -50,6 +50,7 @@ void transient_core(FemModel* femmodel){/*{{{*/
5050
femmodel->parameters->FindParam(&iscontrol,InversionIscontrolEnum);
5151
femmodel->parameters->FindParam(&isautodiff,AutodiffIsautodiffEnum);
5252
femmodel->parameters->FindParam(&save_final_results,SaveFinalResultsEnum);
53+
femmodel->parameters->FindParam(&do_not_save_results,DoNotSaveResultsEnum);
5354

5455
/*call modules that are not dependent on time stepping:*/
5556
transient_precore(femmodel);
@@ -85,12 +86,25 @@ void transient_core(FemModel* femmodel){/*{{{*/
8586
_printf0_("\e[92miteration " << step << "/" << ceil((finaltime-time)/dt)+step << \
8687
" time [yr]: " <<std::fixed<<setprecision(2)<< time/yts << "\e[m (time step: " << dt/yts << ")\n");
8788
}
88-
const bool save_results = step==1 //save first step
89-
|| step%output_frequency==0 //save at regular intervals
90-
|| (save_final_results && time >= finaltime - (yts*DBL_EPSILON)); //save last step (optional)
91-
femmodel->parameters->SetParam(save_results,SaveResultsEnum);
89+
90+
/*Will we save results?*/
91+
if(do_not_save_results){
92+
save_results = false;
93+
}
94+
else{
95+
if(step==1 //save first step
96+
|| step%output_frequency==0 //save at regular intervals
97+
|| (save_final_results && time >= finaltime - (yts*DBL_EPSILON)) //save last step (optional)
98+
){
99+
save_results = true;
100+
}
101+
else{
102+
save_results = false;
103+
}
104+
}
105+
femmodel->parameters->SetParam(save_results, SaveResultsEnum);
92106

93-
/*Run transient step!*/
107+
/*Run transient step*/
94108
transient_step(femmodel);
95109

96110
/*unload results*/

src/c/modules/ModelProcessorx/CreateParameters.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -404,6 +404,7 @@ void CreateParameters(Parameters* parameters,IoModel* iomodel,char* rootpath,FIL
404404

405405
/*By default, save all results*/
406406
parameters->AddObject(new BoolParam(SaveResultsEnum,true));
407+
parameters->AddObject(new BoolParam(DoNotSaveResultsEnum,false)); /*Has priority*/
407408

408409
/*Option to not save results after the final time step, e.g. for external coupling*/
409410
parameters->AddObject(new BoolParam(SaveFinalResultsEnum,true));

src/c/shared/Enum/Enum.vim

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,7 @@ syn keyword cConstant DebrisPackingFractionEnum
186186
syn keyword cConstant DebugProfilingEnum
187187
syn keyword cConstant DomainDimensionEnum
188188
syn keyword cConstant DomainTypeEnum
189+
syn keyword cConstant DoNotSaveResultsEnum
189190
syn keyword cConstant DslModelEnum
190191
syn keyword cConstant DslModelidEnum
191192
syn keyword cConstant DslNummodelsEnum

src/c/shared/Enum/EnumDefinitions.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,7 @@ enum definitions{
180180
DebugProfilingEnum,
181181
DomainDimensionEnum,
182182
DomainTypeEnum,
183+
DoNotSaveResultsEnum,
183184
DslModelEnum,
184185
DslModelidEnum,
185186
DslNummodelsEnum,

src/c/shared/Enum/EnumToStringx.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,7 @@ const char* EnumToStringx(int en){
188188
case DebugProfilingEnum : return "DebugProfiling";
189189
case DomainDimensionEnum : return "DomainDimension";
190190
case DomainTypeEnum : return "DomainType";
191+
case DoNotSaveResultsEnum : return "DoNotSaveResults";
191192
case DslModelEnum : return "DslModel";
192193
case DslModelidEnum : return "DslModelid";
193194
case DslNummodelsEnum : return "DslNummodels";

src/c/shared/Enum/Enumjl.vim

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,7 @@ syn keyword juliaConstC DebrisPackingFractionEnum
179179
syn keyword juliaConstC DebugProfilingEnum
180180
syn keyword juliaConstC DomainDimensionEnum
181181
syn keyword juliaConstC DomainTypeEnum
182+
syn keyword juliaConstC DoNotSaveResultsEnum
182183
syn keyword juliaConstC DslModelEnum
183184
syn keyword juliaConstC DslModelidEnum
184185
syn keyword juliaConstC DslNummodelsEnum

src/c/shared/Enum/StringToEnumx.cpp

Lines changed: 63 additions & 62 deletions
Large diffs are not rendered by default.

src/c/shared/Enum/issmenums.jl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,7 @@
175175
DebugProfilingEnum
176176
DomainDimensionEnum
177177
DomainTypeEnum
178+
DoNotSaveResultsEnum
178179
DslModelEnum
179180
DslModelidEnum
180181
DslNummodelsEnum
@@ -4027,6 +4028,7 @@ function EnumToString(enum::IssmEnum)
40274028
if(enum==DebugProfilingEnum) return "DebugProfiling" end
40284029
if(enum==DomainDimensionEnum) return "DomainDimension" end
40294030
if(enum==DomainTypeEnum) return "DomainType" end
4031+
if(enum==DoNotSaveResultsEnum) return "DoNotSaveResults" end
40304032
if(enum==DslModelEnum) return "DslModel" end
40314033
if(enum==DslModelidEnum) return "DslModelid" end
40324034
if(enum==DslNummodelsEnum) return "DslNummodels" end
@@ -7879,6 +7881,7 @@ function StringToEnum(name::String)
78797881
if(name=="DebugProfiling") return DebugProfilingEnum end
78807882
if(name=="DomainDimension") return DomainDimensionEnum end
78817883
if(name=="DomainType") return DomainTypeEnum end
7884+
if(name=="DoNotSaveResults") return DoNotSaveResultsEnum end
78827885
if(name=="DslModel") return DslModelEnum end
78837886
if(name=="DslModelid") return DslModelidEnum end
78847887
if(name=="DslNummodels") return DslNummodelsEnum end

0 commit comments

Comments
 (0)