5
    6
    7
    8
    9
   10
   11
   12
   13
   14
   15
   16
   17
   18
   19
   20
   21
   22
   23
   24
   25
   26
   27
   28
   29
   30
   31
   32
   33
   34
   35
   36
   37
   43
   44      implicit none
   45
   46
   47
   48      logical, intent(out) :: update
   49 
   50      integer, intent(in) :: ng, model, ifield
   51      integer, intent(in) :: LBi, UBi, UBj, Istr, Iend, Jrec
   52 
   53      real(r8), intent(in) :: Finp(LBi:UBi,UBj,2)
   54 
   55      real(r8), intent(out) :: Fout(LBi:UBi,UBj)
   56
   57
   58
   59      logical :: Lonerec
   60 
   61      integer :: Tindex, i, it1, it2, j
   62 
   63      real(dp) :: SecScale, fac, fac1, fac2
   64
   65
   66
   67
   68
   69
   70
   71      lonerec=
linfo(3,ifield,ng)
 
   72      tindex=
iinfo(8,ifield,ng)
 
   73      update=.true.
   74
   75
   76
   77
   78
   79      secscale=1000.0_dp              
   80      it1=3-tindex
   81      it2=tindex
   82      fac1=anint((
tintrp(it2,ifield,ng)-
time(ng))*secscale,dp)
 
   83      fac2=anint((
time(ng)-
tintrp(it1,ifield,ng))*secscale,dp)
 
   84
   85
   86
   87      IF (lonerec) THEN
   88        DO j=1,jrec
   89          DO i=istr,iend
   90            fout(i,j)=finp(i,j,tindex)
   91          END DO
   92        END DO
   93
   94
   95
   96      ELSE IF (((fac1*fac2).ge.0.0_dp).and.(fac1+fac2).gt.0.0_dp) THEN
   97        fac=1.0_dp/(fac1+fac2)
   98        fac1=fac*fac1                             
   99        fac2=fac*fac2                             
  100        DO j=1,jrec
  101          DO i=istr,iend
  102            fout(i,j)=fac1*finp(i,j,it1)+fac2*finp(i,j,it2)
  103          END DO
  104        END DO
  105
  106
  107
  108
  111        END IF
  112
  113
  114
  115      ELSE
  124        END IF
  125  10    FORMAT (/,' SET_NGFLD  - current model time',                   &
  126     &          ' exceeds ending value for variable: ',a,               &
  127     &          /,14x,'TDAYS     = ',f15.4,                             &
  128     &          /,14x,'Data Tmin = ',f15.4,2x,'Data Tmax = ',f15.4,     &
  129     &          /,14x,'Data Tstr = ',f15.4,2x,'Data Tend = ',f15.4,     &
  130     &          /,14x,'TINTRP1   = ',f15.4,2x,'TINTRP2   = ',f15.4,     &
  131     &          /,14x,'FAC1      = ',f15.4,2x,'FAC2      = ',f15.4)
  133        update=.false.
  134      END IF
  135      RETURN
logical, dimension(:,:,:), allocatable linfo
real(dp), dimension(:,:,:), allocatable tintrp
real(dp), dimension(:,:,:), allocatable finfo
character(len=maxlen), dimension(6, 0:nv) vname
integer, dimension(:,:,:), allocatable iinfo
real(dp), dimension(:), allocatable dt
logical, dimension(:), allocatable synchro_flag
real(dp), dimension(:), allocatable tdays
real(dp), parameter sec2day
real(dp), dimension(:), allocatable time