7 hphoto,pvegtype,pgmes,pco2,pgc,pdmax, &
9 pfzero,pepso,pgamm,pqdgamm,pqdgmes,pt1gmes, &
10 pt2gmes,pamax,pqdamax,pt1amax,pt2amax,pah,pbh, &
70 nvt_tebd, nvt_bone, nvt_trbe, nvt_trbd, nvt_tebe,&
71 nvt_tene, nvt_bobd, nvt_bond, nvt_shrb, nvt_gras
73 USE modd_co2v_par, ONLY : xtopt, xfzero1, xfzero2, xfzerotrop, xepso, xgamm, xqdgamm, &
74 xqdgmes, xt1gmes, xt2gmes, xamax, &
75 xqdamax, xt1amax, xt2amax, xah, xbh, &
76 xdspopt, xiaopt, xaw, xbw, xmco2, xmc, xtau_wood
85 USE yomhook
,ONLY : lhook, dr_hook
86 USE parkind1
,ONLY : jprb
94 TYPE(isba_t
),
INTENT(INOUT) :: i
96 CHARACTER(LEN=3),
INTENT(IN) :: hphoto
97 REAL,
DIMENSION(:,:),
INTENT(IN) :: pvegtype
102 REAL,
DIMENSION(:),
INTENT(IN) :: pgmes, pco2
106 REAL,
DIMENSION(:),
INTENT(IN) :: pdmax, pgc
111 REAL,
DIMENSION(:),
INTENT(OUT) :: pabc, ppoi
117 REAL,
DIMENSION(:),
INTENT(OUT) :: panmax
120 REAL,
DIMENSION(:),
INTENT(OUT) :: pfzero, pepso, pgamm, pqdgamm, pqdgmes, &
121 pt1gmes, pt2gmes, pamax, pqdamax, &
122 pt1amax, pt2amax, ptau_wood
147 REAL,
DIMENSION(:),
INTENT(OUT) :: pah, pbh
158 REAL,
DIMENSION(SIZE(PANMAX)) :: zgs, zgammt, ztopt, zanmax, zgmest, zgpp, zrdk, zepso
168 REAL,
DIMENSION(SIZE(PANMAX)) :: zco2init3, zco2init4, zco2init5, zco2init2,zco2init1
173 REAL,
DIMENSION(SIZE(PDMAX)) :: zdmax
174 REAL,
DIMENSION(SIZE(PDMAX)) :: zwork
177 REAL(KIND=JPRB) :: zhook_handle
181 IF (lhook) CALL dr_hook(
'COTWOINIT_N',0,zhook_handle)
217 CALL
gauleg(0.0,1.0,pabc,ppoi,
SIZE(pabc))
226 IF (jclass==nvt_c4 .OR. jclass==nvt_irr .OR. jclass==nvt_trog)
THEN
231 IF(i%LAGRI_TO_GRASS.AND.(jclass==nvt_c4 .OR. jclass==nvt_irr)) ico2type = 1
238 ztopt(:) = ztopt(:) + xtopt(ico2type) * pvegtype(:,jclass)
239 IF (hphoto ==
'AGS' .OR. hphoto ==
'LAI')
THEN
240 pfzero(:) = pfzero(:) + xfzero1(ico2type) * pvegtype(:,jclass)
242 IF((jclass==nvt_tebd) .OR. (jclass==nvt_bone) .OR. &
243 (jclass==nvt_trbd) .OR. (jclass==nvt_tebe) .OR. (jclass==nvt_tene) .OR. &
244 (jclass==nvt_bobd) .OR. (jclass==nvt_bond) .OR. (jclass==nvt_shrb))
THEN
245 pfzero(:) = pfzero(:) + ((xaw - log(pgmes(:)*1000.0))/xbw)*pvegtype(:,jclass)
246 ELSE IF (jclass==nvt_trbe)
THEN
247 pfzero(:) = pfzero(:) + xfzerotrop(irad) * pvegtype(:,jclass)
249 pfzero(:) = pfzero(:) + xfzero2(ico2type) * pvegtype(:,jclass)
253 pepso(:) = pepso(:) + xepso(ico2type) * pvegtype(:,jclass)
254 pgamm(:) = pgamm(:) + xgamm(ico2type) * pvegtype(:,jclass)
255 pqdgamm(:) = pqdgamm(:) + xqdgamm(ico2type) * pvegtype(:,jclass)
256 pqdgmes(:) = pqdgmes(:) + xqdgmes(ico2type) * pvegtype(:,jclass)
257 pt1gmes(:) = pt1gmes(:) + xt1gmes(ico2type) * pvegtype(:,jclass)
258 pt2gmes(:) = pt2gmes(:) + xt2gmes(ico2type) * pvegtype(:,jclass)
259 pqdamax(:) = pqdamax(:) + xqdamax(ico2type) * pvegtype(:,jclass)
260 pt1amax(:) = pt1amax(:) + xt1amax(ico2type) * pvegtype(:,jclass)
261 pt2amax(:) = pt2amax(:) + xt2amax(ico2type) * pvegtype(:,jclass)
262 pah(:) = pah(:) + xah(ico2type) * pvegtype(:,jclass)
263 pbh(:) = pbh(:) + xbh(ico2type) * pvegtype(:,jclass)
265 IF(i%LAGRI_TO_GRASS.AND.(jclass==nvt_c3 .OR. jclass==nvt_c4 .OR. jclass==nvt_irr))
THEN
271 ptau_wood(:) = ptau_wood(:) + xtau_wood(iclass) * pvegtype(:,jclass)
272 pamax(:) = pamax(:) + xamax(iclass) * pvegtype(:,jclass)
276 pqdgamm(:)=log(pqdgamm(:))
277 pqdgmes(:)=log(pqdgmes(:))
278 pqdamax(:)=log(pqdamax(:))
289 zwork(:) = (0.1*(ztopt(:)-25.0)) * pqdgamm(:)
290 zgammt(:) = pgamm(:)*exp(zwork(:))
294 zwork(:) = (0.1*(ztopt(:)-25.0)) * pqdamax(:)
295 zanmax(:) = ( pamax(:)*exp(zwork(:)) ) &
296 /( (1.0+exp(0.3*(pt1amax(:)-ztopt(:))))* &
297 (1.0+exp(0.3*(ztopt(:)-pt2amax(:)))) )
301 zwork(:) = (0.1*(ztopt(:)-25.0)) * pqdgmes(:)
302 zgmest(:) = ( pgmes(:)*exp(zwork(:)) ) &
303 /( (1.0+exp(0.3*(pt1gmes(:)-ztopt(:))))* &
304 (1.0+exp(0.3*(ztopt(:)-pt2gmes(:)))) )
309 zco2init3(:) = xdspopt
310 zco2init4(:) = xiaopt
320 zgmest(:) = zgmest(:)*zco2init5(:)
324 IF((hphoto==
'AST').OR.(hphoto==
'LST').OR.(hphoto==
'NIT').OR.(hphoto==
'NCB'))
THEN
325 zdmax(:) = exp((log(zgmest(:)*1000.)-pah(:))/pbh(:))/1000.
335 zanmax(:)=zanmax(:)/1.2
336 zepso(:)=pepso(:)/1.2
337 zgammt(:)=zgammt(:)*xmco2/xmd*1e-6
339 CALL
cotwo(pco2, zco2init5, zco2init4, zco2init3, zgammt, &
340 pfzero, zepso, zanmax, zgmest, pgc, zdmax, &
341 panmax, zgs, zrdk, zco2init2, zco2init1 )
346 IF (lhook) CALL dr_hook(
'COTWOINIT_N',1,zhook_handle)
subroutine cotwoinit_n(I, HPHOTO, PVEGTYPE, PGMES, PCO2, PGC, PDMAX, PABC, PPOI, PANMAX, PFZERO, PEPSO, PGAMM, PQDGAMM, PQDGMES, PT1GMES, PT2GMES, PAMAX, PQDAMAX, PT1AMAX, PT2AMAX, PAH, PBH, PTAU_WOOD)
subroutine cotwo(PCSP, PF2, PIA, PDS, PGAMMT, PFZERO, PEPSO, PANMAX, PGMEST, PGC, PDMAX, PAN, PGS, PRD, PLAITOP, PLAI)