Changeset 22873


Ignore:
Timestamp:
06/22/18 13:53:33 (7 years ago)
Author:
schlegel
Message:

CHG: minor update to make sure monthly pdd forcing for delo18 can take various timestep configurations

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/classes/Elements/Element.cpp

    r22863 r22873  
    540540        IssmDouble Delta18oTime;
    541541        IssmDouble dpermil,f;
    542         IssmDouble time,yts,time_yr,month,time_clim,time_climt,time_climp;
     542        IssmDouble time,yts,time_yr,month,time_clim,time_climt,time_climp,del_clim;
    543543        bool isTemperatureScaled=true;
    544544        bool isPrecipScaled=true;
     
    547547        this->parameters->FindParam(&f,SmbFEnum);
    548548        time_yr=floor(time/yts)*yts;
    549         time_clim=time_yr;
    550         time_climt=time_yr;
    551         time_climp=time_yr;
     549        time_clim=ceil(time/yts + 1e-10)*yts;
     550        time_climt=ceil(time/yts + 1e-10)*yts;
     551        time_climp=ceil(time/yts + 1e-10)*yts;
    552552
    553553        /*Get some pdd parameters*/
     
    564564        int offset;
    565565
    566         offset=dynamic_cast<TransientInput*>(input)->GetTimeInputOffset(time_yr);
    567         if (fmod(offset,12.)!=1){
    568                 time_clim=floor(dynamic_cast<TransientInput*>(input)->GetTimeByOffset(offset-fmod(offset,12.)+1)/yts)*yts;
    569         }
     566        offset=dynamic_cast<TransientInput*>(input)->GetTimeInputOffset(time_clim);
     567        time_clim=dynamic_cast<TransientInput*>(input)->GetTimeByOffset(offset-11-fmod(offset-11,12.));
    570568
    571569        if(!isTemperatureScaled){
    572570                input3=this->inputs->GetInput(SmbTemperaturesReconstructedEnum);           _assert_(input3);
    573                 offset=dynamic_cast<TransientInput*>(input3)->GetTimeInputOffset(time_yr);
    574                 if (fmod(offset,12.)!=1){
    575                         time_climt=floor(dynamic_cast<TransientInput*>(input3)->GetTimeByOffset(offset-fmod(offset,12.)+1)/yts)*yts;
    576                 }
     571                offset=dynamic_cast<TransientInput*>(input3)->GetTimeInputOffset(time_climt);
     572                time_climt=dynamic_cast<TransientInput*>(input3)->GetTimeByOffset(offset-11-fmod(offset-11,12.));
    577573        }
    578574        if(!isPrecipScaled){
    579575                input4=this->inputs->GetInput(SmbPrecipitationsReconstructedEnum);         _assert_(input4);
    580                 offset=dynamic_cast<TransientInput*>(input4)->GetTimeInputOffset(time_yr);
    581                 if (fmod(offset,12.)!=1){
    582                         time_climp=floor(dynamic_cast<TransientInput*>(input4)->GetTimeByOffset(offset-fmod(offset,12.)+1)/yts)*yts;
    583                 }
     576                offset=dynamic_cast<TransientInput*>(input4)->GetTimeInputOffset(time_climp);
     577                time_climp=dynamic_cast<TransientInput*>(input4)->GetTimeByOffset(offset-11-fmod(offset-11,12.));
    584578        }
    585579
Note: See TracChangeset for help on using the changeset viewer.