7 plat,plon,pfield,ointerp)
51 USE yomhook
,ONLY : lhook, dr_hook
52 USE parkind1
,ONLY : jprb
61 INTEGER,
INTENT(IN) :: kluout
62 CHARACTER(LEN=4),
INTENT(IN) :: hcoortype
63 REAL,
DIMENSION(:),
INTENT(IN) :: plat_in
64 REAL,
DIMENSION(:),
INTENT(IN) :: plon_in
65 REAL,
DIMENSION(:,:),
INTENT(IN) :: pfield_in
66 REAL,
DIMENSION(:),
INTENT(IN) :: plat
67 REAL,
DIMENSION(:),
INTENT(IN) :: plon
68 REAL,
DIMENSION(:),
INTENT(INOUT) :: pfield
69 LOGICAL,
DIMENSION(:),
INTENT(IN) :: ointerp
83 INTEGER :: ji,jii,jj,ici,icj,ici_min,ici_max,icj_min,icj_max,icompt
88 REAL(KIND=JPRB) :: zrad
90 REAL(KIND=JPRB) :: zhook_handle, zhook_handle_omp
92 IF (lhook) CALL dr_hook(
'HOR_EXTRAPOL_SURF_CHEAP',0,zhook_handle)
96 WHERE (.NOT. ointerp(:)) pfield(:) = xundef
100 glalo = hcoortype==
'LALO'
107 IF (count(pfield_in(:,:)/=xundef)==0 .AND. lhook) CALL dr_hook(
'HOR_EXTRAPOL_SURF_CHEAP',1,zhook_handle)
108 IF (count(pfield_in(:,:)/=xundef)==0)
RETURN
120 IF (pfield(ji)/=xundef) cycle
121 IF (.NOT. ointerp(ji)) cycle
126 IF (lhook) CALL dr_hook(
'HOR_EXTRAPOL_SURF_CHEAP OMP',0,zhook_handle_omp)
131 zcosla=cos(zlat*zrad)
136 DO jj=
SIZE(plon_in),1,-1
137 IF (plon_in(jj)<=zlon)
THEN
143 DO jj=
SIZE(plat_in),1,-1
144 IF (plat_in(jj)<=zlat)
THEN
150 ici_min=max(ici-nhalo_prep,1)
151 ici_max=min(ici+nhalo_prep,
SIZE(plon_in))
152 icj_min=max(icj-nhalo_prep,1)
153 icj_max=min(icj+nhalo_prep,
SIZE(plat_in))
161 DO jj=icj_min,icj_max
162 DO jii=ici_min,ici_max
163 IF (pfield_in(jii,jj)/=xundef)
THEN
165 zlonsc = plon_in(jii)
167 IF (zlonsc-zlon> 180.) zlonsc = zlonsc - 360.
168 IF (zlonsc-zlon<-180.) zlonsc = zlonsc + 360.
169 zdist= (plat_in(jj)-zlat) ** 2 + ((zlonsc-zlon)*zcosla) ** 2
171 zdist= (plat_in(jj)-zlat) ** 2 + (zlonsc-zlon) ** 2
173 IF (zdist<=zndist)
THEN
174 zfield=pfield_in(jii,jj)
182 WRITE(*,*)
'NO EXTRAPOLATION : INCREASE YOUR HALO_PREP IN NAM_PREP_SURF_ATM'
183 CALL
abor1_sfx(
"HOR_EXTRAPOL_SURF_CHEAP: INCREASE YOUR HALO_PREP IN NAM_PREP_SURF_ATM")
186 IF (lhook) CALL dr_hook(
'HOR_EXTRAPOL_SURF_CHEAP OMP',1,zhook_handle_omp)
190 IF (lhook) CALL dr_hook(
'HOR_EXTRAPOL_SURF_CHEAP',1,zhook_handle)
subroutine abor1_sfx(YTEXT)