Index: ../trunk-jpl/src/c/cores/smb_core.cpp =================================================================== --- ../trunk-jpl/src/c/cores/smb_core.cpp (revision 24655) +++ ../trunk-jpl/src/c/cores/smb_core.cpp (revision 24656) @@ -68,6 +68,7 @@ femmodel->parameters->SetParam(subdt,TimesteppingTimeStepEnum); femmodel->InitTransientInputx(&transientinput[0],numaveragedinput); + analysis = new SmbAnalysis(); while(substepparameters->SetParam(subtime,TimeEnum); if(VerboseSolution()) _printf0_("sub iteration " << substep << "/" << dtslices << " time [yr]: " << setprecision(4) << subtime/yts << " (time step: " << subdt/yts << ")\n"); if(VerboseSolution()) _printf0_(" computing smb\n"); - analysis = new SmbAnalysis(); if(VerboseSolution()) _printf0_(" Calling core\n"); analysis->Core(femmodel); /*If we have a sub-timestep we store the substep inputs in a transient input here*/ femmodel->StackTransientInputx(&substepinput[0],&transientinput[0],subtime,numaveragedinput); - delete analysis; } + delete analysis; /*averaging the transient input*/ femmodel->AverageTransientInputx(&transientinput[0],&averagedinput[0],global_time-dt,subtime,numaveragedinput); /*and reset timesteping variables to original*/ Index: ../trunk-jpl/src/c/classes/FemModel.cpp =================================================================== --- ../trunk-jpl/src/c/classes/FemModel.cpp (revision 24655) +++ ../trunk-jpl/src/c/classes/FemModel.cpp (revision 24656) @@ -5259,6 +5259,7 @@ IssmDouble* values=xNew(numvertices); int *vertexlids = xNew(numvertices); element->GetInputListOnVertices(&values[0],input_enum[i]); //this is the enum to stack + element->GetVerticesLidList(vertexlids); switch(element->ObjectEnum()){ Index: ../trunk-jpl/src/c/classes/Elements/Tria.cpp =================================================================== --- ../trunk-jpl/src/c/classes/Elements/Tria.cpp (revision 24655) +++ ../trunk-jpl/src/c/classes/Elements/Tria.cpp (revision 24656) @@ -2159,9 +2159,11 @@ } if(offset == numtimesteps-1){ dt = end_time - timesteps[offset]; + _assert_(dt>0.); } else{ - dt = timesteps[offset+1] - timesteps[offset]; _assert_(dt>0.); + dt = timesteps[offset+1] - timesteps[offset]; + _assert_(dt>0.); } } Index: ../trunk-jpl/src/c/classes/Inputs2/TransientInput2.cpp =================================================================== --- ../trunk-jpl/src/c/classes/Inputs2/TransientInput2.cpp (revision 24655) +++ ../trunk-jpl/src/c/classes/Inputs2/TransientInput2.cpp (revision 24656) @@ -137,9 +137,10 @@ /*Intermediary*/ void TransientInput2::AddTriaTimeInput(IssmDouble time,int numindices,int* indices,IssmDouble* values_in,int interp_in){/*{{{*/ + /*Check whether this is the last time step that we have*/ if(this->numtimesteps){ - if(this->timesteps[this->numtimesteps-1]>time-1.e-5 && this->timesteps[this->numtimesteps-1]timesteps[this->numtimesteps-1]-time)<1.0e-5){ this->AddTriaTimeInput(this->numtimesteps-1,numindices,indices,values_in,interp_in); return; }