Index: ../trunk-jpl/src/c/classes/Elements/Element.cpp =================================================================== --- ../trunk-jpl/src/c/classes/Elements/Element.cpp (revision 23818) +++ ../trunk-jpl/src/c/classes/Elements/Element.cpp (revision 23819) @@ -3254,7 +3254,7 @@ IssmDouble init_scaling=0.0; IssmDouble thermo_scaling=1.0; IssmDouble adThresh=1023.0; - int offsetend; + int offsetend=-1; IssmDouble time0, timeend, delta; /*}}}*/ @@ -3477,7 +3477,7 @@ if (isclimatology){ //If this is a climatology, we need to repeat the forcing after the final time offsetend=dynamic_cast(Ta_input)->GetTimeInputOffset(finaltime); - time0=dynamic_cast(Ta_input)->GetTimeByOffset(0); + time0=dynamic_cast(Ta_input)->GetTimeByOffset(-1); timeend=dynamic_cast(Ta_input)->GetTimeByOffset(offsetend); if (time>time0 & timeend>time0){ delta=(time-time0) - (timeend-time0)*(reCast((time-time0)/(timeend-time0))); Index: ../trunk-jpl/src/c/modules/SurfaceMassBalancex/SurfaceMassBalancex.cpp =================================================================== --- ../trunk-jpl/src/c/modules/SurfaceMassBalancex/SurfaceMassBalancex.cpp (revision 23818) +++ ../trunk-jpl/src/c/modules/SurfaceMassBalancex/SurfaceMassBalancex.cpp (revision 23819) @@ -18,7 +18,7 @@ if (isclimatology){ int v; IssmDouble time,dt,delta,starttime,finaltime; - int offsetend; + int offsetend=-1; IssmDouble time0, timeend, timeclim; femmodel->parameters->FindParam(&time,TimeEnum); @@ -43,8 +43,9 @@ //Get accumulation climatology value offsetend=dynamic_cast(smb_input)->GetTimeInputOffset(finaltime); - time0=dynamic_cast(smb_input)->GetTimeByOffset(0); + time0=dynamic_cast(smb_input)->GetTimeByOffset(-1); timeend=dynamic_cast(smb_input)->GetTimeByOffset(offsetend); + timeclim=time; if (time>time0 & timeend>time0){ delta=(time-time0) - (timeend-time0)*(reCast((time-time0)/(timeend-time0))); if (delta==0){ timeclim=timeend;} @@ -405,7 +406,7 @@ int v; bool isclimatology=false; IssmDouble time,delta,starttime,finaltime; - int offsetend; + int offsetend=-1; IssmDouble time0, timeend, timeclim; femmodel->parameters->FindParam(&isclimatology,SmbIsclimatologyEnum); @@ -434,8 +435,9 @@ //Get accumulation climatology value offsetend=dynamic_cast(acc_input)->GetTimeInputOffset(finaltime); - time0=dynamic_cast(acc_input)->GetTimeByOffset(0); + time0=dynamic_cast(acc_input)->GetTimeByOffset(-1); timeend=dynamic_cast(acc_input)->GetTimeByOffset(offsetend); + timeclim=time; if (time>time0 & timeend>time0){ delta=(time-time0) - (timeend-time0)*(reCast((time-time0)/(timeend-time0))); if (delta==0){ timeclim=timeend;} @@ -446,8 +448,9 @@ //Get evaporation climatology value offsetend=dynamic_cast(evap_input)->GetTimeInputOffset(finaltime); - time0=dynamic_cast(evap_input)->GetTimeByOffset(0); + time0=dynamic_cast(evap_input)->GetTimeByOffset(-1); timeend=dynamic_cast(evap_input)->GetTimeByOffset(offsetend); + timeclim=time; if (time>time0 & timeend>time0){ delta=(time-time0) - (timeend-time0)*(reCast((time-time0)/(timeend-time0))); if (delta==0){ timeclim=timeend;} @@ -458,8 +461,9 @@ //Get runoff climatology value offsetend=dynamic_cast(runoff_input)->GetTimeInputOffset(finaltime); - time0=dynamic_cast(runoff_input)->GetTimeByOffset(0); + time0=dynamic_cast(runoff_input)->GetTimeByOffset(-1); timeend=dynamic_cast(runoff_input)->GetTimeByOffset(offsetend); + timeclim=time; if (time>time0 & timeend>time0){ delta=(time-time0) - (timeend-time0)*(reCast((time-time0)/(timeend-time0))); if (delta==0){ timeclim=timeend;} @@ -500,7 +504,7 @@ int v; bool isclimatology=false; IssmDouble time,delta,starttime,finaltime; - int offsetend; + int offsetend=-1; IssmDouble time0, timeend, timeclim; femmodel->parameters->FindParam(&isclimatology,SmbIsclimatologyEnum); @@ -531,8 +535,9 @@ //Get accumulation climatology value offsetend=dynamic_cast(acc_input)->GetTimeInputOffset(finaltime); - time0=dynamic_cast(acc_input)->GetTimeByOffset(0); + time0=dynamic_cast(acc_input)->GetTimeByOffset(-1); timeend=dynamic_cast(acc_input)->GetTimeByOffset(offsetend); + timeclim=time; if (time>time0 & timeend>time0){ delta=(time-time0) - (timeend-time0)*(reCast((time-time0)/(timeend-time0))); if (delta==0){ timeclim=timeend;} @@ -543,8 +548,9 @@ //Get evaporation climatology value offsetend=dynamic_cast(evap_input)->GetTimeInputOffset(finaltime); - time0=dynamic_cast(evap_input)->GetTimeByOffset(0); + time0=dynamic_cast(evap_input)->GetTimeByOffset(-1); timeend=dynamic_cast(evap_input)->GetTimeByOffset(offsetend); + timeclim=time; if (time>time0){ delta=(time-time0) - (timeend-time0)*(reCast((time-time0)/(timeend-time0))); if (delta==0){ timeclim=timeend;} @@ -555,8 +561,9 @@ //Get melt climatology value offsetend=dynamic_cast(melt_input)->GetTimeInputOffset(finaltime); - time0=dynamic_cast(melt_input)->GetTimeByOffset(0); + time0=dynamic_cast(melt_input)->GetTimeByOffset(-1); timeend=dynamic_cast(melt_input)->GetTimeByOffset(offsetend); + timeclim=time; if (time>time0){ delta=(time-time0) - (timeend-time0)*(reCast((time-time0)/(timeend-time0))); if (delta==0){ timeclim=timeend;} @@ -567,8 +574,9 @@ //Get refreeze climatology value offsetend=dynamic_cast(refreeze_input)->GetTimeInputOffset(finaltime); - time0=dynamic_cast(refreeze_input)->GetTimeByOffset(0); + time0=dynamic_cast(refreeze_input)->GetTimeByOffset(-1); timeend=dynamic_cast(refreeze_input)->GetTimeByOffset(offsetend); + timeclim=time; if (time>time0){ delta=(time-time0) - (timeend-time0)*(reCast((time-time0)/(timeend-time0))); if (delta==0){ timeclim=timeend;}