7 plat,plon,pfield,ointerp)
47 USE yomhook
,ONLY : lhook, dr_hook
48 USE parkind1
,ONLY : jprb
55 INTEGER,
INTENT(IN) :: kluout
56 CHARACTER(LEN=4),
INTENT(IN) :: hcoortype
57 REAL,
DIMENSION(:),
INTENT(IN) :: plat_in
58 REAL,
DIMENSION(:),
INTENT(IN) :: plon_in
59 REAL,
DIMENSION(:),
INTENT(IN) :: pfield_in
60 REAL,
DIMENSION(:),
INTENT(IN) :: plat
61 REAL,
DIMENSION(:),
INTENT(IN) :: plon
62 REAL,
DIMENSION(:),
INTENT(INOUT) :: pfield
63 LOGICAL,
DIMENSION(:),
INTENT(IN) :: ointerp
84 REAL(KIND=JPRB) :: zrad
86 REAL(KIND=JPRB) :: zhook_handle, zhook_handle_omp
88 IF (lhook) CALL dr_hook(
'HOR_EXTRAPOL_SURF',0,zhook_handle)
92 WHERE (.NOT. ointerp(:)) pfield(:) = xundef
96 ino_in =
SIZE(pfield_in)
98 glalo = hcoortype==
'LALO'
105 IF (count(pfield_in(:)/=xundef)==0 .AND. lhook) CALL dr_hook(
'HOR_EXTRAPOL_SURF',1,zhook_handle)
106 IF (count(pfield_in(:)/=xundef)==0)
RETURN
117 IF (pfield(ji)/=xundef) cycle
118 IF (.NOT. ointerp(ji)) cycle
123 IF (lhook) CALL dr_hook(
'HOR_EXTRAPOL_SURF OMP',0,zhook_handle_omp)
128 zcosla=cos(zlat*zrad)
134 IF (pfield_in(jisc)/=xundef)
THEN
135 zlonsc = plon_in(jisc)
137 IF (zlonsc-zlon> 180.) zlonsc = zlonsc - 360.
138 IF (zlonsc-zlon<-180.) zlonsc = zlonsc + 360.
139 zdist= (plat_in(jisc)-zlat) ** 2 + ((zlonsc-zlon)*zcosla) ** 2
141 zdist= (plat_in(jisc)-zlat) ** 2 + (zlonsc-zlon) ** 2
143 IF (zdist<=zndist)
THEN
144 zfield=pfield_in(jisc)
151 IF (lhook) CALL dr_hook(
'HOR_EXTRAPOL_SURF OMP',1,zhook_handle_omp)
155 IF (lhook) CALL dr_hook(
'HOR_EXTRAPOL_SURF',1,zhook_handle)