Changeset 23811


Ignore:
Timestamp:
03/29/19 14:16:19 (6 years ago)
Author:
schlegel
Message:

CHG: update climatology to not use fmod

File:
1 edited

Legend:

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

    r23810 r23811  
    32553255        IssmDouble thermo_scaling=1.0;
    32563256        IssmDouble adThresh=1023.0;
    3257         int offset0, offsetend;
    3258         IssmDouble time0, timeend;
     3257        int offsetend;
     3258        IssmDouble time0, timeend, delta;
    32593259
    32603260        /*}}}*/
     
    34733473        //go back to time - deltaT:
    34743474        time-=dt;
     3475
     3476        timeclim=time;
    34753477        if (isclimatology){
    34763478                //If this is a climatology, we need to repeat the forcing after the final time
    3477                 offset0=dynamic_cast<TransientInput*>(Ta_input)->GetTimeInputOffset(starttime);
    34783479                offsetend=dynamic_cast<TransientInput*>(Ta_input)->GetTimeInputOffset(finaltime);
    3479                 time0=dynamic_cast<TransientInput*>(Ta_input)->GetTimeByOffset(offset0);
     3480                time0=dynamic_cast<TransientInput*>(Ta_input)->GetTimeByOffset(0);
    34803481                timeend=dynamic_cast<TransientInput*>(Ta_input)->GetTimeByOffset(offsetend);
    3481 
    3482                 #if defined(_HAVE_ADOLC_)
    3483                 _error_("fmod is not differentiable...");
    3484                 #else
    3485                 timeclim=time0+fmod(time-time0,timeend-time0);
    3486                 #endif                                                                                                                                                                                                 
    3487         }
    3488         else{
    3489                 timeclim=time;
     3482                if (time>time0){
     3483                        delta=(time-time0) - (timeend-time0)*floor((time-time0)/(timeend-time0));
     3484                        timeclim=time0+delta;
     3485                }
    34903486        }
    34913487
     
    35043500                eAir_input->GetInputValue(&eAir,gauss,t-time+timeclim);  //screen level vapor pressure [Pa]
    35053501                pAir_input->GetInputValue(&pAir,gauss,t-time+timeclim);  // screen level air pressure [Pa]
    3506                 teValue_input->GetInputValue(&teValue,gauss);  // screen level air pressure [Pa]
     3502                teValue_input->GetInputValue(&teValue,gauss);  // Emissivity [0-1]
    35073503                aValue_input->GetInputValue(&aValue,gauss);  // screen level air pressure [Pa]
    35083504                //_printf_("Time: " << t << " Ta: " << Ta << " V: " << V << " dlw: " << dlw << " dsw: " << dsw << " P: " << P << " eAir: " << eAir << " pAir: " << pAir << "\n");
Note: See TracChangeset for help on using the changeset viewer.