7 HPROGRAM,HSURF,HATMFILE,HATMFILETYPE,HPGDFILE,HPGDFILETYPE,YDCTL)
41 USE modd_co2v_par
, ONLY : xca_nit, xcc_nit
47 USE modd_data_cover_par
, ONLY : nvegtype
52 USE modi_read_prep_isba_conf
55 USE modi_vegtype_grid_to_patch_grid
57 USE modi_prep_isba_cc_extern
58 USE modi_put_on_all_vegtypes
59 USE modi_get_prep_interp
77 INTEGER,
INTENT(IN) :: KLAT
83 type(
prep_ctl),
INTENT(INOUT) :: ydctl
85 CHARACTER(LEN=6),
INTENT(IN) :: HPROGRAM
86 CHARACTER(LEN=8),
INTENT(IN) :: HSURF
87 CHARACTER(LEN=28),
INTENT(IN) :: HATMFILE
88 CHARACTER(LEN=6),
INTENT(IN) :: HATMFILETYPE
89 CHARACTER(LEN=28),
INTENT(IN) :: HPGDFILE
90 CHARACTER(LEN=6),
INTENT(IN) :: HPGDFILETYPE
95 REAL,
DIMENSION(:,:),
ALLOCATABLE :: ZOUT
98 TYPE(fout),
DIMENSION(:),
ALLOCATABLE :: AL
106 CHARACTER(LEN=6) :: YFILETYPE
107 CHARACTER(LEN=28) :: YFILE
108 CHARACTER(LEN=6) :: YFILEPGDTYPE
109 CHARACTER(LEN=28) :: YFILEPGD
110 REAL,
POINTER,
DIMENSION(:,:,:) :: ZFIELDIN
111 REAL,
POINTER,
DIMENSION(:,:,:) :: ZFIELDOUTP
112 REAL,
POINTER,
DIMENSION(:,:,:) :: ZFIELDOUTV
121 INTEGER :: INL, INP, JJ, JL
124 REAL,
DIMENSION(:,:),
ALLOCATABLE :: ZPATCH
126 REAL(KIND=JPRB) :: ZHOOK_HANDLE
129 IF (
lhook)
CALL dr_hook(
'PREP_HOR_ISBA_CC_FIELD',0,zhook_handle)
136 hatmfile,hatmfiletype,hpgdfile,hpgdfiletype,iluout,gunif)
146 NULLIFY (zfieldin, zfieldoutp, zfieldoutv)
148 IF (ydctl%LPART1)
THEN 152 ELSE IF (yfiletype==
'ASCLLV')
THEN 154 ELSE IF (yfiletype==
'GRIB ')
THEN 156 ELSE IF (yfiletype==
'MESONH' .OR. yfiletype==
'ASCII ' .OR. yfiletype==
'LFI '&
157 .OR.yfiletype==
'FA '.OR. yfiletype==
'AROME '.OR.yfiletype==
'NC ')
THEN 158 CALL prep_isba_cc_extern(gcp,hprogram,hsurf,yfile,yfiletype,yfilepgd,yfilepgdtype,iluout,zfieldin,gprep_ags)
159 ELSE IF (yfiletype==
'BUFFER')
THEN 161 ELSE IF (yfiletype==
'NETCDF')
THEN 164 CALL abor1_sfx(
'PREP_HOR_ISBA_CC_FIELD: data file type not supported : '//yfiletype)
167 inl =
SIZE(zfieldin,2)
168 inp =
SIZE(zfieldin,3)
177 IF (ydctl%LPART3)
THEN 182 inl =
SIZE(zfieldin,2)
183 inp =
SIZE(zfieldin,3)
184 ELSEIF (.NOT.
ASSOCIATED(zfieldin))
THEN 185 ALLOCATE(zfieldin(0,0,0))
190 CALL mpi_bcast(inl,kind(inl)/4,mpi_integer,
npio,
ncomm,infompi)
191 CALL mpi_bcast(inp,kind(inp)/4,mpi_integer,
npio,
ncomm,infompi)
194 ALLOCATE(zfieldoutp(klat,inl,inp))
197 ALLOCATE(zpatch(klat,inp))
204 linterp(:) = (zpatch(:,jp) > 0.)
205 CALL hor_interpol(dtco, u, gcp, iluout,zfieldin(:,:,jp),zfieldoutp(:,:,jp))
217 IF (ydctl%LPART5)
THEN 219 ALLOCATE(zw%AL(io%NPATCH))
223 inl =
SIZE (zfieldoutp,2)
224 inp =
SIZE (zfieldoutp,3)
226 IF (io%NPATCH/=inp)
THEN 228 ALLOCATE(zfieldoutv(klat,inl,nvegtype))
231 DEALLOCATE(zfieldoutp)
241 ALLOCATE(zw%AL(jp)%ZOUT(pk%NSIZE_P,inl))
244 pk%NR_P,zfieldoutv,zw%AL(jp)%ZOUT)
247 DEALLOCATE(zfieldoutv)
255 ALLOCATE(zw%AL(jp)%ZOUT(pk%NSIZE_P,inl))
261 DEALLOCATE(zfieldoutp)
274 ALLOCATE(zw%AL(jp)%ZOUT(pk%NSIZE_P,io%NNBIOMASS))
275 zw%AL(jp)%ZOUT(:,:) = 0.
276 WHERE(pek%XLAI(:)/=
xundef)
277 zw%AL(jp)%ZOUT(:,1) = pek%XLAI(:) * pk%XBSLAI_NITRO(:)
279 zw%AL(jp)%ZOUT(:,2) = max( 0., (zw%AL(jp)%ZOUT(:,1)/ (xcc_nit/10.**xca_nit)) &
280 **(1.0/(1.0-xca_nit)) - zw%AL(jp)%ZOUT(:,1) )
283 ALLOCATE(zw%AL(jp)%ZOUT(pk%NSIZE_P,io%NNLITTER*io%NNLITTLEVS))
284 zw%AL(jp)%ZOUT(:,:) = 0.0
287 ALLOCATE(zw%AL(jp)%ZOUT(pk%NSIZE_P,io%NNSOILCARB))
288 zw%AL(jp)%ZOUT(:,:) = 0.0
291 ALLOCATE(zw%AL(jp)%ZOUT(pk%NSIZE_P,io%NNLITTLEVS))
292 zw%AL(jp)%ZOUT(:,:) = 0.0
311 ALLOCATE(pek%XBIOMASS(pk%NSIZE_P,io%NNBIOMASS))
312 inl=min(io%NNBIOMASS,
SIZE(zw%AL(jp)%ZOUT,2))
314 WHERE(zw%AL(jp)%ZOUT(:,jl)/=
xundef)
315 pek%XBIOMASS(:,jl) = zw%AL(jp)%ZOUT(:,jl)
317 pek%XBIOMASS(:,jl) = 0.0
320 IF(io%NNBIOMASS>inl)
THEN 321 DO jl=inl+1,io%NNBIOMASS
322 WHERE(zw%AL(jp)%ZOUT(:,jl)/=
xundef)
323 pek%XBIOMASS(:,jl) = zw%AL(jp)%ZOUT(:,inl)
325 pek%XBIOMASS(:,jl) = 0.0
336 ALLOCATE(pek%XLITTER(pk%NSIZE_P,io%NNLITTER,io%NNLITTLEVS))
339 DO jl=1,io%NNLITTLEVS
341 WHERE(zw%AL(jp)%ZOUT(:,inl)/=
xundef)
342 pek%XLITTER(:,jj,jl) = zw%AL(jp)%ZOUT(:,inl)
344 pek%XLITTER(:,jj,jl) = 0.0
355 ALLOCATE(pek%XSOILCARB(pk%NSIZE_P,io%NNSOILCARB))
356 WHERE(zw%AL(jp)%ZOUT(:,:)/=
xundef)
357 pek%XSOILCARB(:,:) = zw%AL(jp)%ZOUT(:,:)
359 pek%XSOILCARB(:,:) = 0.0
368 ALLOCATE(pek%XLIGNIN_STRUC(pk%NSIZE_P,io%NNLITTLEVS))
369 WHERE(zw%AL(jp)%ZOUT(:,:)/=
xundef)
370 pek%XLIGNIN_STRUC(:,:) = zw%AL(jp)%ZOUT(:,:)
372 pek%XLIGNIN_STRUC(:,:) = 0.0
379 DEALLOCATE(zw%AL(jp)%ZOUT)
389 IF (
lhook)
CALL dr_hook(
'PREP_HOR_ISBA_CC_FIELD',1,zhook_handle)
subroutine get_prep_interp(KNP_IN, KNP_OUT, PVEGTYPE, PPATCH_IN, PPATCH_OUT, KMASK_IN)
subroutine put_on_all_vegtypes(KNI, KLAYER, KPATCH, KVEGTYPE, PFIELD_P
subroutine vegtype_grid_to_patch_grid(KPATCH, KNPATCH, PVEGTYPE_PATCH, PPATCH, KMASK, PFIELDOUT, PW)
subroutine abor1_sfx(YTEXT)
subroutine prep_isba_cc_extern(GCP, HPROGRAM, HSURF, HFILE, HFILETYPE, HFILEPGD, HFILEPGDTYPE, KLUOUT, PFIELD, OPREP_AGS)
logical, dimension(:), allocatable linterp
subroutine hor_interpol(DTCO, U, GCP, KLUOUT, PFIELDIN, PFIELDOUT)
subroutine read_prep_isba_conf(HPROGRAM, HVAR, HFILE, HFILETYPE, HFILE
integer, parameter nundef
subroutine get_luout(HPROGRAM, KLUOUT)
subroutine prep_hor_isba_cc_field(DTCO, U, GCP, KLAT, IO, S, NK, NP, NPE, HPROGRAM, HSURF, HATMFILE, HATMFILETYPE, HPGDFILE, HPGDFILETYPE, YDCTL)