40 USE modi_prep_buffer_grid
42 USE modi_oi_hor_extrapol_surf
49 USE modd_prep_isba
, ONLY : lextrap_sn
53 USE modd_snow_par
, ONLY : xansmin, xansmax, xrhosmax
65 TYPE(
grid_t),
INTENT(INOUT) :: G
68 CHARACTER(LEN=6),
INTENT(IN) :: HPROGRAM
69 CHARACTER(LEN=10),
INTENT(IN) :: HSURF
70 INTEGER,
INTENT(IN) :: KLUOUT
71 INTEGER,
INTENT(IN) :: KLAYER
72 REAL,
DIMENSION(:,:,:),
POINTER :: PFIELD
77 CHARACTER(LEN=6) :: YINMODEL
78 REAL,
DIMENSION(:),
POINTER :: ZFIELD1D
79 REAL,
DIMENSION(:),
POINTER :: ZHEAT
80 REAL,
DIMENSION(:),
POINTER :: ZRHO
81 REAL,
DIMENSION(:),
POINTER :: ZLSM
84 REAL,
ALLOCATABLE,
DIMENSION(:) :: ZFIELD_EP
85 REAL,
ALLOCATABLE,
DIMENSION(:) :: ZFIELD_EP_IN
86 REAL,
ALLOCATABLE,
DIMENSION(:) :: ZLSM_NATURE
87 LOGICAL,
ALLOCATABLE,
DIMENSION(:) :: OINTERP
89 INTEGER,
PARAMETER :: IDIM2=10
90 REAL(KIND=JPRB) :: ZHOOK_HANDLE
97 IF (
lhook)
CALL dr_hook(
'PREP_SNOW_BUFFER',0,zhook_handle)
105 IF (hsurf(7:8)==
'RO')
THEN 107 SELECT CASE(hsurf(1:3))
109 ALLOCATE(pfield(
nni,klayer,1))
111 ALLOCATE(pfield(
nni,1,1))
125 SELECT CASE(hsurf(1:3))
131 IF ( lextrap_sn )
THEN 132 IF (
SIZE(u%NR_NATURE) /= u%NSIZE_NATURE )
THEN 133 CALL abor1_sfx(
'ABORT: PREP_ISBA_BUFFER - DIFFERENT SIZES')
136 ALLOCATE(zfield_ep(u%NSIZE_NATURE))
137 ALLOCATE(zfield_ep_in(u%NSIZE_NATURE))
138 ALLOCATE(ointerp(u%NSIZE_NATURE))
139 ALLOCATE(zlsm_nature(u%NSIZE_NATURE))
148 WRITE(kluout,*)
'Extrapolating WWW from nearest land point in points where LSM < 0.5.' 155 DO ii=1,u%NSIZE_NATURE
156 IF ( zlsm_nature(ii) < 0.5 )
THEN 162 zfield_ep_in(:) = zfield_ep
164 CALL oi_hor_extrapol_surf(u%NSIZE_NATURE,g%XLAT,g%XLON,zfield_ep_in(:),g%XLAT,g%XLON,zfield_ep(:),ointerp,ndim2=idim2)
169 DEALLOCATE(zfield_ep)
170 DEALLOCATE(zfield_ep_in)
171 DEALLOCATE(zlsm_nature)
176 ALLOCATE(pfield(
nni,1,1))
177 pfield(:,1,1)=zfield1d(:)
185 IF ( lextrap_sn )
THEN 186 IF (
SIZE(u%NR_NATURE) /= u%NSIZE_NATURE )
THEN 187 CALL abor1_sfx(
'ABORT: PREP_ISBA_BUFFER - DIFFERENT SIZES')
190 ALLOCATE(zfield_ep(u%NSIZE_NATURE))
191 ALLOCATE(zfield_ep_in(u%NSIZE_NATURE))
192 ALLOCATE(ointerp(u%NSIZE_NATURE))
193 ALLOCATE(zlsm_nature(u%NSIZE_NATURE))
202 WRITE(kluout,*)
'Extrapolating DEP from nearest land point in points where LSM < 0.5.' 208 DO ii=1,u%NSIZE_NATURE
209 IF ( zlsm_nature(ii) < 0.5 )
THEN 215 zfield_ep_in(:) = zfield_ep
217 CALL oi_hor_extrapol_surf(u%NSIZE_NATURE,g%XLAT,g%XLON,zfield_ep_in(:),g%XLAT,g%XLON,zfield_ep(:),ointerp,ndim2=idim2)
222 DEALLOCATE(zfield_ep)
223 DEALLOCATE(zfield_ep_in)
224 DEALLOCATE(zlsm_nature)
230 ALLOCATE(pfield(
nni,1,1))
231 pfield(:,1,1) = zfield1d(:)
240 WHERE (zfield1d/=
xundef) zfield1d(:) = min(zfield1d,
xtt)
242 ALLOCATE(pfield(
nni,1,1))
243 pfield(:,1,1)=zfield1d(:)
249 ALLOCATE(pfield(
nni,1,1))
250 pfield = 0.5 * ( xansmin + xansmax )
255 ALLOCATE(pfield(
nni,1,1))
268 IF (
lhook)
CALL dr_hook(
'PREP_SNOW_BUFFER',1,zhook_handle)
subroutine read_buffer_land_mask(KLUOUT, HINMODEL, PMASK)
subroutine prep_buffer_grid(KLUOUT, HINMODEL, TPTIME_BUF)
subroutine read_buffer_snow_veg_depth(KLUOUT, HINMODEL, PFIELD)
character(len=6) cinterp_type
subroutine abor1_sfx(YTEXT)
subroutine prep_snow_buffer(G, U, HPROGRAM, HSURF, KLUOUT, KLAYER, PFIELD)
subroutine read_buffer_ts(KLUOUT, HINMODEL, PFIELD)
subroutine read_buffer_snow_veg(KLUOUT, HINMODEL, PFIELD)
real, dimension(ngrid_level) xgrid_snow