Skip to content

Commit

Permalink
Added new bio_vert=1 option for MEGANv3-like sum.
Browse files Browse the repository at this point in the history
  • Loading branch information
drnimbusrain committed May 22, 2023
1 parent 570037a commit cf5275f
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 4 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -197,7 +197,7 @@ https://nacc-in-the-cloud.s3.amazonaws.com/inputs/geo-files/gfs.canopy.t12z.2022
| `lu_opt` | integer for input model land use type (`0`: VIIRS 17 Cat (default) or `1`: MODIS-IGBP 20 Cat (valid LU types 1-10 and 12); input mapped to Massman et al.) |
| `z0_opt` | integer (`0`: use model input or `1`: vegtype dependent z0 for first estimate) |
| `bio_cce` | user-set real value of MEGAN biogenic emissions "canopy environment coefficient" used to tune emissions to model inputs/calculations (default: `0.21`, based on Silva et al. 2020) |
| `bio_vert` | user set biogenic vertical integration option (default = 0/no integration, full leaf-level biogenic emissions) |
| `bio_vert` | user set biogenic vertical summing option (`0`: no sum, full leaf-level biogenic emissions, units=kg/m3/s; `1`: MEGANv3-like summing of equally weighted activity coefficients acoss all sub-canopy layers, caution-- units=kg/m2/s and puts the total emissions in the topmost canopy-app model layer only ) |
| `lai_thresh` | user-set real value of LAI threshold for contiguous canopy (m2/m2) |
| `frt_thresh` | user-set real value of forest fraction threshold for contiguous canopy |
| `fch_thresh` | user-set real value of canopy height threshold for contiguous canopy (m) |
Expand Down
15 changes: 12 additions & 3 deletions src/canopy_bioemi_mod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -93,10 +93,11 @@ SUBROUTINE CANOPY_BIO( ZK, FCLAI, FCH, LAI, CLU, COSZEN, SFCRAD, &
REAL(RK) :: E_OPT(SIZE(ZK)) ! maximum normalized emission capacity
REAL(RK) :: TLEAF_OPT(SIZE(ZK)) ! Tleaf at which E_OPT occurs (K)
REAL(RK) :: FLAI(SIZE(ZK)) ! Fractional LAI in layer
REAL(RK) :: VPGWT(SIZE(ZK)) ! MEGANv3-like in-canopy weighting factor
REAL(RK) :: CT1 ! Activation energy (kJ/mol)
REAL(RK) :: CEO ! Empirical coefficient
REAL(RK) :: EF ! Final Mapped Emission factor (EF) (ug/m2 hr)
integer i
integer i, LAYERS

! Constant Canopy Parameters
REAL(RK), PARAMETER :: FRAC_PAR = 0.5_rk !Fraction of incoming solar irradiance that is PAR
Expand Down Expand Up @@ -302,15 +303,23 @@ SUBROUTINE CANOPY_BIO( ZK, FCLAI, FCH, LAI, CLU, COSZEN, SFCRAD, &
! Calculate emissions profile in the canopy
EMI_OUT = 0.0_rk ! set initial emissions profile to zero

if (VERT .eq. 0) then !Full 3D leaf-level biogenic emissions (no averaging, summing, or integration)
if (VERT .eq. 0) then !Full 3D leaf-level biogenic emissions (no averaging, summing, or integration)
do i=1, SIZE(ZK)
if (ZK(i) .gt. 0.0 .and. ZK(i) .le. FCH) then ! above ground level and at/below canopy top
FLAI(i) = ((FCLAI(i+1) - FCLAI(i)) * LAI)/MODRES !fractional LAI in each layer converted to LAD (m2 m-3)
EMI_OUT(i) = FLAI(i) * EF * GammaTLEAF_AVE(i) * GammaPPFD_AVE(i) * CCE ! (ug m-3 hr-1)
EMI_OUT(i) = EMI_OUT(i) * 2.7777777777778E-13_rk !convert emissions output to (kg m-3 s-1)
end if
end do
else !Need to add vertical sum/ave/integ options here...
else if (VERT .eq. 1) then !MEGANv3: Add weighted sum of activity coefficients for all canopy layers
LAYERS = floor(FCH/MODRES)
do i=1, SIZE(ZK)
VPGWT(i) = 1.0_rk/LAYERS !constant weighting factors across depth of canopy

This comment has been minimized.

Copy link
@zmoon

zmoon May 22, 2023

Member

instead of uniform, maybe we can determine what distribution the 5 weights are based on and use that

This comment has been minimized.

Copy link
@drnimbusrain

drnimbusrain via email May 23, 2023

Author Member

This comment has been minimized.

Copy link
@zmoon

zmoon May 23, 2023

Member

since MEGAN3 uses uniform for other than 5 layers though

But the intention seems to be that the 5 layers be used.

Maybe the true intention is to weight more the layers with more leaf area. We could use our LAD shape function to make the weights.

This comment has been minimized.

Copy link
@drnimbusrain

drnimbusrain via email May 23, 2023

Author Member

This comment has been minimized.

Copy link
@zmoon

zmoon May 23, 2023

Member

But if MEGAN's intention was to weight by LAD, then maybe that should be option 1. It makes sense, more leaf area for a layer means, all else being equal, it will emit more, so its environment matters more.

This comment has been minimized.

Copy link
@drnimbusrain

drnimbusrain via email May 24, 2023

Author Member

This comment has been minimized.

Copy link
@zmoon

zmoon May 24, 2023

Member

But 5 layers, the default setting, does have weights. To me, this suggests that they just didn't implement the weights for other numbers of layers not equal to 5, but didn't want the model to fail. That is, I doubt that they really mean to suggest that 4 or 6 layers should be weighted equally but 5 not.

This comment has been minimized.

Copy link
@drnimbusrain

drnimbusrain via email May 24, 2023

Author Member

This comment has been minimized.

Copy link
@zmoon

zmoon May 25, 2023

Member

Yeah, might be worth asking them.

This comment has been minimized.

Copy link
@drnimbusrain

drnimbusrain via email May 25, 2023

Author Member

This comment has been minimized.

Copy link
@drnimbusrain

drnimbusrain via email May 25, 2023

Author Member
end do
EMI_OUT(SIZE(ZK)) = LAI * EF * SUM(GammaTLEAF_AVE(1:LAYERS) * GammaPPFD_AVE(1:LAYERS) * &
VPGWT(1:LAYERS)) * CCE !put into top model layer (ug m-2 hr-1)
EMI_OUT = EMI_OUT * 2.7777777777778E-13_rk !convert emissions output to (kg m-2 s-1)
else
write(*,*) 'Wrong BIO_VERT choice of ', VERT, ' in namelist...exiting'
call exit(2)
end if
Expand Down

0 comments on commit cf5275f

Please sign in to comment.