Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement NOAA/ARL FENGSHA dust scheme #50

Merged
merged 12 commits into from
Apr 16, 2021
Merged

Conversation

rmontuoro
Copy link
Contributor

@rmontuoro rmontuoro commented Apr 5, 2021

This PR implements the FENGSHA dust scheme as an option for the GOCART dust component.

The FENGSHA scheme, developed at NOAA/ARL, is added to the GOCART process library along with few auxiliary procedures. It requires the additional input fields below, provided as surface map files via ExtData:

# dust component
FRCLAY                '1'  Y E - none none clayfrac     ExtData/Dust/FENGSHA_DUST_INPUTS_v0.6.nc
FRSAND                '1'  Y E - none none sandfrac     ExtData/Dust/FENGSHA_DUST_INPUTS_v0.6.nc
FRSILT                '1'  Y E - none none siltfrac     ExtData/Dust/FENGSHA_DUST_INPUTS_v0.6.nc
SSM                   '1'  Y E - none none ssm          ExtData/Dust/FENGSHA_DUST_INPUTS_v0.6.nc
RDRAG                 '1'  Y E - none none drag_part    ExtData/Dust/FENGSHA_DUST_INPUTS_v0.6.nc
UTHRES                '1'  Y E - none none uthres       ExtData/Dust/FENGSHA_DUST_INPUTS_v0.6.nc

Note the E option for nearest-neighbor interpolation enabled by MAPL PR #788. Until this PR has been merged, the scheme can work (not ideally) with other interpolation methods, too.

FENGSHA also requires the liquid water content (SLC) in the soil top layer, as well as the surface snow fraction (FRSNOW). All required fields fields have been added to DU2G_StateSpecs.rc:

FRSNOW     | 1      | xy   | N   |      | surface_snow_area_fraction
SLC        | 1      | xy   | N   |      | liquid_water_content_of_soil_layer
FRCLAY     | 1      | xy   | N   |      | volume_fraction_of_clay_in_soil
FRSAND     | 1      | xy   | N   |      | volume_fraction_of_sand_in_soil
FRSILT     | 1      | xy   | N   |      | volume_fraction_of_silt_in_soil
RDRAG      | m-1    | xy   | N   |      | drag_partition
SSM        | 1      | xy   | N   |      | sediment_supply_map
UTHRES     | m s-1  | xy   | N   |      | surface_dry_threshold_velocity

Additional input parameters have also been added to the dust component's resource file (DU2G_GridComp_DU.rc):

  • emission_scheme - an integer selector for the original GOCART (1) or the FENGSHA (2) dust scheme
  • alpha, gamma - FENGSHA scaling parameters (size-independent)
  • vertical_to_horizontal_flux_ratio_limit - Maximum vertical-to-horizontal dust flux ratio, according to: B. Marticorena, G. Bergametti, J. Geophys. Res., 100(D8), 16415–16430, 1995.
# Emissions methods
emission_scheme: 2       # 1 for GOCART, 2 for FENGSHA

# FENGSHA settings
alpha: 0.3
gamma: 1.3
vertical_to_horizontal_flux_ratio_limit: 2.e-04

All FENGSHA-related parameters are read only if emission_scheme is 2.

Note also that no attempt is currently made to verify all pointers used by FENGSHA are actually allocated. I would like to have a general discussion to identify a common strategy to implement such sanity checks in GOCART, since this may affect other methods, too.

This PR was tested within UFS-GOCART on the NOAA RDHPCS Hera platform, and the generated dust distributions verified by NOAA/ARL.

@rmontuoro rmontuoro added 0 diff The changes in this pull request have verified to be zero-diff with the target branch. enhancement New feature or request labels Apr 5, 2021
@rmontuoro rmontuoro self-assigned this Apr 5, 2021
@rmontuoro rmontuoro requested review from weiyuan-jiang and a team as code owners April 5, 2021 21:49
@rmontuoro rmontuoro linked an issue Apr 5, 2021 that may be closed by this pull request
@@ -9,8 +9,16 @@ category: IMPORT
#----------------------------------------------------------------------------------------
DU_SRC | 1 | xy | N | | erod - dust emissions
FRLAKE | 1 | xy | N | | fraction_of_lake
FRSNOW | 1 | xy | N | | surface_snow_area_fraction
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Doesn't this impose a requirement on users of the default DU scheme to provide these variables? I think an additional parameter is needed in the table to make these conditional.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Conditional import variables have been implemented with commit 261a4ac

@@ -24,7 +24,7 @@ module Aerosol_Cap
implicit none

! -- import fields
integer, parameter :: importFieldCount = 26
integer, parameter :: importFieldCount = 28
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is probably a good opportunity to use newer syntax that avoids counting by the end user:

character(len=*), dimension(*), parameter :: importFieldNames =
   ["inst_pres_interface         ", &
    "inst_sensi_heat_flx          ", 
...

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Commit e8425cd incorporates the suggested syntax. Thank you!

and define import fields conditionally in the dust
component's spec resource file.
consistency with upcoming changes.
@rmontuoro rmontuoro requested a review from tclune April 8, 2021 19:09
@rmontuoro rmontuoro requested a review from tclune April 8, 2021 21:09
Comment on lines +160 to +162
distribution(n) = diameter * (1. + erf(factor * log(diameter/mmd))) &
* exp(-dlam * dlam * dlam) * log(rUp(n)/rLow(n))
dvol = dvol + distribution(n)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@rmontuoro Volume/mass fractions (the 'distribution' variable) can be computed once. Can't we afford more precise integration?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@adarmenov - Not sure I understand your question. Could you please clarify?

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@rmontuoro Let me elaborate... lines 156-163 are a fast and likely imprecise way to numerically integrate over the size distribution. I was pointing out that the integration needs to be done once, hence one can try to be numerically more precise, e.g. use more than 5 sub-bins to approximate the integral.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@adarmenov - Thank you for the clarification, I see your point. I will bring this up with NOAA/ARL, where the scheme was developed. For the time being, however, I don't expect any changes since we would like to compare the performance of the FENGSHA scheme in GOCART with the operational version, which implements this integration technique.

@tclune tclune self-requested a review April 16, 2021 20:06
@tclune tclune removed the request for review from gmao-esherman April 16, 2021 20:07
@tclune tclune requested review from weiyuan-jiang and removed request for bena-nasa April 16, 2021 20:10
@tclune tclune merged commit 207a236 into develop Apr 16, 2021
@tclune tclune deleted the feature/rmontuoro/fengsha branch April 16, 2021 20:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
0 diff The changes in this pull request have verified to be zero-diff with the target branch. enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Add NOAA/ARL FENGSHA dust scheme
4 participants