Changeset 25564
- Timestamp:
- 09/11/20 11:51:39 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/cores/transient_core.cpp
r25560 r25564 276 276 bool isoceancoupling,isslr; 277 277 int step,timestepping; 278 int recording_frequency ,finalcheckpoint;278 int recording_frequency; 279 279 DataSet* dependent_objects=NULL; 280 280 … … 291 291 292 292 std::vector<IssmDouble> time_all; 293 std::vector<IssmDouble> dt_all; 294 std::vector<int> checkpoint_steps; 293 295 int Ysize = 0; 294 296 CountDoublesFunctor *hdl_countdoubles = NULL; … … 318 320 femmodel->parameters->SetParam(false,SaveResultsEnum); 319 321 time_all.push_back(time); 322 dt_all.push_back(dt); 320 323 321 324 if(VerboseSolution()){ … … 325 328 326 329 /*Store Model State at the beginning of the step*/ 327 if(step%recording_frequency==0 ){330 if(step%recording_frequency==0 || step==1){ 328 331 if(VerboseSolution()) _printf0_(" checkpointing model (step: "<<step<<")\n"); 329 332 femmodel->CheckPointAD(step); 330 finalcheckpoint = step;333 checkpoint_steps.push_back(step); 331 334 } 332 335 … … 401 404 402 405 /*reverse loop for transient step (G)*/ 403 for( int reverse_step = finalcheckpoint;reverse_step>0; reverse_step-=recording_frequency){406 for(vector<int>::reverse_iterator iter = checkpoint_steps.rbegin(); iter != checkpoint_steps.rend(); iter++){ 404 407 405 408 /*Restore model from this step*/ 409 int reverse_step = *iter; 406 410 tape_codi.reset(); 407 411 femmodel->RestartAD(reverse_step); … … 427 431 int thisstep = reverse_step+ii; 428 432 IssmDouble thistime = time_all[reverse_step+ii-1]; 429 _printf0_("step "<<thisstep<<" ("<<ii+1<<"/"<<recording_frequency<<") time [yr]: "<<std::fixed<<std::setprecision(2)<<thistime/yts<<"\n"); 433 IssmDouble thisdt = dt_all[reverse_step+ii-1]; 434 femmodel->parameters->SetParam(thistime,TimeEnum); 435 femmodel->parameters->SetParam(thisstep,StepEnum); 436 femmodel->parameters->SetParam(thisdt,TimesteppingTimeStepEnum); 437 _printf0_("step "<<thisstep<<" ("<<ii+1<<"/"<<recording_frequency<<") time [yr]: "\ 438 <<std::fixed<<std::setprecision(2)<<thistime/yts<< " (time step: " << thisdt/yts << ")\n"); 430 439 transient_step(femmodel); 440 441 /*First and last segment need special treatment*/ 431 442 if(thisstep==finalstep) break; 443 if(reverse_step==1 && ii==recording_frequency-2) break; 432 444 } 433 445
Note:
See TracChangeset
for help on using the changeset viewer.