40 USE modi_prep_buffer_grid
44 USE modd_prep_isba
, ONLY : xgrid_soil, xwr_def
49 USE modi_oi_hor_extrapol_surf
64 TYPE(
grid_t),
INTENT(INOUT) :: G
67 CHARACTER(LEN=6),
INTENT(IN) :: HPROGRAM
68 CHARACTER(LEN=7),
INTENT(IN) :: HSURF
69 INTEGER,
INTENT(IN) :: KLUOUT
70 REAL,
DIMENSION(:,:,:),
POINTER :: PFIELD
75 CHARACTER(LEN=6) :: YINMODEL
76 REAL,
DIMENSION(:,:),
POINTER :: ZFIELD
77 REAL,
DIMENSION(:),
POINTER :: ZFIELD1D
78 REAL,
DIMENSION(:,:),
POINTER :: ZD
79 REAL,
DIMENSION(:),
POINTER :: ZLSM
80 REAL,
DIMENSION(:),
POINTER :: ZALT
81 REAL,
ALLOCATABLE,
DIMENSION(:) :: ZFIELD_EP
82 REAL,
ALLOCATABLE,
DIMENSION(:) :: ZFIELD_EP_IN
83 REAL,
ALLOCATABLE,
DIMENSION(:) :: ZLSM_NATURE
84 REAL,
ALLOCATABLE,
DIMENSION(:) :: ZALT_NATURE
85 LOGICAL,
ALLOCATABLE,
DIMENSION(:) :: OINTERP
87 REAL(KIND=JPRB) :: ZHOOK_HANDLE
94 IF (
lhook)
CALL dr_hook(
'PREP_ISBA_BUFFER',0,zhook_handle)
110 SELECT CASE(yinmodel)
113 IF ( lextrap_tg )
THEN 114 IF (
SIZE(u%NR_NATURE) /= u%NSIZE_NATURE )
THEN 115 CALL abor1_sfx(
'ABORT: PREP_ISBA_BUFFER - DIFFERENT SIZES')
118 ALLOCATE(zfield_ep(u%NSIZE_NATURE))
119 ALLOCATE(zfield_ep_in(u%NSIZE_NATURE))
120 ALLOCATE(ointerp(u%NSIZE_NATURE))
121 ALLOCATE(zlsm_nature(u%NSIZE_NATURE))
122 ALLOCATE(zalt_nature(u%NSIZE_NATURE))
133 DO ilayer=1,
SIZE(zfield,2)
134 WRITE(kluout,*)
'Extrapolating TG from nearest land point in points where LSM < 0.5. LAYER:',ilayer
140 DO ii=1,u%NSIZE_NATURE
141 IF ( zlsm_nature(ii) < 0.5 )
THEN 147 zfield_ep_in(:) = zfield_ep(:)
149 CALL oi_hor_extrapol_surf(u%NSIZE_NATURE,g%XLAT,g%XLON,zfield_ep_in(:), &
150 g%XLAT,g%XLON,zfield_ep(:),ointerp,pzs=zalt,ndim2=10)
156 DEALLOCATE(zfield_ep)
157 DEALLOCATE(zfield_ep_in)
158 DEALLOCATE(zlsm_nature)
159 DEALLOCATE(zalt_nature)
169 SELECT CASE(yinmodel)
170 CASE(
'ARPEGE',
'ALADIN',
'MOCAGE')
172 IF ( lextrap_wg )
THEN 173 IF (
SIZE(u%NR_NATURE) /= u%NSIZE_NATURE )
THEN 174 CALL abor1_sfx(
'ABORT: PREP_ISBA_BUFFER - DIFFERENT SIZES')
177 ALLOCATE(zfield_ep(u%NSIZE_NATURE))
178 ALLOCATE(zfield_ep_in(u%NSIZE_NATURE))
179 ALLOCATE(ointerp(u%NSIZE_NATURE))
180 ALLOCATE(zlsm_nature(u%NSIZE_NATURE))
189 DO ilayer=1,
SIZE(zfield,2)
190 WRITE(kluout,*)
'Extrapolating WG from nearest land point in points where LSM < 0.5. LAYER:',ilayer
197 DO ii=1,u%NSIZE_NATURE
198 IF ( zlsm_nature(ii) < 0.5 )
THEN 204 zfield_ep_in(:) = zfield_ep
206 CALL oi_hor_extrapol_surf(u%NSIZE_NATURE,g%XLAT,g%XLON,zfield_ep_in(:), &
207 g%XLAT,g%XLON,zfield_ep(:),ointerp,ndim2=10)
213 DEALLOCATE(zfield_ep)
214 DEALLOCATE(zfield_ep_in)
215 DEALLOCATE(zlsm_nature)
228 SELECT CASE(yinmodel)
231 IF ( lextrap_wgi )
THEN 233 IF (
SIZE(u%NR_NATURE) /= u%NSIZE_NATURE )
THEN 234 CALL abor1_sfx(
'ABORT: PREP_ISBA_BUFFER - DIFFERENT SIZES')
238 ALLOCATE(zfield_ep(u%NSIZE_NATURE))
239 ALLOCATE(zfield_ep_in(u%NSIZE_NATURE))
240 ALLOCATE(ointerp(u%NSIZE_NATURE))
241 ALLOCATE(zlsm_nature(u%NSIZE_NATURE))
250 DO ilayer=1,
SIZE(zfield,2)
251 WRITE(kluout,*)
'Extrapolating WGI from nearest land point in points where LSM < 0.5. LAYER:',ilayer
257 DO ii=1,u%NSIZE_NATURE
258 IF ( zlsm_nature(ii) < 0.5 )
THEN 264 zfield_ep_in(:) = zfield_ep
266 CALL oi_hor_extrapol_surf(u%NSIZE_NATURE,g%XLAT,g%XLON,zfield_ep_in(:), &
267 g%XLAT,g%XLON,zfield_ep(:),ointerp,ndim2=10)
273 DEALLOCATE(zfield_ep)
274 DEALLOCATE(zfield_ep_in)
275 DEALLOCATE(zlsm_nature)
286 ALLOCATE(pfield(
nni,1,1))
287 pfield(:,:,:) = xwr_def
290 ALLOCATE(pfield(
nni,1,1))
298 ALLOCATE(pfield(
SIZE(zfield1d,1),1,1))
299 pfield(:,1,1)=zfield1d(:)
303 ALLOCATE(pfield(
nni,1,1))
307 CALL abor1_sfx(
'PREP_ISBA_BUFFER: '//
trim(hsurf)//
" initialization not implemented !")
320 IF (
lhook)
CALL dr_hook(
'PREP_ISBA_BUFFER',1,zhook_handle)
328 REAL,
DIMENSION(:,:),
ALLOCATABLE :: ZOUT
329 REAL(KIND=JPRB) :: ZHOOK_HANDLE
335 IF (
lhook)
CALL dr_hook(
'SOIL_PROFILE_BUFFER',0,zhook_handle)
336 ALLOCATE(zout(
SIZE(zfield,1),
SIZE(xgrid_soil)))
340 ALLOCATE(pfield(
SIZE(zfield,1),
SIZE(xgrid_soil),1))
341 pfield(:,:,1)=zout(:,:)
346 IF (
lhook)
CALL dr_hook(
'SOIL_PROFILE_BUFFER',1,zhook_handle)
static const char * trim(const char *name, int *n)
subroutine read_buffer_tg(KLUOUT, HINMODEL, PFIELD, PD)
subroutine prep_isba_buffer(G, U, HPROGRAM, HSURF, KLUOUT, PFIELD)
subroutine read_buffer_land_mask(KLUOUT, HINMODEL, PMASK)
subroutine read_buffer_wgi(KLUOUT, HINMODEL, PFIELD, PD)
subroutine prep_buffer_grid(KLUOUT, HINMODEL, TPTIME_BUF)
character(len=6) cinterp_type
subroutine abor1_sfx(YTEXT)
subroutine read_buffer_zs(KLUOUT, HINMODEL, PFIELD)
subroutine read_buffer_wg(KLUOUT, HINMODEL, PFIELD, PD)
subroutine soil_profile_buffer