6 SUBROUTINE bilin_gridin (PFIELD1,PFIELD_X,PFIELD_Y,PFIELD_XY)
96 REAL,
DIMENSION(:,:),
INTENT(INOUT) :: PFIELD1
100 REAL,
DIMENSION (:,:),
INTENT(OUT) :: PFIELD_X
101 REAL,
DIMENSION (:,:),
INTENT(OUT) :: PFIELD_Y
102 REAL,
DIMENSION (:,:),
INTENT(OUT) :: PFIELD_XY
104 REAL,
DIMENSION(:,:),
ALLOCATABLE :: ZW
113 REAL(KIND=JPRB) :: ZHOOK_HANDLE, ZHOOK_HANDLE_OMP
116 IF (
lhook)
CALL dr_hook(
'BILIN_GRIDIN_1',0,zhook_handle)
121 ALLOCATE(zw(iiu,iju))
128 IF (
lhook)
CALL dr_hook(
'BILIN_GRIDIN_1',1,zhook_handle)
136 pfield_x(1,:) = zw(1,:) * pfield1(1,:)
137 pfield_x(iiu+1,:) = zw(iiu,:) * pfield1(iiu,:)
141 IF (
lhook)
CALL dr_hook(
'BILIN_GRIDIN_2',0,zhook_handle_omp)
145 IF (pfield1(ji-1,jl)/=0. .AND. pfield1(ji,jl)/=0.)
THEN 146 pfield_x(ji,jl) = (zw(ji-1,jl)*pfield1(ji-1,jl) + zw(ji,jl)*pfield1(ji,jl)) / &
147 max(1.,(zw(ji-1,jl) + zw(ji,jl)) )
152 IF (
lhook)
CALL dr_hook(
'BILIN_GRIDIN_2',1,zhook_handle_omp)
163 pfield_y(:,1) = zw(:,1) * pfield1(:,1)
164 pfield_y(:,iju+1) = zw(:,iju) * pfield1(:,iju)
168 IF (
lhook)
CALL dr_hook(
'BILIN_GRIDIN_3',0,zhook_handle_omp)
172 IF (pfield1(ji,jl-1)/=0. .AND. pfield1(ji,jl)/=0.)
THEN 173 pfield_y(ji,jl) = (zw(ji,jl-1)*pfield1(ji,jl-1) + zw(ji,jl)*pfield1(ji,jl)) / &
174 max(1.,(zw(ji,jl-1) + zw(ji,jl)) )
179 IF (
lhook)
CALL dr_hook(
'BILIN_GRIDIN_3',1,zhook_handle_omp)
190 IF (iiu>1 .AND. iju>1)
THEN 193 IF (
lhook)
CALL dr_hook(
'BILIN_GRIDIN_4',0,zhook_handle_omp)
197 IF (pfield1(ji-1,jl-1)/=0. .AND. pfield1(ji-1,jl)/=0. .AND. &
198 pfield1(ji ,jl-1)/=0. .AND. pfield1(ji ,jl)/=0. )
THEN 199 pfield_xy(ji,jl) = (zw(ji-1,jl-1)*pfield1(ji-1,jl-1) + zw(ji-1,jl)*pfield1(ji-1,jl) + &
200 zw(ji, jl-1)*pfield1(ji, jl-1) + zw(ji, jl)*pfield1(ji, jl))/&
201 max(1.,zw(ji-1,jl-1) + zw(ji-1,jl) + zw(ji,jl-1) + zw(ji,jl))
206 IF (
lhook)
CALL dr_hook(
'BILIN_GRIDIN_4',1,zhook_handle_omp)
211 IF (
lhook)
CALL dr_hook(
'BILIN_GRIDIN_5',0,zhook_handle)
215 IF (pfield1(1, jl-1)/=0. .AND. pfield1(1, jl)/=0.)
THEN 216 pfield_xy(1 ,jl) = (zw(1,jl-1)*pfield1(1,jl-1) + zw(1,jl)*pfield1(1,jl)) / &
217 max(1.,zw(1,jl-1) + zw(1,jl))
219 IF (pfield1(iiu,jl-1)/=0. .AND. pfield1(iiu,jl)/=0.)
THEN 220 pfield_xy(iiu+1,jl) = (zw(iiu,jl-1)*pfield1(iiu,jl-1) + zw(iiu,jl)*pfield1(iiu,jl)) / &
221 max(1.,zw(iiu,jl-1) + zw(iiu,jl))
228 IF (pfield1(ji-1,1 )/=0. .AND. pfield1(ji,1 )/=0.)
THEN 229 pfield_xy(ji,1 ) = (zw(ji-1,1)*pfield1(ji-1,1) + zw(ji,1)*pfield1(ji,1)) / &
230 max(1.,zw(ji-1,1) + zw(ji,1))
232 IF (pfield1(ji-1,iju)/=0. .AND. pfield1(ji,iju)/=0.)
THEN 233 pfield_xy(ji,iju+1) = (zw(ji-1,iju)*pfield1(ji-1,iju) + zw(ji,iju)*pfield1(ji,iju)) / &
234 max(1.,zw(ji-1,iju) + zw(ji,iju))
239 pfield_xy(1 ,1 ) = pfield1(1 ,1 )
240 pfield_xy(iiu+1,1 ) = pfield1(iiu,1 )
241 pfield_xy(1 ,iju+1) = pfield1(1 ,iju)
242 pfield_xy(iiu+1,iju+1) = pfield1(iiu,iju)
244 IF (
lhook)
CALL dr_hook(
'BILIN_GRIDIN_5',1,zhook_handle)
subroutine bilin_gridin(PFIELD1, PFIELD_X, PFIELD_Y, PFIELD_XY)