-
Notifications
You must be signed in to change notification settings - Fork 63
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
Testing and Documenting Building, Running, Forcing, Hydrofabric, Initial Input Data and Realization Config on CONUS #775
base: master
Are you sure you want to change the base?
Conversation
Per some slack discussions, some things we need to consider and probably modify on these configurations from @SnowHydrology
|
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.
Looks like a good start and I've made a few suggestions of items that need updating. Please note that I call each issue out one time, but many of the issues occur multiple times. For example, I note the missing PET forcing variable mapping in bmi_multi_realization_config_w_sloth_pet_cfe_nc.json
, but it's also found in the other configs that use PET. Please make the suggested changes across all relevant files, not just the one file where the issue is noted. Thanks!
"main_output_variable": "water_potential_evaporation_flux", | ||
"registration_function": "register_bmi_pet", | ||
"variables_names_map": { | ||
"water_potential_evaporation_flux": "potential_evapotranspiration" |
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.
PET is missing the mapping for the other forcing variables that are found in the CFE variable_names_map
below. Specifically, this includes:
"atmosphere_air_water~vapor__relative_saturation" : "SPFH_2maboveground",
"land_surface_air__temperature" : "TMP_2maboveground",
"land_surface_wind__x_component_of_velocity" : "UGRD_10maboveground",
"land_surface_wind__y_component_of_velocity" : "VGRD_10maboveground",
"land_surface_radiation~incoming~longwave__energy_flux" : "DLWRF_surface",
"land_surface_radiation~incoming~shortwave__energy_flux" : "DSWRF_surface",
"land_surface_air__pressure" : "PRES_surface"
I also don't think you need the mapping of the output variable name.
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.
The realization configs have taken a major overhaul largely following @SnowHydrology's PR#788 for relevant configs. So the above point is addressed in these and the ones involve soil submodules. The above point is correct and CFE only has 5 input variables that need mapped. If output have to use specific variable names and format, that's a different matter.
"registration_function": "register_bmi_cfe", | ||
"variables_names_map": { | ||
"atmosphere_water__liquid_equivalent_precipitation_rate": "precip_rate", | ||
"atmosphere_air_water~vapor__relative_saturation": "SPFH_2maboveground", |
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.
Remove atmosphere_air_water~vapor__relative_saturation
to land_surface_air__pressure
as none of these are used by CFE. You may also need to map the PET output var here.
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 has been removed. PET output var is mapped. But may not have to, since it appears PET and CFE use the same variable name.
"main_output_variable": "Q_OUT", | ||
"registration_function": "register_bmi_cfe", | ||
"variables_names_map": { | ||
"atmosphere_water__liquid_equivalent_precipitation_rate": "precip_rate", |
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.
Is precip_rate
the correct variable name from the forcing engine?
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.
precip_rate
used to be directly taken from forcing. This is because example forcing data provide the values for this variable. Not enough attention has been paid to this as focus has been on code development. Using output variable QINSUR fron NoahOWP is apparently more proper to couple NoahOWP to CFE. Otherwise, NoahOWP has no effect.
"forcing_file": "", | ||
"init_config": "", | ||
"allow_exceed_end_time": true, | ||
"main_output_variable": "QINSUR", |
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.
I don't think this is correct. QINSUR
is the land surface water flux from Noah-OWP-Modular, which is not the final model in the stack. I think Q_OUT
is what you want here.
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.
You are right. this has been corrected.
"variables_names_map": { | ||
"PRCPNONC": "atmosphere_water__liquid_equivalent_precipitation_rate", | ||
"Q2": "atmosphere_air_water~vapor__relative_saturation", | ||
"SFCTMP": "land_surface_air__temperature", |
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.
I notice we have multiple conventions of mapping the forcing variables. Here, the mapping uses the BMI standard name convention (land_surface_air__temperature
), while it previously used what I believe to be the AORC variable names (TMP_2maboveground
). I assume this means that the forcing provider works with both conventions. However, I reckon providing both cases here without explanation will cause some confusion.
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.
One of the mappings has been removed.
"main_output_variable": "Q_OUT", | ||
"registration_function": "register_bmi_cfe", | ||
"variables_names_map": { | ||
"water_potential_evaporation_flux": "ETRAN", |
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.
ETRAN
should be replaced by EVAPOTRANS
. The former is transpiration and the latter is evapotranspiration.
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.
(and I apologize for the confusing NOM names)
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 has been changed.
"allow_exceed_end_time": true, | ||
"main_output_variable": "Q_OUT", | ||
"registration_function": "register_bmi_cfe", | ||
"variables_names_map": { |
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.
We need to add the QINSUR
mapping to this list. For CFE it should be:
"atmosphere_water__liquid_equivalent_precipitation_rate": "QINSUR",
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.
Good suggestion.
***@***.**** Thanks for the careful review and suggestions. Your
comments are generally valid based on a spreadsheet input/output variable
name list for various submodules that I am looking at. The realization
configs were based on historically built previous files which may have been
there a long time without updating. So this may be a good time to do this.
We will incorporate your suggestions and perform testing and push up the
validated new version. Thank you for taking time to review this.
…On Wed, Apr 3, 2024 at 3:06 PM K. Jennings ***@***.***> wrote:
***@***.**** requested changes on this pull request.
Looks like a good start and I've made a few suggestions of items that need
updating. Please note that I call each issue out one time, but many of the
issues occur multiple times. For example, I note the missing PET forcing
variable mapping in bmi_multi_realization_config_w_sloth_pet_cfe_nc.json,
but it's also found in the other configs that use PET. Please make the
suggested changes across all relevant files, not just the one file where
the issue is noted. Thanks!
------------------------------
In data/baseline/bmi_multi_realization_config_w_sloth_pet_cfe_nc.json
<#775 (comment)>:
> + "sloth_smp(1,double,1,node)": 0.0
+ }
+ }
+ },
+ {
+ "name": "bmi_c",
+ "params": {
+ "model_type_name": "bmi_c_pet",
+ "library_file": "./extern/evapotranspiration/evapotranspiration/cmake_build/libpetbmi",
+ "forcing_file": "",
+ "init_config": "./conus_config/PET_{{id}}.ini",
+ "allow_exceed_end_time": true,
+ "main_output_variable": "water_potential_evaporation_flux",
+ "registration_function": "register_bmi_pet",
+ "variables_names_map": {
+ "water_potential_evaporation_flux": "potential_evapotranspiration"
PET is missing the mapping for the other forcing variables that are found
in the CFE variable_names_map below. Specifically, this includes:
"atmosphere_air_water~vapor__relative_saturation" : "SPFH_2maboveground",
"land_surface_air__temperature" : "TMP_2maboveground",
"land_surface_wind__x_component_of_velocity" : "UGRD_10maboveground",
"land_surface_wind__y_component_of_velocity" : "VGRD_10maboveground",
"land_surface_radiation~incoming~longwave__energy_flux" : "DLWRF_surface",
"land_surface_radiation~incoming~shortwave__energy_flux" : "DSWRF_surface",
"land_surface_air__pressure" : "PRES_surface"
I also don't think you need the mapping of the output variable name.
------------------------------
In data/baseline/bmi_multi_realization_config_w_sloth_pet_cfe_nc.json
<#775 (comment)>:
> + "uses_forcing_file": false
+ }
+ },
+ {
+ "name": "bmi_c",
+ "params": {
+ "model_type_name": "bmi_c_cfe",
+ "library_file": "./extern/cfe/cmake_build/libcfebmi.so",
+ "forcing_file": "",
+ "init_config": "./conus_config/CFE_{{id}}.ini",
+ "allow_exceed_end_time": true,
+ "main_output_variable": "Q_OUT",
+ "registration_function": "register_bmi_cfe",
+ "variables_names_map": {
+ "atmosphere_water__liquid_equivalent_precipitation_rate": "precip_rate",
+ "atmosphere_air_water~vapor__relative_saturation": "SPFH_2maboveground",
Remove atmosphere_air_water~vapor__relative_saturation to
land_surface_air__pressure as none of these are used by CFE. You may also
need to map the PET output var here.
------------------------------
In data/baseline/bmi_multi_realization_config_w_sloth_pet_cfe_nc.json
<#775 (comment)>:
> + },
+ "uses_forcing_file": false
+ }
+ },
+ {
+ "name": "bmi_c",
+ "params": {
+ "model_type_name": "bmi_c_cfe",
+ "library_file": "./extern/cfe/cmake_build/libcfebmi.so",
+ "forcing_file": "",
+ "init_config": "./conus_config/CFE_{{id}}.ini",
+ "allow_exceed_end_time": true,
+ "main_output_variable": "Q_OUT",
+ "registration_function": "register_bmi_cfe",
+ "variables_names_map": {
+ "atmosphere_water__liquid_equivalent_precipitation_rate": "precip_rate",
Is precip_rate the correct variable name from the forcing engine?
------------------------------
In data/baseline/bmi_multi_realization_config_w_sloth_pet_noah_cfe_nc.json
<#775 (comment)>:
> @@ -0,0 +1,108 @@
+{
+ "global": {
+ "formulations": [
+ {
+ "name": "bmi_multi",
+ "params": {
+ "model_type_name": "bmi_multi_noahowp_cfe",
+ "forcing_file": "",
+ "init_config": "",
+ "allow_exceed_end_time": true,
+ "main_output_variable": "QINSUR",
I don't think this is correct. QINSUR is the land surface water flux from
Noah-OWP-Modular, which is not the final model in the stack. I think Q_OUT
is what you want here.
------------------------------
In data/baseline/bmi_multi_realization_config_w_sloth_pet_noah_cfe_nc.json
<#775 (comment)>:
> + "uses_forcing_file": false
+ }
+ },
+ {
+ "name": "bmi_fortran",
+ "params": {
+ "model_type_name": "bmi_fortran_noahowp",
+ "library_file": "./extern/noah-owp-modular/cmake_build/libsurfacebmi",
+ "forcing_file": "",
+ "init_config": "./conus_config/NoahOWP_{{id}}.namelist",
+ "allow_exceed_end_time": true,
+ "main_output_variable": "QINSUR",
+ "variables_names_map": {
+ "PRCPNONC": "atmosphere_water__liquid_equivalent_precipitation_rate",
+ "Q2": "atmosphere_air_water~vapor__relative_saturation",
+ "SFCTMP": "land_surface_air__temperature",
I notice we have multiple conventions of mapping the forcing variables.
Here, the mapping uses the BMI standard name convention (
land_surface_air__temperature), while it previously used what I believe
to be the AORC variable names (TMP_2maboveground). I assume this means
that the forcing provider works with both conventions. However, I reckon
providing both cases here without explanation will cause some confusion.
------------------------------
In data/baseline/bmi_multi_realization_config_w_sloth_pet_noah_cfe_nc.json
<#775 (comment)>:
> + },
+ "uses_forcing_file": false
+ }
+ },
+ {
+ "name": "bmi_c",
+ "params": {
+ "model_type_name": "bmi_c_cfe",
+ "library_file": "./extern/cfe/cmake_build/libcfebmi",
+ "forcing_file": "",
+ "init_config": "./conus_config/CFE_{{id}}.ini",
+ "allow_exceed_end_time": true,
+ "main_output_variable": "Q_OUT",
+ "registration_function": "register_bmi_cfe",
+ "variables_names_map": {
+ "water_potential_evaporation_flux": "ETRAN",
ETRAN should be replaced by EVAPOTRANS. The former is transpiration and
the latter is evapotranspiration.
------------------------------
In data/baseline/bmi_multi_realization_config_w_sloth_pet_noah_cfe_nc.json
<#775 (comment)>:
> + "SFCPRS": "land_surface_air__pressure"
+ },
+ "uses_forcing_file": false
+ }
+ },
+ {
+ "name": "bmi_c",
+ "params": {
+ "model_type_name": "bmi_c_cfe",
+ "library_file": "./extern/cfe/cmake_build/libcfebmi",
+ "forcing_file": "",
+ "init_config": "./conus_config/CFE_{{id}}.ini",
+ "allow_exceed_end_time": true,
+ "main_output_variable": "Q_OUT",
+ "registration_function": "register_bmi_cfe",
+ "variables_names_map": {
We need to add the QINSUR mapping to this list. For CFE it should be:
"atmosphere_water__liquid_equivalent_precipitation_rate": "QINSUR",
------------------------------
In data/baseline/bmi_multi_realization_config_w_sloth_pet_noah_cfe_nc.json
<#775 (comment)>:
> + },
+ "uses_forcing_file": false
+ }
+ },
+ {
+ "name": "bmi_c",
+ "params": {
+ "model_type_name": "bmi_c_cfe",
+ "library_file": "./extern/cfe/cmake_build/libcfebmi",
+ "forcing_file": "",
+ "init_config": "./conus_config/CFE_{{id}}.ini",
+ "allow_exceed_end_time": true,
+ "main_output_variable": "Q_OUT",
+ "registration_function": "register_bmi_cfe",
+ "variables_names_map": {
+ "water_potential_evaporation_flux": "ETRAN",
(and I apologize for the confusing NOM names)
—
Reply to this email directly, view it on GitHub
<#775 (review)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/ACA4SRK3SPPOJ4AFXGJQIDDY3ROKLAVCNFSM6AAAAABFD6OIZSVHI2DSMVQWIX3LMV43YUDVNRWFEZLROVSXG5CSMV3GSZLXHMYTSNZXGY3TOMJZG4>
.
You are receiving this because you authored the thread.Message ID:
***@***.***>
|
That is correct. I've opened issue #787 and will work on updates. |
56e983f
to
5452e2b
Compare
The realization configs have had much changes and several additions involving soil models. They have all been tested to run successfully with |
This is an initial set of realization configs with successive addition of submodules.
Additions
Realization configs for sloth, sloth+noah, sloth+noah+pet, sloth+noah+pet+cfe;
sloth+noah+pet+spm, sloth+noah+pet+smp+sft, sloth+noah+pet+smp+sft+cfe;
some configs with routing, and two configs with laternative module ordering which may provide better performance according to hydrologist.
Removals
Changes
Testing
ngen
testing on local serversScreenshots
Notes
More additions upcoming
Todos
Checklist
Testing checklist (automated report can be put here)
Target Environment support