23 & LBi, UBi, LBj, UBj, &
24 & Finp, Fout, update, &
41 logical,
intent(in),
optional :: SetBC
43 logical,
intent(out) :: update
45 integer,
intent(in) :: ng, tile, model, ifield
46 integer,
intent(in) :: LBi, UBi, LBj, UBj
49 real(r8),
intent(in) :: Finp(LBi:,LBj:,:)
50 real(r8),
intent(out) :: Fout(LBi:,LBj:)
52 real(r8),
intent(in) :: Finp(LBi:UBi,LBj:UBj,2)
53 real(r8),
intent(out) :: Fout(LBi:UBi,LBj:UBj)
58 logical :: LapplyBC, Lgrided, Lonerec
60 integer :: Tindex, gtype, i, it1, it2, j
62 real(dp) :: SecScale, fac, fac1, fac2
65# include "set_bounds.h"
73 IF (
PRESENT(setbc))
THEN
81 lgrided=
linfo(1,ifield,ng)
82 lonerec=
linfo(3,ifield,ng)
83 gtype =
iinfo(1,ifield,ng)
84 tindex =
iinfo(8,ifield,ng)
94 fac1=anint((
time(ng)-
tintrp(it2,ifield,ng))*secscale,dp)
95 fac2=anint((
tintrp(it1,ifield,ng)-
time(ng))*secscale,dp)
103 fout(i,j)=finp(i,j,tindex)
107 fval=
fpoint(tindex,ifield,ng)
117 ELSE IF (((fac1*fac2).ge.0.0_dp).and. &
118 & ((fac1+fac2).gt.0.0_dp))
THEN
119 fac=1.0_dp/(fac1+fac2)
125 fout(i,j)=fac1*finp(i,j,it1)+fac2*finp(i,j,it2)
129 fval=fac1*
fpoint(it1,ifield,ng)+fac2*
fpoint(it2,ifield,ng)
147 IF (
domain(ng)%SouthWest_Test(tile))
THEN
157 10
FORMAT (/,
' SET_2DFLDR - current model time', &
158 &
' exceeds ending value for variable: ',a, &
159 & /,14x,
'TDAYS = ',f15.4, &
160 & /,14x,
'Data Tmin = ',f15.4,2x,
'Data Tmax = ',f15.4, &
161 & /,14x,
'Data Tstr = ',f15.4,2x,
'Data Tend = ',f15.4, &
162 & /,14x,
'TINTRP1 = ',f15.4,2x,
'TINTRP2 = ',f15.4, &
163 & /,14x,
'FAC1 = ',f15.4,2x,
'FAC2 = ',f15.4)
175 & lbi, ubi, lbj, ubj, &
177 ELSE IF (gtype.eq.
u2dvar)
THEN
179 & lbi, ubi, lbj, ubj, &
181 ELSE IF (gtype.eq.
v2dvar)
THEN
183 & lbi, ubi, lbj, ubj, &
189 IF (.not.lapplybc)
THEN
191 & lbi, ubi, lbj, ubj, &
193 & .false., .false., &
197 & lbi, ubi, lbj, ubj, &
subroutine exchange_r2d_tile(ng, tile, lbi, ubi, lbj, ubj, a)
subroutine exchange_u2d_tile(ng, tile, lbi, ubi, lbj, ubj, a)
subroutine exchange_v2d_tile(ng, tile, lbi, ubi, lbj, ubj, a)
logical, dimension(:,:,:), allocatable linfo
real(dp), dimension(:,:,:), allocatable tintrp
real(dp), dimension(:,:,:), allocatable fpoint
real(dp), dimension(:,:,:), allocatable finfo
character(len=maxlen), dimension(6, 0:nv) vname
integer, dimension(:,:,:), allocatable iinfo
type(t_domain), dimension(:), allocatable domain
integer, parameter u2dvar
integer, parameter r2dvar
integer, parameter v2dvar
real(dp), dimension(:), allocatable dt
logical, dimension(:), allocatable ewperiodic
logical, dimension(:), allocatable nsperiodic
logical, dimension(:), allocatable synchro_flag
real(dp), dimension(:), allocatable tdays
real(dp), parameter sec2day
real(dp), dimension(:), allocatable time
subroutine mp_exchange2d(ng, tile, model, nvar, lbi, ubi, lbj, ubj, nghost, ew_periodic, ns_periodic, a, b, c, d)
subroutine set_2dfldr_tile(ng, tile, model, ifield, lbi, ubi, lbj, ubj, finp, fout, update, setbc)