-
Notifications
You must be signed in to change notification settings - Fork 15
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
Conversation
@@ -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 |
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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
ESMF/UFS/Aerosol_Cap.F90
Outdated
@@ -24,7 +24,7 @@ module Aerosol_Cap | |||
implicit none | |||
|
|||
! -- import fields | |||
integer, parameter :: importFieldCount = 26 | |||
integer, parameter :: importFieldCount = 28 |
There was a problem hiding this comment.
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 ",
...
There was a problem hiding this comment.
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.
Set string length of input option string to `ESMF_MAXSTR`.
distribution(n) = diameter * (1. + erf(factor * log(diameter/mmd))) & | ||
* exp(-dlam * dlam * dlam) * log(rUp(n)/rLow(n)) | ||
dvol = dvol + distribution(n) |
There was a problem hiding this comment.
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?
There was a problem hiding this comment.
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?
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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.
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:
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 toDU2G_StateSpecs.rc
: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 schemealpha
,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.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.