diff --git a/interpolator/include/interpolator.inc b/interpolator/include/interpolator.inc index 818db207b3..a009bb9ecc 100644 --- a/interpolator/include/interpolator.inc +++ b/interpolator/include/interpolator.inc @@ -145,7 +145,7 @@ integer :: model_calendar integer :: yr, mo, dy, hr, mn, sc integer :: n type(time_type) :: Julian_time, Noleap_time -real(FMS_INTP_KIND_), allocatable :: time_in(:) +real(r8_kind), allocatable :: time_in(:) real(FMS_INTP_KIND_), allocatable, save :: agrid_mod(:,:,:) integer :: nx, ny type(FmsNetcdfFile_t) :: fileobj @@ -159,7 +159,7 @@ integer :: num_years !< number of years integer :: base_year, base_month, base_day, base_hour, base_minute, base_second integer :: nn logical :: no_leap_in_calendar -real(FMS_INTP_KIND_) :: num_days, frac_year !< variables for yearly=.true. +real(r8_kind) :: num_days, frac_year !< variables for yearly=.true. type(time_type) :: n_time !< temporary time clim_type%separate_time_vary_calc = .false. @@ -454,7 +454,7 @@ if(dimension_exists(fileobj, "time")) then if (ntime > 0) then allocate(time_in(ntime), clim_type%time_slice(ntime)) allocate(clim_type%clim_times(12,(ntime+11)/12)) - time_in = 0.0_lkind + time_in = 0.0_r8_kind clim_type%time_slice = set_time(0,0) + base_time clim_type%clim_times = set_time(0,0) + base_time call fms2_io_read_data(fileobj, "time", time_in) @@ -465,17 +465,17 @@ if(dimension_exists(fileobj, "time")) then if(.not.no_leap_in_calendar) then ! Julian calendar num_years = int(time_in(n)) - frac_year = time_in(n) - real(num_years, FMS_INTP_KIND_) + frac_year = time_in(n) - real(num_years, r8_kind) call get_date_julian(base_time, base_year, base_month, base_day, base_hour, base_minute, base_second) - num_days = 0.0_lkind + num_days = 0.0_r8_kind do nn=1, num_years - if( mod(base_year+nn-1,4)==0) num_days = num_days + 366._lkind - if( mod(base_year+nn-1,4)/=0) num_days = num_days + 365._lkind + if( mod(base_year+nn-1,4)==0) num_days = num_days + 366._r8_kind + if( mod(base_year+nn-1,4)/=0) num_days = num_days + 365._r8_kind end do - if( mod(base_year+num_years,4)==0) num_days = num_days + 366._lkind*frac_year - if( mod(base_year+num_years,4)/=0) num_days = num_days + 365._lkind*frac_year + if( mod(base_year+num_years,4)==0) num_days = num_days + 366._r8_kind*frac_year + if( mod(base_year+num_years,4)/=0) num_days = num_days + 365._r8_kind*frac_year else - num_days = time_in(n)*365._lkind + num_days = time_in(n)*365._r8_kind end if time_in(n)=num_days end do @@ -485,7 +485,7 @@ if(dimension_exists(fileobj, "time")) then non_monthly = .false. do n = 1, ntime-1 ! Assume that the times in the data file correspond to days only. - if (time_in(n+1) > (time_in(n) + 32._lkind)) then + if (time_in(n+1) > (time_in(n) + 32._r8_kind)) then non_monthly = .true. exit endif @@ -508,9 +508,8 @@ if(dimension_exists(fileobj, "time")) then !! time_interp_list with the optional argument modtime=YEAR, so that !! the time that is needed in time_slice is the displacement into the !! year, not the displacement from a base_time. - clim_type%time_slice(n) = & - set_time( INT( (time_in(n)-real(INT(time_in(n)),FMS_INTP_KIND_)) & - *real(SECONDS_PER_DAY,FMS_INTP_KIND_)), INT(time_in(n))) + clim_type%time_slice(n) = set_time( INT( (time_in(n)-real(INT(time_in(n)),r8_kind))*SECONDS_PER_DAY), & + INT(time_in(n))) else !-------------------------------------------------------------------- @@ -529,15 +528,16 @@ if(dimension_exists(fileobj, "time")) then ! no calendar conversion needed. !--------------------------------------------------------------------- clim_type%time_slice(n) = & - set_time( INT( (time_in(n)-real(INT(time_in(n)),FMS_INTP_KIND_)) & - *real(SECONDS_PER_DAY,FMS_INTP_KIND_)), INT(time_in(n))) & - + base_time + set_time( INT( (time_in(n)-real(INT(time_in(n)),r8_kind))*SECONDS_PER_DAY), & + INT(time_in(n))) + base_time !--------------------------------------------------------------------- ! convert file times from noleap to julian. !--------------------------------------------------------------------- else if ( (model_calendar == JULIAN .and. trim(adjustl(lowercase(file_calendar))) == 'noleap')) then - Noleap_time = set_time (0, INT(time_in(n))) + base_time + Noleap_time = set_time( INT((time_in(n)-real(INT(time_in(n)),r8_kind))*SECONDS_PER_DAY), & + INT(time_in(n))) + base_time + !Noleap_time = set_time (0, INT(time_in(n))) + base_time call get_date_no_leap (Noleap_time, yr, mo, dy, hr, mn, sc) clim_type%time_slice(n) = set_date_julian (yr, mo, dy, hr, mn, sc) if (n == 1) then @@ -554,7 +554,9 @@ if(dimension_exists(fileobj, "time")) then ! convert file times from julian to noleap. !--------------------------------------------------------------------- else if ( (model_calendar == NOLEAP .and. trim(adjustl(lowercase(file_calendar))) == 'julian')) then - Julian_time = set_time (0, INT(time_in(n))) + base_time + Julian_time = set_time( INT( (time_in(n)-real(INT(time_in(n)),r8_kind))*SECONDS_PER_DAY), & + INT(time_in(n))) + base_time + !Julian_time = set_time (0, INT(time_in(n))) + base_time call get_date_julian (Julian_time, yr, mo, dy, hr, mn, sc) clim_type%time_slice(n) = set_date_no_leap (yr, mo, dy,hr, mn, sc) if (n == 1) then @@ -579,7 +581,7 @@ if(dimension_exists(fileobj, "time")) then else allocate(time_in(1), clim_type%time_slice(1)) allocate(clim_type%clim_times(1,1)) - time_in = 0.0_lkind + time_in = 0.0_r8_kind clim_type%time_slice = set_time(0,0) + base_time clim_type%clim_times(1,1) = set_time(0,0) + base_time endif