noaa-oar-arl / canopy-app

Stand-alone/column canopy codes and parameterizations
MIT License
6 stars 6 forks source link

[Biogenics] Add Soil Moisture Gamma #113

Closed drnimbusrain closed 4 months ago

drnimbusrain commented 5 months ago

@MaggieMarvin As discussed, we will need to also add a soil moisture gamma factor into the biogenic emissions (for isoprene only), which will be based on the GWETROOT = degree of saturation or wetness in the root-zone (top meter of soil). This is defined as the ratio of the volumetric soil moisture to the porosity. This can be calculated from input GFS soil moisture (Noah and Noah-MP models include four soil layers, centred at 5, 25, 70, and 150 cm).

        float soilw1(time, grid_yt, grid_xt) ;
                soilw1:long_name = "volumetric soil moisture 0-10cm" ;
                soilw1:units = "fraction" ;
                soilw1:missing_value = 9.99e+20f ;
                soilw1:_FillValue = 9.99e+20f ;
                soilw1:cell_methods = "time: point" ;
                soilw1:output_file = "sfc" ;
        float soilw2(time, grid_yt, grid_xt) ;
                soilw2:long_name = "volumetric soil moisture 10-40cm" ;
                soilw2:units = "fraction" ;
                soilw2:missing_value = 9.99e+20f ;
                soilw2:_FillValue = 9.99e+20f ;
                soilw2:cell_methods = "time: point" ;
                soilw2:output_file = "sfc" ;
        float soilw3(time, grid_yt, grid_xt) ;
                soilw3:long_name = "volumetric soil moisture 40-100cm" ;
                soilw3:units = "fraction" ;
                soilw3:missing_value = 9.99e+20f ;
                soilw3:_FillValue = 9.99e+20f ;
                soilw3:cell_methods = "time: point" ;
                soilw3:output_file = "sfc" ;
        float soilw4(time, grid_yt, grid_xt) ;
                soilw4:long_name = "volumetric soil moisture 100-200cm" ;
                soilw4:units = "fraction" ;
                soilw4:missing_value = 9.99e+20f ;
                soilw4:_FillValue = 9.99e+20f ;
                soilw4:cell_methods = "time: point" ;
                soilw4:output_file = "sfc" 

I think we can initially follow MEGANv2 in HEMCO: https://github.com/geoschem/HEMCO/blob/main/src/Extensions/hcox_megan_mod.F90#L2467, or use MEGANv3 soil moisture corrections.

To get the volumetric soil moisture in top meter of soil, we can average the first three layers soilw1, soilw2, and soilw3, but need to get porosity to get GWETROOT, which can be associated with soil types, also available in the GFS data:

float sotyp(time, grid_yt, grid_xt) ;
                sotyp:long_name = "soil type in integer 1-9" ;
                sotyp:units = "number" ;
                sotyp:missing_value = 9.99e+20f ;
                sotyp:_FillValue = 9.99e+20f ;
                sotyp:cell_methods = "time: point" ;
                sotyp:output_file = "sfc" ;

Alternatively, as discussed in Guenther et al. 2006 and shown in Eqs 20a-c, we can use the wilting point instead of porosity, which is available in the GFS data too, and use a PFT dependent root depth fraction (see Eq. 2 and Table 2 in Zeng 2001) and all soil levels to calculate the weighted average gamma soil moisture to use here. I favor this approach as it can be used across any soil layer depths in model or observations.

float wilt(time, grid_yt, grid_xt) ;
                wilt:long_name = "wiltimg point (volumetric)" ;
                wilt:units = "Proportion" ;
                wilt:missing_value = 9.99e+20f ;
                wilt:_FillValue = 9.99e+20f ;
                wilt:cell_methods = "time: point" ;
                wilt:output_file = "sfc" ;

@angehung5 After we get this working in canopy-app using the already included four soil moisture parameters and the soil type or wilting point (dependent on approach) in the GFS sfc NetCDF files, we will need to add similar columns in the text files for example SE files in the GH repo.