59 USE modi_ini_var_from_patch
60 USE modi_conserv_global_mass
83 REAL,
DIMENSION(:),
INTENT(IN) :: PMESH_SIZE
85 CHARACTER(LEN=6),
INTENT(IN) :: HPROGRAM
93 REAL,
DIMENSION(:,:,:),
ALLOCATABLE :: ZZDG
94 REAL,
DIMENSION(:,:,:),
ALLOCATABLE :: ZZDG_OLD
95 REAL,
DIMENSION(:,:,:),
ALLOCATABLE :: ZWG_OLD
96 REAL,
DIMENSION(:,:,:),
ALLOCATABLE :: ZWGI_OLD
98 INTEGER,
DIMENSION(IO%NPATCH,0:NPROC-1) :: ICOUNT_ALL
99 INTEGER,
DIMENSION(IO%NPATCH) :: ICOUNT
100 INTEGER :: ILUOUT, ISIZE, JP, ICPT
101 INTEGER :: JLAYER, JNBIOMASS, JNLITTER, JNLITTLEVS, JNSOILCARB
103 INTEGER,
DIMENSION(MPI_STATUS_SIZE) :: ISTATUS
106 REAL(KIND=JPRB) :: ZHOOK_HANDLE
110 IF (
lhook)
CALL dr_hook(
'INIT_ISBA_LANDUSE',0,zhook_handle)
118 IF (pk%NSIZE_P==0)
THEN 120 ELSEIF(all(pk%XDG(:,io%NGROUND_LAYER)==pk%XDG_OLD(:,io%NGROUND_LAYER)))
THEN 127 CALL mpi_allgather(icount,
SIZE(icount)*kind(icount)/4,mpi_integer,&
128 icount_all,kind(icount_all)/4,mpi_integer,
ncomm,infompi)
131 icount_all(:,0) = icount
137 IF (all(icount_all(jp,:)/=0)) icpt = icpt + 1
140 IF ( icpt==io%NPATCH )
THEN 141 IF (
lhook)
CALL dr_hook(
'INIT_ISBA_LANDUSE',1,zhook_handle)
152 CALL ini_var_from_patch(dtco, ug, u, np, npe, io%NPATCH, hprogram,iluout,
'ICE_STO ', 0)
154 DO jlayer=1,
SIZE(npe%AL(1)%XTG,2)
155 CALL ini_var_from_patch(dtco, ug, u, np, npe, io%NPATCH, hprogram,iluout,
'TEMP GRO', 0, jlayer)
159 CALL ini_var_from_patch(dtco, ug, u, np, npe, io%NPATCH, hprogram,iluout,
'ALBSNOW ', 0)
161 IF (npe%AL(1)%TSNOW%SCHEME==
'1-L' .OR. npe%AL(1)%TSNOW%SCHEME==
'3-L' .OR. npe%AL(1)%TSNOW%SCHEME==
'CRO')
THEN 162 CALL ini_var_from_patch(dtco, ug, u, np, npe, io%NPATCH,hprogram,iluout,
'EMISSNOW', 0)
166 DO jlayer=1,npe%AL(1)%TSNOW%NLAYER
168 CALL ini_var_from_patch(dtco, ug, u, np, npe, io%NPATCH,hprogram,iluout,
'WSNOW ', 0, jlayer)
170 IF (npe%AL(1)%TSNOW%SCHEME==
'3-L' .OR. npe%AL(1)%TSNOW%SCHEME==
'CRO')
THEN 171 CALL ini_var_from_patch(dtco, ug, u, np, npe, io%NPATCH,hprogram,iluout,
'TEMPSNOW',0, jlayer)
172 CALL ini_var_from_patch(dtco, ug, u, np, npe, io%NPATCH,hprogram,iluout,
'HEATSNOW', 0, jlayer)
173 CALL ini_var_from_patch(dtco, ug, u, np, npe, io%NPATCH,hprogram,iluout,
'AGESNOW ', 0, jlayer)
176 IF (npe%AL(1)%TSNOW%SCHEME==
'1-L')
THEN 177 CALL ini_var_from_patch(dtco, ug, u, np, npe, io%NPATCH,hprogram,iluout,
'TSNOW ', 0, jlayer)
180 IF(npe%AL(1)%TSNOW%SCHEME==
'CRO')
THEN 181 CALL ini_var_from_patch(dtco, ug, u, np, npe, io%NPATCH,hprogram,iluout,
'GR1SNOW', 0, jlayer)
182 CALL ini_var_from_patch(dtco, ug, u, np, npe, io%NPATCH,hprogram,iluout,
'GR2SNOW', 0, jlayer)
183 CALL ini_var_from_patch(dtco, ug, u, np, npe, io%NPATCH,hprogram,iluout,
'HISTSNOW', 0, jlayer)
192 ALLOCATE(zzdg(
SIZE(np%AL(1)%XDG,1),
SIZE(np%AL(1)%XDG,2),io%NPATCH))
193 ALLOCATE(zzdg_old(
SIZE(np%AL(1)%XDG,1),
SIZE(np%AL(1)%XDG,2),io%NPATCH))
194 ALLOCATE(zwg_old(
SIZE(np%AL(1)%XDG,1),
SIZE(np%AL(1)%XDG,2),io%NPATCH))
195 ALLOCATE(zwgi_old(
SIZE(np%AL(1)%XDG,1),
SIZE(np%AL(1)%XDG,2),io%NPATCH))
201 isize = np%AL(jp)%NSIZE_P
202 zwg_old(1:isize,:,jp) =pek%XWG (:,:)
203 zwgi_old(1:isize,:,jp) =pek%XWGI (:,:)
204 zzdg(1:isize,1,jp) =pk%XDG (:,1)
205 zzdg_old(1:isize,1,jp) =pk%XDG_OLD(:,1)
206 IF(io%CISBA==
'DIF')
THEN 207 DO jlayer=2,io%NGROUND_LAYER
208 zzdg(1:isize,jlayer,jp) = pk%XDG (:,jlayer)-pk%XDG (:,jlayer-1)
209 zzdg_old(1:isize,jlayer,jp) = pk%XDG_OLD(:,jlayer)-pk%XDG_OLD(:,jlayer-1)
212 zzdg(:,2,jp) = pk%XDG (:,2)
213 zzdg_old(:,2,jp) = pk%XDG_OLD(:,2)
214 IF(io%CISBA==
'3-L' )
THEN 215 zzdg(:,3,jp) = pk%XDG (:,3)-pk%XDG (:,2)
216 zzdg_old(:,3,jp) = pk%XDG_OLD(:,3)-pk%XDG_OLD(:,2)
221 WHERE(zzdg(:,:,:) >1.e+10)zzdg(:,:,:)=0.
222 WHERE(zzdg_old(:,:,:)>1.e+10)zzdg_old(:,:,:)=0.
224 DO jlayer=1,io%NGROUND_LAYER
225 CALL ini_var_from_patch(dtco, ug, u, np, npe, io%NPATCH,hprogram,iluout,
'WG ', 0, jlayer)
226 CALL ini_var_from_patch(dtco, ug, u, np, npe, io%NPATCH,hprogram,iluout,
'WGI ', 0, jlayer)
230 CALL conserv_global_mass(dtco, u, np, npe, pmesh_size, io%NPATCH,iluout,zzdg,zzdg_old,
'WG ',zwg_old)
231 CALL conserv_global_mass(dtco, u, np, npe, pmesh_size,io%NPATCH,iluout,zzdg,zzdg_old,
'WGI',zwgi_old)
233 DEALLOCATE(zwg_old,zzdg,zzdg_old,zwgi_old)
239 CALL ini_var_from_patch(dtco, ug, u, np, npe, io%NPATCH,hprogram,iluout,
'RESA ', 3, jlayer)
241 DO jlayer=1,npe%AL(1)%TSNOW%NLAYER
242 CALL ini_var_from_patch(dtco, ug, u, np, npe, io%NPATCH,hprogram,iluout,
'RHOSNOW ', 3, jlayer)
245 IF (io%CPHOTO/=
'NON')
THEN 252 DO jnbiomass=1,io%NNBIOMASS
253 CALL ini_var_from_patch(dtco, ug, u, np, npe, io%NPATCH,hprogram,iluout,
'RESPBIOM', 3,jnbiomass)
254 CALL ini_var_from_patch(dtco, ug, u, np, npe, io%NPATCH,hprogram,iluout,
'BIOMASS ', 3,jnbiomass)
257 IF (io%CRESPSL==
'CNT')
THEN 259 DO jnlittlevs=1,io%NNLITTLEVS
260 CALL ini_var_from_patch(dtco, ug, u, np, npe, io%NPATCH,hprogram,iluout,
'LIGNINST',3,jnlittlevs)
261 DO jnlitter=1,io%NNLITTER
262 CALL ini_var_from_patch(dtco, ug, u, np, npe, io%NPATCH,hprogram,iluout,
'LITTER ',3,jnlitter,jnlittlevs)
266 DO jnsoilcarb=1,io%NNSOILCARB
267 CALL ini_var_from_patch(dtco, ug, u, np, npe, io%NPATCH,hprogram,iluout,
'SOILCARB',3,jnsoilcarb)
276 IF (
lhook)
CALL dr_hook(
'INIT_ISBA_LANDUSE',1,zhook_handle)
subroutine init_isba_landuse(DTCO, UG, U, IO, NK, NP, NPE, PMESH_SIZE, HPROGRAM)
subroutine get_luout(HPROGRAM, KLUOUT)
subroutine conserv_global_mass(DTCO, U, NP, NPE, PMESH_SIZE, KPAT
subroutine ini_var_from_patch(DTCO, UG, U, NP, NPE, KPATCH, HPROGRAM, KLUOUT, HNAME, KPTS, KLAYER, KLAYER2, PDE