Closed penguian closed 1 year ago
@yh4968@nci.org.au uploaded file switches -dryLeaf.docx
(48.1 KiB)
@ccc561@nci.org.au commented
Relevant file: https://trac.nci.org.au/svn/cable/branches/Share/ESM15-CABLE3_draft1/science/canopy/cbl_dryLeaf.F90
First change:
frac42 = SPREAD(veg%frac4, 2, mf) ! frac C4 plants
IF( cable_runtime%esm15_dryLeaf ) THEN
gsw_term = Cgsw03 * (1. - frac42) + Cgsw04 * frac42
lower_limit2 = rad%scalex * (Cgsw03 * (1. - frac42) + Cgsw04 * frac42)
ELSE
gsw_term = SPREAD(veg%gswmin,2,mf)
lower_limit2 = rad%scalex * gsw_term
ENDIF
veg%gswmin
and veg%frac4
or frac42
are PFT parameters. Cgsw03
and Cgsw04
are constants from https://trac.nci.org.au/svn/cable/branches/Share/ESM15-CABLE3_draft1/params/cable_photo_constants_mod.F90
If I take the values in the pft_params.nml file in offline/ and replace in the code, the 2 options are the same. That is, veg types 7 and 10 have gsw_term=0.04 and other vegetation types have gsw_term=0.01.
The question is do we want to force the relationship of frac4 and gsw_term to the one in the ESM1.5 or do we want to allow more freedom by using the gswmin
vegetation parameter which could be set differently in pft_params.nml?
Another case where input parameters have replaced hard-coded values, so just need to check that values used are the same as for ESM1.5.
@ccc561@nci.org.au changed _comment0 which not transferred by tractive
@rml599@nci.org.au changed _comment1 which not transferred by tractive
@ccc561@nci.org.au commented
Second change:
IF( cable_runtime%esm15_dryLeaf ) THEN
! Calculate fraction of canopy which is wet:
canopy%fwet(i) = MAX( 0.0, MIN( 1.0, 0.8 * canopy%cansto(i)/ MAX( &
cansat(i),0.01 ) ) )
ENDIF
Already discussed in ticket #341
@ccc561@nci.org.au commented
Third change:
! Michaelis menten constant of Rubisco for CO2:
IF( cable_runtime%esm15_dryLeaf ) THEN
conkct(i) = Cconkc0 * EXP( (Cekc / ( Crgas*Ctrefk) ) * &
( 1.0 - Ctrefk/tlfx(i) ) )
! Michaelis menten constant of Rubisco for oxygen:
conkot(i) = Cconko0 * EXP( ( Ceko / (Crgas*Ctrefk) ) * &
( 1.0 - Ctrefk/tlfx(i) ) )
ELSE
conkct(i) = veg%conkc0(i) * EXP( ( veg%ekc(i) / (Crgas*Ctrefk) ) &
* ( 1.0 - Ctrefk/tlfx(i) ) )
! Michaelis menten constant of Rubisco for oxygen:
conkot(i) = veg%conko0(i) * EXP( ( veg%eko(i) / (Crgas*Ctrefk) ) &
* ( 1.0 - Ctrefk/tlfx(i) ) )
ENDIF
Differences are between:
This seems again a question of whether we want to use fixed constants given by the code or use more flexibility by introducing new pft parameters.
@ccc561@nci.org.au commented
Fourth change is more complicated.
rdx(i,1) = (Ccfrd3*vcmxt3(i,1) + Ccfrd4*vcmxt4(i,1))
rdx(i,2) = (Ccfrd3*vcmxt3(i,2) + Ccfrd4*vcmxt4(i,2))
IF( cable_runtime%esm15_dryLeaf ) THEN
xleuning(i,1) = ( fwsoil(i) / ( csx(i,1) - co2cp3 ) ) &
* ( ( 1.0 - veg%frac4(i) ) * CA1C3 / ( 1.0 + dsx(i) &
/ Cd0c3 ) + veg%frac4(i) * CA1C4 / (1.0+dsx(i)/ &
Cd0c4) )
xleuning(i,2) = ( fwsoil(i) / ( csx(i,2)-co2cp3 ) ) &
* ( (1.0-veg%frac4(i) ) * CA1C3 / ( 1.0 + dsx(i) /&
Cd0c3 ) + veg%frac4(i) * CA1C4 / (1.0+ dsx(i)/&
Cd0c4) )
gs_coeff(:,:) = xleuning(:,:)
ELSE
IF (cable_user%CALL_climate) THEN
( CALL_climate special case we don't care about)
ELSE !cable_user%call_climate
!!$!Vanessa:note there is no xleuning to go into photosynthesis etc anymore
!!$ gs_coeff = xleuning
rdx(i,1) = (veg%cfrd(i)*vcmxt3(i,1) + veg%cfrd(i)*vcmxt4(i,1))
rdx(i,2) = (veg%cfrd(i)*vcmxt3(i,2) + veg%cfrd(i)*vcmxt4(i,2))
ENDIF !cable_user%call_climate
ENDIF ! IF( cable_runtime%esm15_dryLeaf ) THEN
If we look at the top lines (rdx) and bottom lines also for rdx, these seem similar but again with a difference between constants in the code or pft parameters. Need to check Ccfrd3
and Ccfrd4
are the same. Confirmed 'Ccfrd3 # 0.010', 'Ccfrd4 0.025' whereas veg%cfrd seems to be 0.015 for c3 types and 0.025 for c4 types. Looks like we should be able to delete the top rdx lines and just change the cfrd parameter values to reproduce ESM1.5 behaviour.
ccfrd3 and ccfrd4 are set in cable_photo_constants.mod veg%cfrd set in cable_pft_params.F90 Values currently not consistent. Retire ccfrd3/4 and only set through cable_pft_params.F90. Need to look for more generic solution going forward for setting these types of parameters. Need to check if any of the other parameters in cable_photo_constants.mod are also doubled up.
Traced change in ccfrd3 value from 0.015 to 0.010 to ESM1.5/CABLE2.4 version documented in Sec 2.2.2 of Ziehn et al., JSHESS, 2020 (https://www.publish.csiro.au/es/ES19035) as part of tuning to improve leaf respiration/productivity.
To understand the xleuning
and gs_coeff
lines, we need to look at the next difference:
! Ticket #56 added switch for Belinda Medlyn's model
IF ( cable_user%GS_SWITCH == 'leuning') THEN
IF( .NOT. cable_runtime%esm15_dryLeaf ) THEN
gs_coeff(i,1) = ( fwsoil(i) / ( csx(i,1) - co2cp3 ) ) &
* ( veg%a1gs(i) / ( 1.0 + dsx(i)/veg%d0gs(i)))
gs_coeff(i,2) = ( fwsoil(i) / ( csx(i,2) - co2cp3 ) ) &
* ( veg%a1gs(i) / ( 1.0 + dsx(i)/veg%d0gs(i)))
ENDIF ! IF( .NOT. cable_runtime%esm15_dryLeaf ) THEN
ELSEIF(cable_user%GS_SWITCH == 'medlyn') THEN
These lines could be equivalent but we would need to check the values of the constants and the new pft parameters a1gs
and d0gs
.
But otherwise, it seems the code was modified in its structure because of the introduction of the Medlyn case.
@rml599@nci.org.au changed _comment0 which not transferred by tractive
@rml599@nci.org.au changed _comment1 which not transferred by tractive
@rml599@nci.org.au changed _comment2 which not transferred by tractive
@rml599@nci.org.au changed _comment3 which not transferred by tractive
@ccc561@nci.org.au commented
Fifth change:
IF( .NOT. cable_runtime%esm15_dryLeaf ) THEN
dsx(i)= MAX(dsx(i),0.0)
END IF
I have no idea of the impact of this change. It potentially needs to be investigated on its own.
@ccc561@nci.org.au commented
Last change:
canopy%frday = 12.0 * SUM(rdy, 2)
IF( cable_runtime%esm15_dryLeaf ) THEN
canopy%fpn = -12.0 * SUM(an_y, 2)
ELSE
canopy%fpn = MIN(-12.0 * SUM(an_y, 2), canopy%frday)
END IF
Yingping highlighted previously that the trunk version is scientifically wrong. Probably the change with the most impact - but why does it run OK with ESM1.5? Is the condition or similar somewhere else? TO BE RESOLVED SOMETIME
But Yingping said:
If you turn off that line of code, at night time, water, energy and carbon fluxes went crazy. That line of code simply covers up the abnormal carbon flux, water and energy fluxes are not corrected. The fundamental issue lies elsewhere.
@rml599@nci.org.au changed _comment0 which not transferred by tractive
@rml599@nci.org.au changed _comment1 which not transferred by tractive
@jxs599@nci.org.au changed status from new
to closed
@jxs599@nci.org.au set resolution to fixed
@jxs599@nci.org.au set milestone to 1. Closed
@ccc561@nci.org.au set keywords to maygit
keyword_maygit
owner:jxs599@nci.org.au
resolution_fixed
type_defect
| by yh4968see attachment
Issue migrated from trac:350 at 2023-11-27 11:43:39 +1100