6 SUBROUTINE bilin_coef (KLUOUT,PX1,PY1,PX2,PY2,PCX,PCY,KCI,KCJ)
96 INTEGER,
INTENT(IN) :: KLUOUT
97 REAL,
DIMENSION(:),
INTENT(IN) :: PX1
98 REAL,
DIMENSION(:),
INTENT(IN) :: PY1
99 REAL,
DIMENSION(:),
INTENT(IN) :: PX2
100 REAL,
DIMENSION(:),
INTENT(IN) :: PY2
101 REAL,
DIMENSION(:,:),
INTENT(OUT) :: PCX, PCY
102 INTEGER,
DIMENSION(:),
INTENT(OUT):: KCI, KCJ
108 REAL,
DIMENSION (SIZE(PX1)+1) :: ZX
109 REAL,
DIMENSION (SIZE(PY1)+1) :: ZY
115 INTEGER :: IDMIN, IDMAX
123 REAL(KIND=JPRB) :: ZHOOK_HANDLE, ZHOOK_HANDLE_OMP
135 zx(1) = 1.5*px1(1) -0.5*px1(2)
136 zx(iiu+1) = 1.5*px1(iiu)-0.5*px1(iiu-1)
138 zx(jj) = 0.5*(px1(jj-1)+px1(jj))
141 zx(1) = px1(1) - 1.e6
142 zx(2) = px1(1) + 1.e6
146 zy(1) = 1.5*py1(1) -0.5*py1(2)
147 zy(iju+1) = 1.5*py1(iju)-0.5*py1(iju-1)
149 zy(jj) = 0.5*(py1(jj-1)+py1(jj))
152 zy(1) = py1(1) - 1.e6
153 zy(2) = py1(1) + 1.e6
169 IF (
lhook)
CALL dr_hook(
'BILIN_COEF_2',0,zhook_handle_omp)
173 IF (zx(jj)<=px2(jl))
THEN 179 IF (zy(jj)<=py2(jl))
THEN 186 IF (
lhook)
CALL dr_hook(
'BILIN_COEF_2',1,zhook_handle_omp)
196 ji=max(min(ji,iiu),0)
197 IF (px1(ji)<=px2(jl))
THEN 198 pcx(jl,2) = (px2(jl)-zx(ji+1))/(px1(ji)-zx(ji+1))
199 pcx(jl,2) = max(min(pcx(jl,2),1.),0.)
200 pcx(jl,3) = 1. - pcx(jl,2)
203 pcx(jl,2) = (px2(jl)-zx(ji))/(px1(ji)-zx(ji))
204 pcx(jl,2) = max(min(pcx(jl,2),1.),0.)
205 pcx(jl,1) = 1. - pcx(jl,2)
212 jj=max(min(jj,iju),0)
213 IF (py1(jj)<=py2(jl))
THEN 214 pcy(jl,2) = (py2(jl)-zy(jj+1))/(py1(jj)-zy(jj+1))
215 pcy(jl,2) = max(min(pcy(jl,2),1.),0.)
216 pcy(jl,3) = 1. - pcy(jl,2)
219 pcy(jl,2) = (py2(jl)-zy(jj))/(py1(jj)-zy(jj))
220 pcy(jl,2) = max(min(pcy(jl,2),1.),0.)
221 pcy(jl,1) = 1. - pcy(jl,2)
subroutine bilin_coef(KLUOUT, PX1, PY1, PX2, PY2, PCX, PCY, KCI, KCJ)