39 im, jm, lon, lat, id1, id2, jdc, s2c, agrid )
42 integer,
intent(in):: is, ie, js, je
43 integer,
intent(in):: im, jm
44 real,
intent(in):: lon(im), lat(jm)
45 real,
intent(out):: s2c(is:ie,js:je,4)
46 integer,
intent(out),
dimension(is:ie,js:je):: id1, id2, jdc
47 real,
intent(in):: agrid(is:ie,js:je,2)
52 real,
parameter :: pi = 3.1415926
53 integer i,j, i1, i2, jc, i0, j0
55 rdlon(i) = 1. / (lon(i+1) - lon(i))
57 rdlon(im) = 1. / (lon(1) + 2.*pi - lon(im))
60 rdlat(j) = 1. / (lat(j+1) - lat(j))
68 if ( agrid(i,j,1)>lon(im) )
then 70 a1 = (agrid(i,j,1)-lon(im)) * rdlon(im)
71 elseif ( agrid(i,j,1)<lon(1) )
then 73 a1 = (agrid(i,j,1)+2.*pi-lon(im)) * rdlon(im)
76 if ( agrid(i,j,1)>=lon(i0) .and. agrid(i,j,1)<=lon(i0+1) )
then 78 a1 = (agrid(i,j,1)-lon(i1)) * rdlon(i0)
85 if ( agrid(i,j,2)<lat(1) )
then 88 elseif ( agrid(i,j,2)>lat(jm) )
then 93 if ( agrid(i,j,2)>=lat(j0) .and. agrid(i,j,2)<=lat(j0+1) )
then 95 b1 = (agrid(i,j,2)-lat(jc)) * rdlat(jc)
102 if ( a1<0.0 .or. a1>1.0 .or. b1<0.0 .or. b1>1.0 )
then 103 write(*,*)
'gid=', i,j,a1, b1
106 s2c(i,j,1) = (1.-a1) * (1.-b1)
107 s2c(i,j,2) = a1 * (1.-b1)
109 s2c(i,j,4) = (1.-a1) * b1
subroutine, public remap_coef(is, ie, js, je, im, jm, lon, lat, id1, id2, jdc, s2c, agrid)
Generate the weights and index of the grids used in the bilinear interpolation.
Module containing utility routines.