Copy disabled (too large)
Download .txt
Showing preview only (10,084K chars total). Download the full file to get everything.
Repository: NCAR/wrf_hydro_nwm_public
Branch: main
Commit: 694109d42232
Files: 740
Total size: 9.5 MB
Directory structure:
gitextract_36al2cpr/
├── .github/
│ ├── CODESTYLE.md
│ ├── CONTRIBUTING.md
│ ├── ISSUE_TEMPLATE/
│ │ └── bug_report.md
│ ├── PULL_REQUEST_TEMPLATE.md
│ └── workflows/
│ └── test-pr.yml
├── .gitignore
├── .readthedocs.yaml
├── CITATION.cff
├── CMakeLists.txt
├── CODE_OF_CONDUCT.md
├── LICENSE.txt
├── NEWS.md
├── docs/
│ ├── BUILD.rst
│ ├── Makefile
│ ├── requirements.txt
│ └── userguide/
│ ├── _static/
│ │ └── ug_theme.css
│ ├── appendices.rest
│ ├── conf.py
│ ├── index.rest
│ ├── input-tables/
│ │ ├── Fulldom_hires.tsv
│ │ ├── geo_em.tsv
│ │ └── wrfinput.tsv
│ ├── introduction.rest
│ ├── meta.rest
│ ├── model-code-config.rest
│ ├── model-inputs-preproc.rest
│ ├── model-outputs.rest
│ ├── model-physics.rest
│ ├── nudging.rest
│ ├── output-tables/
│ │ ├── CHANOBS_DOMAIN.csv
│ │ ├── CHRTOUT_DOMAIN.csv
│ │ ├── CHRTOUT_GRID.csv
│ │ ├── GWOUT_DOMAIN.csv
│ │ ├── LAKEOUT_DOMAIN.csv
│ │ ├── LDASOUT_DOMAIN.csv
│ │ ├── LSMOUT.csv
│ │ └── RTOUT_DOMAIN.csv
│ └── references.rest
├── src/
│ ├── .nwm_version
│ ├── .version
│ ├── CMakeLists.txt
│ ├── CPL/
│ │ ├── CLM_cpl/
│ │ │ ├── Makefile
│ │ │ ├── Makefile.cpl
│ │ │ ├── bat2.csh
│ │ │ ├── cesm_cpl_compiling.csh
│ │ │ ├── clm_drv_HYDRO.F
│ │ │ └── module_clm_HYDRO.F
│ │ ├── LIS_cpl/
│ │ │ ├── Makefile
│ │ │ ├── Makefile.cpl
│ │ │ ├── lis_drv_HYDRO.F
│ │ │ └── module_lis_HYDRO.F
│ │ ├── NUOPC_cpl/
│ │ │ ├── .gitignore
│ │ │ ├── CMakeLists.txt
│ │ │ ├── Doxyfile
│ │ │ ├── Makefile
│ │ │ ├── WRFHydro_ESMF_Extensions.F90
│ │ │ ├── WRFHydro_NUOPC_Cap.F90
│ │ │ ├── WRFHydro_NUOPC_Fields.F90
│ │ │ ├── WRFHydro_NUOPC_Flags.F90
│ │ │ ├── WRFHydro_NUOPC_Gluecode.F90
│ │ │ ├── WRFHydro_NUOPC_Macros.h
│ │ │ └── analysis/
│ │ │ ├── ferret_NUOPC_import.jnl
│ │ │ ├── ferret_NUOPC_mask.jnl
│ │ │ ├── grid_NUOPC_CONUS.ncl
│ │ │ └── grid_NUOPC_Global.ncl
│ │ ├── NoahMP_cpl/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── Makefile
│ │ │ ├── hrldas_drv_HYDRO.F
│ │ │ └── module_hrldas_HYDRO.F
│ │ ├── Noah_cpl/
│ │ │ ├── Makefile
│ │ │ ├── hrldas_drv_HYDRO.F
│ │ │ └── module_hrldas_HYDRO.F
│ │ └── WRF_cpl/
│ │ ├── CMakeLists.txt
│ │ ├── Makefile
│ │ ├── Makefile.cpl
│ │ ├── module_wrf_HYDRO.F90
│ │ ├── module_wrf_HYDRO_downscale.F90
│ │ └── wrf_drv_HYDRO.F90
│ ├── Data_Rec/
│ │ ├── CMakeLists.txt
│ │ ├── Makefile
│ │ ├── module_RT_data.F90
│ │ ├── module_gw_gw2d_data.F90
│ │ ├── module_namelist.F90
│ │ ├── module_namelist_inc.F90
│ │ └── module_rt_inc.F90
│ ├── Debug_Utilities/
│ │ ├── CMakeLists.txt
│ │ ├── Makefile
│ │ └── debug_dump_variable.F90
│ ├── Doc/
│ │ └── link_to_documentation.txt
│ ├── HYDRO_drv/
│ │ ├── CMakeLists.txt
│ │ ├── Makefile
│ │ └── module_HYDRO_drv.F90
│ ├── IO/
│ │ ├── CMakeLists.txt
│ │ ├── Makefile
│ │ └── netcdf_layer.F90
│ ├── Land_models/
│ │ ├── Noah/
│ │ │ ├── CHANGES
│ │ │ ├── CMakeLists.txt
│ │ │ ├── GRAPHICS/
│ │ │ │ ├── HORIZ/
│ │ │ │ │ ├── Makefile
│ │ │ │ │ ├── kwm_date_utilities.F
│ │ │ │ │ ├── kwm_string_utilities.F
│ │ │ │ │ ├── lccone.F
│ │ │ │ │ ├── llxy_generic.F
│ │ │ │ │ ├── module_2ddata.F
│ │ │ │ │ ├── module_plot2d_graphics.F
│ │ │ │ │ ├── namelist.plt2d
│ │ │ │ │ └── plt2d.F
│ │ │ │ └── TIME_SERIES/
│ │ │ │ ├── Makefile
│ │ │ │ ├── kwm_date_utilities.F
│ │ │ │ ├── kwm_string_utilities.F
│ │ │ │ ├── lccone.F
│ │ │ │ ├── ldasout_timeseries.F
│ │ │ │ ├── llxy_generic.F
│ │ │ │ ├── module_plotts_graphics.F
│ │ │ │ ├── module_ptdata.F
│ │ │ │ ├── namelist.pltts
│ │ │ │ └── namelist.pltts.sample
│ │ │ ├── HRLDAS_COLLECT_DATA/
│ │ │ │ ├── GRIB_TABLES/
│ │ │ │ │ ├── GRIB1_PARAMETER_TABLE
│ │ │ │ │ └── GRIB2_PARAMETER_TABLE
│ │ │ │ ├── Makefile
│ │ │ │ ├── consolidate_grib.F
│ │ │ │ ├── lib/
│ │ │ │ │ ├── Makefile
│ │ │ │ │ ├── arguments_module.F
│ │ │ │ │ ├── cio.c
│ │ │ │ │ ├── decode_jpeg2000.c
│ │ │ │ │ ├── gbytesys.F
│ │ │ │ │ ├── get_unused_unit.F
│ │ │ │ │ ├── io_f.c
│ │ │ │ │ ├── kwm_date_utilities.F
│ │ │ │ │ ├── kwm_grid_utilities.F
│ │ │ │ │ ├── kwm_string_utilities.F
│ │ │ │ │ ├── kwm_timing_utilities.F
│ │ │ │ │ ├── module_geo_em.F
│ │ │ │ │ ├── module_grib.F
│ │ │ │ │ ├── module_grib1.F
│ │ │ │ │ ├── module_grib2.F
│ │ │ │ │ ├── module_grib2_tables.F
│ │ │ │ │ ├── module_grib_common.F
│ │ │ │ │ ├── module_input_data_structure.F
│ │ │ │ │ ├── module_llxy.F
│ │ │ │ │ ├── module_mapinfo.F
│ │ │ │ │ ├── module_wrfinputfile.F
│ │ │ │ │ ├── swap4c.c
│ │ │ │ │ ├── swap4f.F
│ │ │ │ │ └── trig_degrees.F
│ │ │ │ └── run/
│ │ │ │ ├── Makefile
│ │ │ │ ├── README.namelist
│ │ │ │ ├── namelist.example.complex
│ │ │ │ ├── namelist.example.simple
│ │ │ │ └── namelist.input
│ │ │ ├── IO_code/
│ │ │ │ ├── Makefile
│ │ │ │ ├── Noah_hrldas_driver.F
│ │ │ │ └── module_hrldas_netcdf_io.F
│ │ │ ├── Makefile
│ │ │ ├── Noah/
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── Makefile
│ │ │ │ ├── module_sf_noahlsm.F
│ │ │ │ ├── module_sf_noahlsm.F.org
│ │ │ │ └── module_sf_urban.F
│ │ │ ├── Run/
│ │ │ │ ├── GENPARM.TBL
│ │ │ │ ├── LANDUSE.TBL
│ │ │ │ ├── Makefile
│ │ │ │ ├── SOILPARM.TBL
│ │ │ │ ├── URBPARM.TBL
│ │ │ │ └── VEGPARM.TBL
│ │ │ ├── Utility_programs/
│ │ │ │ ├── Makefile
│ │ │ │ ├── gcip_sw_to_grib/
│ │ │ │ │ ├── Makefile
│ │ │ │ │ ├── srb_daily_to_grib.F
│ │ │ │ │ └── srb_monthly_to_grib.F
│ │ │ │ ├── geth_newdate.c
│ │ │ │ ├── gribbyte.c
│ │ │ │ ├── gribedition.c
│ │ │ │ ├── gribextract.c
│ │ │ │ ├── hrldas_extract_point.F
│ │ │ │ ├── lccone.F
│ │ │ │ ├── llxy_generic.F
│ │ │ │ ├── modify_wrfinput.F
│ │ │ │ └── vectorize/
│ │ │ │ ├── check_test.ncl
│ │ │ │ ├── check_wrfinput.ncl
│ │ │ │ ├── namelist.vectorize
│ │ │ │ ├── procedure.txt
│ │ │ │ ├── vectorize.perl
│ │ │ │ ├── vectorize_geo_em.F
│ │ │ │ ├── vectorize_ldasin.F
│ │ │ │ └── vectorize_wrfinput.f90
│ │ │ ├── Utility_routines/
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── Makefile
│ │ │ │ ├── kwm_string_utilities.F
│ │ │ │ ├── module_Noahlsm_utility.F
│ │ │ │ ├── module_date_utilities.F
│ │ │ │ ├── module_model_constants.F
│ │ │ │ └── module_sfcdif_wrf.F
│ │ │ ├── Utility_scripts/
│ │ │ │ ├── modify_wrfinput.ncl
│ │ │ │ ├── nam_3d_gribextract.csh
│ │ │ │ ├── ncep_rad_gribextract.csh
│ │ │ │ └── ndas_surface_gribextract.csh
│ │ │ ├── VERIFICATION/
│ │ │ │ ├── Fluxes_statistics/
│ │ │ │ │ ├── Makefile
│ │ │ │ │ ├── fluxes_statistics.F
│ │ │ │ │ ├── get_unused_unit.F
│ │ │ │ │ ├── kwm_date_utilities.F
│ │ │ │ │ ├── kwm_grid_utilities.F
│ │ │ │ │ ├── kwm_plot_utilities.F
│ │ │ │ │ ├── kwm_string_utilities.F
│ │ │ │ │ ├── lccone.F
│ │ │ │ │ ├── llxy_generic.F
│ │ │ │ │ ├── module_hd.F
│ │ │ │ │ └── namelist.fluxstats
│ │ │ │ └── OKMeso_statistics/
│ │ │ │ ├── Makefile
│ │ │ │ ├── get_unused_unit.F
│ │ │ │ ├── kwm_date_utilities.F
│ │ │ │ ├── kwm_plot_utilities.F
│ │ │ │ ├── kwm_string_utilities.F
│ │ │ │ ├── lccone.F
│ │ │ │ ├── llxy_generic.F
│ │ │ │ ├── module_hd.F
│ │ │ │ ├── okmeso.namelist
│ │ │ │ ├── rdbz.c
│ │ │ │ ├── rdmet.F
│ │ │ │ ├── rdsom.F
│ │ │ │ └── rdsom_mem.F
│ │ │ ├── user_build_options.bak
│ │ │ ├── user_build_options.gfort
│ │ │ ├── user_build_options.gfortran
│ │ │ ├── user_build_options.linux
│ │ │ └── user_build_options.linux.sequential
│ │ └── NoahMP/
│ │ ├── CMakeLists.txt
│ │ ├── HRLDAS_forcing/
│ │ │ ├── Makefile
│ │ │ ├── create_forcing.F
│ │ │ ├── lib/
│ │ │ │ ├── Makefile
│ │ │ │ ├── arguments_module.F
│ │ │ │ ├── cio.c
│ │ │ │ ├── decode_jpeg2000.c
│ │ │ │ ├── gbytesys.F
│ │ │ │ ├── get_unused_unit.F
│ │ │ │ ├── io_f.c
│ │ │ │ ├── kwm_date_utilities.F
│ │ │ │ ├── kwm_grid_utilities.F
│ │ │ │ ├── kwm_string_utilities.F
│ │ │ │ ├── kwm_timing_utilities.F
│ │ │ │ ├── module_geo_em.F
│ │ │ │ ├── module_grib.F
│ │ │ │ ├── module_grib1.F
│ │ │ │ ├── module_grib2.F
│ │ │ │ ├── module_grib2_tables.F
│ │ │ │ ├── module_grib_common.F
│ │ │ │ ├── module_input_data_structure.F
│ │ │ │ ├── module_llxy.F
│ │ │ │ ├── module_mapinfo.F
│ │ │ │ ├── module_wrfinputfile.F
│ │ │ │ ├── swap4c.c
│ │ │ │ ├── swap4f.F
│ │ │ │ └── trig_degrees.F
│ │ │ └── run/
│ │ │ ├── Makefile
│ │ │ ├── README.namelist
│ │ │ └── examples/
│ │ │ ├── GLDAS/
│ │ │ │ ├── check_SW.ncl
│ │ │ │ ├── combine_precips.f90
│ │ │ │ ├── combine_precips.perl
│ │ │ │ ├── create_UV.f90
│ │ │ │ ├── create_UV.perl
│ │ │ │ ├── extract_gldas.perl
│ │ │ │ ├── extract_gldas_init.perl
│ │ │ │ ├── fill_SSRD.f90
│ │ │ │ ├── fill_SSRD.perl
│ │ │ │ ├── gribtab_GLDAS_NOAH.gtb
│ │ │ │ └── namelist.input.GLDAS
│ │ │ ├── NARR/
│ │ │ │ ├── check_SW.ncl
│ │ │ │ ├── extract_narr_30m.perl
│ │ │ │ ├── extract_narr_init.perl
│ │ │ │ ├── extract_narr_sfc.perl
│ │ │ │ ├── fill_DSWRF.f90
│ │ │ │ ├── fill_DSWRF.perl
│ │ │ │ └── namelist.input.NARR
│ │ │ ├── NLDAS/
│ │ │ │ ├── extract_nldas.perl
│ │ │ │ ├── extract_nldas_init.perl
│ │ │ │ └── namelist.input.NLDAS
│ │ │ ├── namelist.example.complex
│ │ │ ├── namelist.example.simple
│ │ │ └── vector/
│ │ │ ├── create_ldasin_files.ncl
│ │ │ └── create_setup.ncl
│ │ ├── IO_code/
│ │ │ ├── Makefile
│ │ │ ├── main_hrldas_driver.F
│ │ │ ├── module_NoahMP_hrldas_driver.F
│ │ │ └── module_hrldas_netcdf_io.F
│ │ ├── Makefile
│ │ ├── README
│ │ ├── Utility_routines/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── Makefile
│ │ │ ├── kwm_string_utilities.F
│ │ │ ├── module_date_utilities.F
│ │ │ ├── module_model_constants.F
│ │ │ └── module_wrf_utilities.F
│ │ ├── data_structures/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── Makefile
│ │ │ ├── forcing.f90
│ │ │ ├── geometry.f90
│ │ │ ├── parameters.f90
│ │ │ └── state.f90
│ │ ├── hydro/
│ │ │ ├── Makefile.hydro
│ │ │ ├── Makefile_run
│ │ │ └── user_build_options.bak
│ │ ├── phys/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── Makefile
│ │ │ ├── module_sf_noahmp_glacier.F
│ │ │ ├── module_sf_noahmp_groundwater.F
│ │ │ ├── module_sf_noahmpdrv.F
│ │ │ ├── module_sf_noahmplsm.F
│ │ │ └── surfex/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── Makefile
│ │ │ ├── ini_csts.F
│ │ │ ├── modd_csts.F
│ │ │ ├── modd_snow_metamo.F
│ │ │ ├── modd_snow_par.F
│ │ │ ├── modd_surf_atm.F
│ │ │ ├── mode_snow3l.F
│ │ │ ├── mode_surf_coefs.F
│ │ │ ├── mode_thermos.F
│ │ │ ├── module_snowcro.F
│ │ │ ├── module_snowcro_intercept.F
│ │ │ └── tridiag_ground_snowcro.F
│ │ ├── run/
│ │ │ ├── GENPARM.TBL
│ │ │ ├── MPTABLE.TBL
│ │ │ ├── Makefile
│ │ │ └── SOILPARM.TBL
│ │ └── version
│ ├── MPP/
│ │ ├── CMakeLists.txt
│ │ ├── CPL_WRF.F90
│ │ ├── Makefile
│ │ ├── Makefile.NoahMP
│ │ ├── hashtable.F90
│ │ ├── module_mpp_GWBUCKET.F90
│ │ ├── module_mpp_ReachLS.F90
│ │ └── mpp_land.F90
│ ├── Makefile
│ ├── OrchestratorLayer/
│ │ ├── CMakeLists.txt
│ │ ├── Makefile
│ │ ├── config.F90
│ │ ├── io_manager.F90
│ │ └── orchestrator.F90
│ ├── README.build.md
│ ├── Rapid_routing/
│ │ ├── .gitignore
│ │ ├── .rapid_init.F90.swp
│ │ ├── LICENSE
│ │ ├── README
│ │ ├── hrldas_RAPID_drv.F90
│ │ ├── hrldas_RAPID_wrapper.F90
│ │ ├── makefile
│ │ ├── makefile.cpl
│ │ ├── makefile.orig
│ │ ├── rapid_arrays.F90
│ │ ├── rapid_close_Qfor_file.F90
│ │ ├── rapid_close_Qhum_file.F90
│ │ ├── rapid_close_Qobs_file.F90
│ │ ├── rapid_close_Qout_file.F90
│ │ ├── rapid_close_Vlat_file.F90
│ │ ├── rapid_create_Qout_file.F90
│ │ ├── rapid_create_obj.F90
│ │ ├── rapid_destro_obj.F90
│ │ ├── rapid_final.F90
│ │ ├── rapid_get_Qdam.F90
│ │ ├── rapid_hsh_mat.F90
│ │ ├── rapid_init.F90
│ │ ├── rapid_main.F90
│ │ ├── rapid_namelist
│ │ ├── rapid_net_mat.F90
│ │ ├── rapid_net_mat_brk.F90
│ │ ├── rapid_obs_mat.F90
│ │ ├── rapid_open_Qfor_file.F90
│ │ ├── rapid_open_Qhum_file.F90
│ │ ├── rapid_open_Qobs_file.F90
│ │ ├── rapid_open_Qout_file.F90
│ │ ├── rapid_open_Vlat_file.F90
│ │ ├── rapid_phiroutine.F90
│ │ ├── rapid_read_Qfor_file.F90
│ │ ├── rapid_read_Qhum_file.F90
│ │ ├── rapid_read_Qobs_file.F90
│ │ ├── rapid_read_Vlat_file.F90
│ │ ├── rapid_read_namelist.F90
│ │ ├── rapid_routing.F90
│ │ ├── rapid_routing_param.F90
│ │ ├── rapid_script.sh
│ │ ├── rapid_set_Qext0.F90
│ │ ├── rapid_var.F90
│ │ └── rapid_write_Qout_file.F90
│ ├── Routing/
│ │ ├── CMakeLists.txt
│ │ ├── Diversions/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── Makefile
│ │ │ ├── module_diversions.F90
│ │ │ └── module_diversions_timeslice.F90
│ │ ├── Makefile
│ │ ├── Noah_distr_routing.F90
│ │ ├── Noah_distr_routing_overland.F90
│ │ ├── Noah_distr_routing_subsurface.F90
│ │ ├── Overland/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── Makefile
│ │ │ ├── module_overland.F90
│ │ │ ├── module_overland_control.F90
│ │ │ ├── module_overland_mass_balance.F90
│ │ │ ├── module_overland_routing_properties.F90
│ │ │ ├── module_overland_streams_and_lakes.F90
│ │ │ ├── overland.md
│ │ │ └── overland_tests.F90
│ │ ├── Reservoirs/
│ │ │ ├── .gitignore
│ │ │ ├── CMakeLists.txt
│ │ │ ├── Level_Pool/
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── Makefile
│ │ │ │ ├── module_levelpool.F90
│ │ │ │ ├── module_levelpool_properties.F90
│ │ │ │ ├── module_levelpool_state.F90
│ │ │ │ └── module_levelpool_tests.F90
│ │ │ ├── Makefile
│ │ │ ├── Persistence_Level_Pool_Hybrid/
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── Makefile
│ │ │ │ ├── module_persistence_levelpool_hybrid.F90
│ │ │ │ ├── module_persistence_levelpool_hybrid_properties.F90
│ │ │ │ ├── module_persistence_levelpool_hybrid_state.F90
│ │ │ │ └── module_persistence_levelpool_hybrid_tests.F90
│ │ │ ├── Persistence_Level_Pool_Hybrid_Module_README.md
│ │ │ ├── RFC_Forecasts/
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── Makefile
│ │ │ │ ├── module_rfc_forecasts.F90
│ │ │ │ ├── module_rfc_forecasts_properties.F90
│ │ │ │ ├── module_rfc_forecasts_state.F90
│ │ │ │ └── module_rfc_forecasts_tests.F90
│ │ │ ├── RFC_Forecasts_Module_README.md
│ │ │ ├── module_reservoir.F90
│ │ │ ├── module_reservoir_read_rfc_time_series_data.F90
│ │ │ ├── module_reservoir_read_timeslice_data.F90
│ │ │ ├── module_reservoir_utilities.F90
│ │ │ └── reservoir_tests.F90
│ │ ├── Subsurface/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── Makefile
│ │ │ ├── module_subsurface.F90
│ │ │ ├── module_subsurface_grid_transform.F90
│ │ │ ├── module_subsurface_input.F90
│ │ │ ├── module_subsurface_output.F90
│ │ │ ├── module_subsurface_properties.F90
│ │ │ ├── module_subsurface_state.F90
│ │ │ ├── module_subsurface_static_data.F90
│ │ │ └── subsurface_tests.F90
│ │ ├── module_GW_baseflow.F90
│ │ ├── module_HYDRO_io.F90
│ │ ├── module_HYDRO_utils.F90
│ │ ├── module_NWM_io.F90
│ │ ├── module_NWM_io_dict.F90
│ │ ├── module_RT.F90
│ │ ├── module_UDMAP.F90
│ │ ├── module_channel_routing.F90
│ │ ├── module_date_utilities_rt.F90
│ │ ├── module_gw_gw2d.F90
│ │ ├── module_lsm_forcing.F90
│ │ ├── module_noah_chan_param_init_rt.F90
│ │ └── module_reservoir_routing.F90
│ ├── arc/
│ │ ├── Makefile.Noah
│ │ ├── Makefile.NoahMP
│ │ ├── Makefile.mpp
│ │ ├── macros.gordon
│ │ ├── macros.gordon.debug
│ │ ├── macros.mpp.IBM.xlf90_r
│ │ ├── macros.mpp.cray_fortran
│ │ ├── macros.mpp.gfort
│ │ ├── macros.mpp.ifort
│ │ ├── macros.mpp.ifort.omp
│ │ ├── macros.mpp.intel.cray_xc
│ │ ├── macros.mpp.linux
│ │ └── macros.mpp.mpiifort
│ ├── cmake-modules/
│ │ ├── FindESMF.cmake
│ │ └── FindNetCDF.cmake
│ ├── compile_offline_Noah.sh
│ ├── compile_offline_NoahMP.sh
│ ├── compile_options.json
│ ├── configure
│ ├── deprecated/
│ │ ├── README.build.txt
│ │ ├── build_install.sh
│ │ └── build_install_theia.sh
│ ├── hrldas_namelists.json
│ ├── hydro_namelists.json
│ ├── nudging/
│ │ ├── CMakeLists.txt
│ │ ├── Makefile
│ │ ├── Nudging_frxst_gage.csv
│ │ ├── io/
│ │ │ ├── CMakeLists.txt
│ │ │ └── module_nudging_io.F90
│ │ ├── module_date_utils_nudging.F90
│ │ ├── module_nudging_utils.F90
│ │ └── module_stream_nudging.F90
│ ├── nwm.md
│ ├── nwm_doxyfile
│ ├── template/
│ │ ├── HYDRO/
│ │ │ ├── CHANPARM.TBL
│ │ │ ├── HYDRO.TBL
│ │ │ ├── HYDRO_MODIS.TBL
│ │ │ └── hydro.namelist
│ │ ├── Noah/
│ │ │ └── namelist.hrldas
│ │ ├── NoahMP/
│ │ │ └── namelist.hrldas
│ │ ├── examples/
│ │ │ └── nwm/
│ │ │ ├── namelists/
│ │ │ │ ├── v2.0/
│ │ │ │ │ ├── analysis_assim/
│ │ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ │ └── namelist.hrldas
│ │ │ │ │ ├── analysis_assim_extended/
│ │ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ │ └── namelist.hrldas
│ │ │ │ │ ├── analysis_assim_long_range/
│ │ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ │ └── namelist.hrldas
│ │ │ │ │ ├── hi_analysis_assim/
│ │ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ │ └── namelist.hrldas
│ │ │ │ │ ├── hi_short_range/
│ │ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ │ └── namelist.hrldas
│ │ │ │ │ ├── long_range/
│ │ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ │ └── namelist.hrldas
│ │ │ │ │ ├── medium_range/
│ │ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ │ └── namelist.hrldas
│ │ │ │ │ └── short_range/
│ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ └── namelist.hrldas
│ │ │ │ ├── v2.0_reforecasts/
│ │ │ │ │ ├── analysis_assim/
│ │ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ │ └── namelist.hrldas
│ │ │ │ │ ├── analysis_assim_extended/
│ │ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ │ └── namelist.hrldas
│ │ │ │ │ ├── analysis_assim_long_range/
│ │ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ │ └── namelist.hrldas
│ │ │ │ │ ├── long_range/
│ │ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ │ └── namelist.hrldas
│ │ │ │ │ ├── medium_range/
│ │ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ │ └── namelist.hrldas
│ │ │ │ │ └── short_range/
│ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ └── namelist.hrldas
│ │ │ │ ├── v2.1/
│ │ │ │ │ ├── analysis_assim/
│ │ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ │ └── namelist.hrldas
│ │ │ │ │ ├── analysis_assim_extended/
│ │ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ │ └── namelist.hrldas
│ │ │ │ │ ├── analysis_assim_longrange/
│ │ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ │ └── namelist.hrldas
│ │ │ │ │ ├── hi_analysis_assim/
│ │ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ │ └── namelist.hrldas
│ │ │ │ │ ├── hi_short_range/
│ │ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ │ └── namelist.hrldas
│ │ │ │ │ ├── long_range/
│ │ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ │ └── namelist.hrldas
│ │ │ │ │ ├── medium_range/
│ │ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ │ └── namelist.hrldas
│ │ │ │ │ ├── pr_analysis_assim/
│ │ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ │ └── namelist.hrldas
│ │ │ │ │ ├── pr_short_range/
│ │ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ │ └── namelist.hrldas
│ │ │ │ │ └── short_range/
│ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ └── namelist.hrldas
│ │ │ │ └── v3.0/
│ │ │ │ ├── ak_analysis_assim/
│ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ └── namelist.hrldas
│ │ │ │ ├── ak_analysis_assim_extended/
│ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ └── namelist.hrldas
│ │ │ │ ├── ak_analysis_assim_extended_no_da/
│ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ └── namelist.hrldas
│ │ │ │ ├── ak_analysis_assim_no_da/
│ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ └── namelist.hrldas
│ │ │ │ ├── ak_medium_range/
│ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ └── namelist.hrldas
│ │ │ │ ├── ak_medium_range_no_da/
│ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ └── namelist.hrldas
│ │ │ │ ├── ak_short_range/
│ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ └── namelist.hrldas
│ │ │ │ ├── analysis_assim/
│ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ └── namelist.hrldas
│ │ │ │ ├── analysis_assim_extended/
│ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ └── namelist.hrldas
│ │ │ │ ├── analysis_assim_extended_no_da/
│ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ └── namelist.hrldas
│ │ │ │ ├── analysis_assim_longrange/
│ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ └── namelist.hrldas
│ │ │ │ ├── analysis_assim_longrange_no_da/
│ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ └── namelist.hrldas
│ │ │ │ ├── analysis_assim_no_da/
│ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ └── namelist.hrldas
│ │ │ │ ├── hi_analysis_assim/
│ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ └── namelist.hrldas
│ │ │ │ ├── hi_analysis_assim_no_da/
│ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ └── namelist.hrldas
│ │ │ │ ├── hi_short_range/
│ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ └── namelist.hrldas
│ │ │ │ ├── hi_short_range_no_da/
│ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ └── namelist.hrldas
│ │ │ │ ├── long_range/
│ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ └── namelist.hrldas
│ │ │ │ ├── medium_range/
│ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ └── namelist.hrldas
│ │ │ │ ├── medium_range_no_da/
│ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ └── namelist.hrldas
│ │ │ │ ├── pr_analysis_assim/
│ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ └── namelist.hrldas
│ │ │ │ ├── pr_analysis_assim_no_da/
│ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ └── namelist.hrldas
│ │ │ │ ├── pr_short_range/
│ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ └── namelist.hrldas
│ │ │ │ ├── pr_short_range_no_da/
│ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ └── namelist.hrldas
│ │ │ │ └── short_range/
│ │ │ │ ├── hydro.namelist
│ │ │ │ └── namelist.hrldas
│ │ │ └── parameter_tables/
│ │ │ ├── v2.0/
│ │ │ │ ├── CHANPARM.TBL
│ │ │ │ ├── GENPARM.TBL
│ │ │ │ ├── HYDRO.TBL
│ │ │ │ ├── MPTABLE.TBL
│ │ │ │ └── SOILPARM.TBL
│ │ │ ├── v2.1/
│ │ │ │ ├── CHANPARM.TBL
│ │ │ │ ├── GENPARM.TBL
│ │ │ │ ├── HYDRO.TBL
│ │ │ │ ├── MPTABLE.TBL
│ │ │ │ └── SOILPARM.TBL
│ │ │ └── v3.0/
│ │ │ ├── Alaska/
│ │ │ │ ├── CHANPARM.TBL
│ │ │ │ ├── GENPARM.TBL
│ │ │ │ ├── HYDRO.TBL
│ │ │ │ ├── MPTABLE.TBL
│ │ │ │ └── SOILPARM.TBL
│ │ │ ├── CONUS/
│ │ │ │ ├── CHANPARM.TBL
│ │ │ │ ├── GENPARM.TBL
│ │ │ │ ├── HYDRO.TBL
│ │ │ │ ├── MPTABLE.TBL
│ │ │ │ └── SOILPARM.TBL
│ │ │ ├── Hawaii/
│ │ │ │ ├── CHANPARM.TBL
│ │ │ │ ├── GENPARM.TBL
│ │ │ │ ├── HYDRO.TBL
│ │ │ │ ├── MPTABLE.TBL
│ │ │ │ └── SOILPARM.TBL
│ │ │ └── PuertoRico/
│ │ │ ├── CHANPARM.TBL
│ │ │ ├── GENPARM.TBL
│ │ │ ├── HYDRO.TBL
│ │ │ ├── MPTABLE.TBL
│ │ │ └── SOILPARM.TBL
│ │ └── setEnvar.sh
│ ├── utils/
│ │ ├── CMakeLists.txt
│ │ ├── Makefile
│ │ ├── fortglob/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── Makefile
│ │ │ ├── fortglob.F90
│ │ │ ├── libfortglob.c
│ │ │ └── libfortglob.h
│ │ ├── module_hydro_stop.F90
│ │ └── module_version.F90
│ └── wrf_hydro_config
└── tests/
├── __init__.py
├── config_file_meta/
│ ├── croton_NY/
│ │ ├── nwm_ana/
│ │ │ ├── FORCING.md5
│ │ │ ├── NWM/
│ │ │ │ ├── DOMAIN/
│ │ │ │ │ ├── Fulldom_hires.cdl
│ │ │ │ │ ├── Fulldom_hires.md5
│ │ │ │ │ ├── GEOGRID_LDASOUT_Spatial_Metadata.cdl
│ │ │ │ │ ├── GEOGRID_LDASOUT_Spatial_Metadata.md5
│ │ │ │ │ ├── GWBUCKPARM.cdl
│ │ │ │ │ ├── GWBUCKPARM.md5
│ │ │ │ │ ├── LAKEPARM.cdl
│ │ │ │ │ ├── LAKEPARM.md5
│ │ │ │ │ ├── Route_Link.cdl
│ │ │ │ │ ├── Route_Link.md5
│ │ │ │ │ ├── geo_em.d01.cdl
│ │ │ │ │ ├── geo_em.d01.md5
│ │ │ │ │ ├── hydro2dtbl.cdl
│ │ │ │ │ ├── hydro2dtbl.md5
│ │ │ │ │ ├── nudgingParams.cdl
│ │ │ │ │ ├── nudgingParams.md5
│ │ │ │ │ ├── soil_properties.cdl
│ │ │ │ │ ├── soil_properties.md5
│ │ │ │ │ ├── spatialweights.cdl
│ │ │ │ │ ├── spatialweights.md5
│ │ │ │ │ ├── wrfinput_d01.cdl
│ │ │ │ │ └── wrfinput_d01.md5
│ │ │ │ ├── RESTART/
│ │ │ │ │ ├── HYDRO_RST.2011-08-26_00:00_DOMAIN1.cdl
│ │ │ │ │ ├── HYDRO_RST.2011-08-26_00:00_DOMAIN1.md5
│ │ │ │ │ ├── RESTART.2011082600_DOMAIN1.cdl
│ │ │ │ │ ├── RESTART.2011082600_DOMAIN1.md5
│ │ │ │ │ ├── nudgingLastObs.2011-08-26_00:00:00.cdl
│ │ │ │ │ └── nudgingLastObs.2011-08-26_00:00:00.md5
│ │ │ │ └── nudgingTimeSliceObs.md5
│ │ │ ├── hydro.namelist
│ │ │ └── namelist.hrldas
│ │ └── nwm_long_range/
│ │ ├── FORCING.md5
│ │ ├── NWM/
│ │ │ ├── DOMAIN/
│ │ │ │ ├── nudgingParams.cdl
│ │ │ │ └── nudgingParams.md5
│ │ │ ├── DOMAIN_LR/
│ │ │ │ ├── Fulldom_hires.cdl
│ │ │ │ ├── Fulldom_hires.md5
│ │ │ │ ├── GEOGRID_LDASOUT_Spatial_Metadata.cdl
│ │ │ │ ├── GEOGRID_LDASOUT_Spatial_Metadata.md5
│ │ │ │ ├── GWBUCKPARM.cdl
│ │ │ │ ├── GWBUCKPARM.md5
│ │ │ │ ├── LAKEPARM.cdl
│ │ │ │ ├── LAKEPARM.md5
│ │ │ │ ├── Route_Link.cdl
│ │ │ │ ├── Route_Link.md5
│ │ │ │ ├── geo_em.d01.cdl
│ │ │ │ ├── geo_em.d01.md5
│ │ │ │ ├── hydro2dtbl.cdl
│ │ │ │ ├── hydro2dtbl.md5
│ │ │ │ ├── soil_properties.cdl
│ │ │ │ ├── soil_properties.md5
│ │ │ │ ├── spatialweights.cdl
│ │ │ │ ├── spatialweights.md5
│ │ │ │ ├── wrfinput_d01.cdl
│ │ │ │ └── wrfinput_d01.md5
│ │ │ ├── RESTART/
│ │ │ │ ├── nudgingLastObs.2011-08-26_00:00:00.cdl
│ │ │ │ └── nudgingLastObs.2011-08-26_00:00:00.md5
│ │ │ ├── RESTART_LR/
│ │ │ │ ├── HYDRO_RST.2011-08-26_00:00_DOMAIN1.cdl
│ │ │ │ ├── HYDRO_RST.2011-08-26_00:00_DOMAIN1.md5
│ │ │ │ ├── RESTART.2011082600_DOMAIN1.cdl
│ │ │ │ └── RESTART.2011082600_DOMAIN1.md5
│ │ │ └── nudgingTimeSliceObs.md5
│ │ ├── hydro.namelist
│ │ └── namelist.hrldas
│ └── get_config_file_meta_data.py
├── conftest.py
├── ctests/
│ ├── CMakeLists.txt
│ ├── run_cmake_testcase.sh
│ ├── run_dir_makefile.mk
│ ├── setup_cmake_testcase.sh
│ ├── should_fail.f90
│ └── should_not_fail.f90
├── hrldas_option_suites.json
├── hydro_option_suites.json
├── local/
│ ├── derecho/
│ │ ├── example_croton_test.sh
│ │ └── model_test.sh
│ ├── examples/
│ │ ├── ex1_run_croton_derecho.sh
│ │ ├── ex2_run_conus_derecho.sh
│ │ └── ex3_run_croton_docker.sh
│ ├── requirements.txt
│ ├── reservoir_testing_files/
│ │ ├── 2010-10-01_06:00:00.15min.usgsTimeSlice.ncdf
│ │ ├── 2016-10-10_00:00:00.15min.usaceTimeSlice.ncdf
│ │ ├── 2019-08-18_00.60min.CCHC1.RFCTimeSeries.ncdf
│ │ ├── 2019-08-18_00.60min.SNOA2.RFCTimeSeries.ncdf
│ │ ├── 2019-09-18_00.60min.CCHC1.RFCTimeSeries.ncdf
│ │ ├── 2019-10-18_00.60min.CCHC1.RFCTimeSeries.ncdf
│ │ ├── 2019-11-18_00.60min.CCHC1.RFCTimeSeries.ncdf
│ │ ├── 2019-12-19_05.60min.CCHC1.RFCTimeSeries.ncdf
│ │ ├── reservoir_index_AnA_represents_Extended_MR.nc
│ │ ├── reservoir_index_Long_Range_AnA.nc
│ │ ├── reservoir_index_Standard_AnA_APRFC_GDLs.nc
│ │ └── reservoir_index_short_range.nc
│ ├── run_tests.py
│ └── utils/
│ ├── attach_all_plots.bash
│ ├── attach_plots_to_pr.py
│ ├── generate_diff_plots.py
│ ├── nwm_testing.yml
│ ├── releaseapi.py
│ ├── requirements.txt
│ └── thresholds.csv
├── test_1_fundamental.py
├── test_2_regression.py
├── test_3_outputs.py
├── test_supp_1_channel_only.py
├── test_supp_2_nwm_output.py
├── utilities.py
└── utils/
├── compare_output.py
├── xrcmp.py
└── xrnan.py
================================================
FILE CONTENTS
================================================
================================================
FILE: .github/CODESTYLE.md
================================================
# WRF-Hydro Fortran Conventions Guide
# Fortran standard
New code contributions should be written to at least
[Fortran 2003 standard](https://gcc.gnu.org/wiki/GFortranStandards#Fortran_2003).
# Source Code Formatting
* Max line length 100 characters. All wrapped code statements shall at least be indented one
additional level beyond the previous level.
* Do NOT use tab characters.
* Indentation: 3 spaces (no tabs) for all control below the subroutine/function level (indenting
less often saves a lot of space). Tightly nested do loops can be exceptions. Put comments at same
indentation level as the code which it is commenting.
```fortran
module my_module
integer :: local_var
!==================================================================================================
subroutine foo
implicit none
!no indent until control units, line breaks between units
do i=1,2 ! white space in-line not crucial for readability as in long subroutine calls
count=i
end do ! i=1,2
do i=1,2
do j=i,(i*2)
count = i + j
end do ! j=i,(i*2)
end do ! i=1,2
do i=1,2
do j=i,(i*2) ! control structure is compact, easy to perceive without indentations
count = i + j
end do ! j=i,(i*2)
end do ! i=1,2
end subroutine foo
end module my_module
```
* Generally use lower case except for where emphasis is needed.
* Camel case, vs underscores
* firstLowerCamelCase: use most generally
* FirstUpperCamelCase: Classes
* lowecase_underscore_separated: use for mouldes, subroutines, functions
* UPPERCASE_UNDERSCORE_SEPARATED: constants
* Line up related pieces of syntax (readability when there are repeated elements, ability to count
the position of arguments), including end-of-line characters.
```fortran
# WRONG
foo=function(apple, banana, corn, &
durian, eggplant, fig)
# CORRECT
foo=function(apple, banana, corn, &
durian, eggplant, fig )
```
* Place the same number of arguments on each line except the last for countability/position
matching.
```fortran
# WRONG
foo=function(a,b,c = 1)
# CORRECT
foo = function(a, b, c=1)
```
* Horizontal white space: enhances readability, esp w respect to function/subroutine arguments.
Whitespace helps identify separate things.
* Vertical white space:
* No vertical white space: Used to group closely-related lines of code.
* Single vertical white space: Separate less-related lines of code. After control structures.
* Two vertical white spaces: only used to emphasize separation between functions, subroutines and
occasionally large code blocks.
* Control structures identified against their opening statement.
* #ifdef: When nested.
* If, do, while, case: Best practice: All the time. Required: when spanning more than one page of
vertical space.
```fortran
#ifdef HYDRO_D
#ifdef OBSCURE_THING
…
#endif /* HYDRO_D */
#endif /* OBSCURE_THING */
if(a .eq. 100) then
…..
endif ! if(a .eq. 100)
or
if(a .eq. 100) then !! a .eq. 100 block
…
endif !! a .eq. 100 block
```
* Comment blocks above every unit (module, subtroutine, function), with the following form. This
should be the NCO standard template.
```fortran
!===================================================================================================
! Subroutine Name:
! subroutine read_nudging_last_obs
! Author(s)/Contact(s):
! James L McCreight <jamesmcc><ucar><edu>
! Abstract:
! does some fancy thing
! History Log:
! 02/03/16 -Created, JLM.
! Usage:
! Parameters:
! Input Files:
! Output Files:
! Condition codes:
! User controllable options: None.
! Notes: Needs better error handling...
```
* Allocate/deallocate statements do NOT span multiple lines. This is so grep can reveal all
allocation/deallocation pairs.
```fortran
# WRONG
allocate(foo, &
bar)
# CORRECT
allocate(foo)
allocate(bar)
allocate(foo, bar)
```
# Naming
## Source file names
* The name of the source file or script shall represent its purpose. All of the functions in a file
shall have a common purpose.
* Source file names SHALL NOT include spaces nor colons (‘:’) nor any other special
characters.
* End in the `.Fxx` extension, with `xx` corresponding to the fortran standard, e.g. `.F90`
* Filenames shall use the `lowercase_underscore_separated.Fxx` convention.
## Output file names
* Source file names SHALL NOT include spaces nor colons (`:`) nor any other special
characters.
## Variable names
* Variable names shall convey their intended use to other developers who did not author the code.
This eliminates need for inline comments that describe variables.
* DO NOT strive to much for shortening of variable names, prefer meaningful name: local
shortening is often possible with the associate construct.
* Comments/descriptions on variables:
* All variables in argument lists will be described in the definition using FORD syntax.
* Derived type arguments only need documented in bulk, their individual components only need
defined where the derived type is defined.
* Variable descriptions will not be redundant with the variable name
* Descriptions will describe the physical quantity
* Descriptions will include units.
* Variable names shall contain a noun.
* Exception: when widely accepted equations have simple variable names. (e.g. `F=m*a`)
* Loop counters should typically have names.
* Loop counters should NOT be single letters. Simply doubling the letter makes it easier to search
for the use (and possibly replace).
* Conventions for special kinds of variables:
* Accumulation variables: “acc” prefix, e.g.
* MPI global variables
* prognostic vs diagnostic variables
* logical variables must be named to reflect the state they are used to convey, most with the
verb to be, e.g. :
* `lib_is_initialized` vs `lib_init`
* `obj_has_parent` vs `obj_parent`
## Function/Subroutine Names
* Function names shall contain at least one verb, e.g. `get_name`, `parse_control_string`.
* Function names shall convey their intended use to other developers who did not author the code.
* Follow the `lowercase_underscore_separated` convention.
## Constant names
* Name all constants: Numbers should not be used in the code except in variable definitions.
* All constants are defined as parameters.
* Exceptions: should be rare and clearly typed (float, double, etc).
* Constants follow the `UPPERCASE_UNDERSCORE SEPARATED` convention for naming.
* Constant names shall describe what the contained value represents within context, e.g.
`NO_DATA_VALUE`, `PLANCK_LENGTH`, `HIGH_TEMPERATURE_THRESHOLD`, etc.
# Documenting in the source
* Code documentation should be a primary source of overall documentation. By following simple
practices, such documentation can be extracted to live separately if needed. But keeping it close
as possible to the source maintains consistency and improves communication among developers: all
you need is the source to understand the code (not other random documents)
* Write code that documents itself. Try to make code as clear as possible (“self-documenting”) to
avoid use of comments and redundancy between the two which needs synchronized or is confusingly
out of sync. Writing self-documenting code includes using variable names with obvious meaning and
documenting ambiguities in variable names when they exist. Minimize commenting “what” (repeating
the code with comments) but do it when it is necessary for interpretation.
* Document why (not what). Algorithmic choices are often the hardest thing to perceive, not
function calls on variables.
* Indent comments to the indentation level of the code which is being commented.
* Comments shall be written in English with good spelling, punctuation, and grammar.
* Documentation shall be placed in the code and [FORD](https://github.com/cmacmackin/ford) will be
used to generate documentation.
* TODO: Comments used to remind developers of future or unfinished actions in source code shall
begin with “TODO FML” (first middle last initials, as available), and describe the action to be
taken. TODO comments shall also list a specific date or event by which the TODO action will be
completed.
```fortran
! TODO JLM : Rename the variable foo to discharge. Target Date: 12/25/20
! TODO JLM : Rename the variable foo to discharge.
! TODO JLM : Target Date: 12/25/20
```
* DEPRECATED: Flagging deprecated code sections shall be done in the following way for automated
removal at end-of-version code release.
```fortran
!DEPRECATED >>>
!code
!code
!<<< DEPRECATED
```
# File header comments
* Each source file shall contain one file header comment.
* File header comments shall contain the following:
* A concise description of the collective purpose of file contents.
* Exception: When a file contains only one class or function definition, this description
shall simply state the file is an implementation or definition file for class/function
`<name>`. The class or function description will be written into the class or function
header comment.
* Organization name: National Center for Atmospheric Research
* Current maintainer
* Author names. Multiple authors should be listed when more than one developer has worked on a
source file over time.
```fortran
! module_super_foo.F
! Purpose: This module file contains the derived type and
! methods for the super_foo class.
! National Center for Atmospheric Research
! Responsible: James L McCreight <jamesmcc>ucar<edu>
! Authors: James McCreight, Logan Karsten, Wei Yu
```
# Module/Subroutines/Function Usage
* Always use modules.
* Intent: all arguments should be given an intent (in,out, inout),
* Each argument is defined on its own line. Document details in- or below- line using
[FORD](https://github.com/cmacmackin/ford/wiki/Writing-Documentation) conventions.
* FORD will ignore a normal comments preceded with a single exclamation mark (!) However,
comments with two exclamation marks (!!) are interpreted as documentation and will be captured
for inclusion in the FORD output. By default, FORD documentation comes after whatever it is
that you are documenting, either at the end of the line or on a subsequent line.
* For longer blocks of documentation, it can be inconvenient to continually type the "docmark" =
‘!!’. For such situations, the docmark_alt (set to * by default) may be used in the first line
of the documentation comment. Any immediately following lines containing only a comment will
then be included in the block of documentation, without needing the "docmark".
Example:
```fortran
subroutine feed_pets(cats, dogs, food, angry)
!! Feeds your cats and dogs, if enough food is available. If not enough
!! food is available, some of your pets will get angry.
! Arguments
integer, intent(in) :: cats
!! The number of cats to keep track of.
integer, intent(in) :: dogs
!! The number of dogs to keep track of.
real, intent(inout) :: food
!! The amount of pet food (in kilograms) which you have on hand.
integer, intent(out) :: angry
!! The number of pets angry because they weren't fed.
!...
return
end subroutine feed_pets
```
* Avoid “side effects” (return values are the only thing modified: files are not created,
module/global variables are not changed, etc). Use pure functions?
* `implicit none` for all program units
* Use `use, only:` as much as possible.
* Restrict number of passed variables per line in the function/subroutine definition/call to 4 max.
Line up variables vertically for ease of reading and counting. Match the call layout to the
definition layout.
* Have a local variables section separate from passed variables
```fortran
# WRONG
some_function(a,b,c,d,e,f,g,h &
,i,j,k,l)
real :: a,b,c,d,e,f
Ingeter :: localVar
Real, intent(in) :: h,i,j,k,l
call some_function(a,b,c,d &
,e,f &
g,h,i,j,k,l)
# CORRECT
some_function(a, b, c, d &
,e, f, g, h &
,i, j, k, l )
Use module_great_stuff: only, shiny_object, rad_tool
Implicit none
real, intent(in) :: a !! acceleration (m/s2)
real, intent(in) :: b !! brownian coeff (-)
real, intent(out) :: c !! celerity (m/s)
… (etc) …
real, intent(in) :: l !! lousy variable (kgmsK)
!! Local variables
integer :: localVar
call some_function(a, b, c, d &
,e, f, g, h &
,i, j, k, l )
```
# Variable Scoping and Definition
* Minimize global data.
* Global data should be limited to constants as much as possible.
* Define and use global type parameters.
* Make all derived type components private.
# Run-time error messages
* Must indicate the function/routine in which they occur.
* Should be informative.
# Compiler warning messages
* Compilers generally issue two types of messages: warnings and errors. Extent of compiler warning
messages can typically be tuned with a compiler option. Compiler warnings normally do not stop
the compile process, but can still result in run-time problems. Compiler errors do stop the
compile process, forcing the developer to fix the problem and recompile. STANDARD:
* When available, compiler options should be set to produce the maximum number of warning messages.
* Compiler and linker warnings shall be treated as errors and fixed.
# Other general guidelines
* Code should always be written with cleanliness and clarity in mind. Algorithm implementations
should not be unnecessarily complicated without significant performance gains over simpler
alternatives.
* Structured programming - do NOT use GOTO
* Related resources
* http://research.metoffice.gov.uk/research/nwp/numerical/fortran90/f90_standards.html
* https://github.com/szaghi/zen-of-fortran#standard
* http://www.fortran.com/Fortran_Style.pdf
================================================
FILE: .github/CONTRIBUTING.md
================================================
# Contributing to WRF-Hydro®
All bug reports, bug fixes, code, and documentation contributions are welcome and encouraged.
However, guidelines need to be established and followed to ensure that community contributions can
be effectively incorporated.
Please read the following guidelines carefully before contributing.
# Guidelines
**Failure to adhere to the following guidelines may result in your contributions being permanently
rejected if they are unable to be merged.**
All contributions must be made through the
[NCAR/wrf_hydro_nwm_public](https://github.com/NCAR/wrf_hydro_nwm_public) GitHub page.
Contributions submitted via email or help desk will not be processed.
## Bug reports, feature requests, and documentation suggestions
All bug reports, feature requests, and documentation suggestions should be submitted via [GitHub
issues](https://github.com/NCAR/wrf_hydro_nwm_public/issues). Before submitting your issue, please
search for a few keywords related to your issue in the open and closed issues to discover if your
issue has already been logged and/or resolved. An issue template has been provided to assist with
submitting bug reports. For more information on using GitHub issues, please see
https://help.github.com/articles/about-issues/.
### Bug reports
Please use the supplied issue template when submitting bug reports. This will help ensure that your
bug is described in sufficient detail. You can read more on how to construct an
appropriate bug report here: https://stackoverflow.com/help/mcve
### Feature requests
Please follow similar guidelines when suggesting new features as you would for reporting bugs. Be
specific and detail the added value of your suggested feature.
### Documentation suggestions
All technical documentation for the WRF-Hydro model will eventually be formatted as markdown, which
will greatly simplify updates and changes in the future. In the meantime, please reference the
document title, page number and quote the line or section for suggesting changes to the
documentation.
## Code contributions
All code development contributions will be made via [forks](https://help.github.com/articles/about-forks/)
and [pull requests](https://help.github.com/articles/about-pull-requests/). If you are
unfamiliar with GitHub, forks, or pull requests, see [collaborating with issues and pull
requests](https://help.github.com/categories/collaborating-with-issues-and-pull-requests/) for guidance.
### WRF-Hydro Fortran code style standards
Please see our Fortran [code style guidelines](CODESTYLE.md)
### Universal guidelines
* All code contributions must be made through GitHub following specific guidelines listed below.
* All contributions must be made in an open, and public way via the GitHub repository. There will
be no embargo period for code contributions.
* All contributions must be able to be merged without conflict. It is the responsibility of the
contributor to resolve any merge conflicts **prior** to submitting a pull request.
* All contributions must pass relevant automated testing procedures. These tests are executed
automatically when you submit your pull request.
* Be respectful when giving and receiving feedback on contributions or issues (see our community [code of conduct](../CODE_OF_CONDUCT.md).
### Pull requests
#### Contributor responsibility
Pull requests will only be accepted if they follow the best practices described below. Not
following best practices described below is grounds for rejection of pull requests and may result
in excessive manual work for contributors. It is the contributors’ responsibility to know and
follow best git practices.
#### Commits: practices & messages
Learning to use commits wisely and “atomically” is the foundation for success. As users gain
familiarity with basics of how git works and the merging practices we are using. The next level of
sophistication is interaction with the git log. Reading logs is greatly facilitated by writing good
logs, or “commit messages”. The following webpage gives a crash course on how to write good commit
messages: https://chris.beams.io/posts/git-commit/
#### Frequency
Pull requests should happen with high enough frequency to minimize the scope of the code review.
Commits which do not changes answers (pass regression testing) MUST be kept separate from commits
which do change answers even when the work is on the same feature or bug. The portion of the code
which changes the answer must be isolated as much as possible into its own pull request.
### Types of code contributions
#### Bug fixes
All bug fixes must address a specific [GitHub
issue](https://github.com/NCAR/wrf_hydro_nwm_public/issues). Only issues labeled with ["community
dev"](https://github.com/NCAR/wrf_hydro_nwm_public/labels/community%20dev) are open to community
contributions. The majority of issues will be open to community contributions, but some cases may
require more careful handling. Issues without the "community dev" label are either still being
investigated, are of broad scope, or involve changes to code that is actively being developed internally.
All code changes to address issues must be submitted using a pull request, and the corresponding
issue number must be referenced in the pull request. For more information on referencing issues,
see [issues and keywords](https://help.github.com/articles/closing-issues-using-keywords/).
#### New features
Code contributions for minor model enhancements or new features follow a similar pattern to bug
fixes. The proposed feature must be submitted as a GitHub issue and all discussions regarding the
new feature should reside in the issue thread. Additionally, work should not begin on the new
feature until the issue has been tagged with "community dev".
Depending on the scope of the new feature, a WRF-Hydro core contributor may suggest you create a
[branch](https://help.github.com/articles/about-branches/) to hold all development for the new
feature.
#### Research development
Larger-scale research development, e.g. model coupling, must be coordinated with a WRF-Hydro team
member prior to beginning work. This type of development may impact other community projects and
requires more careful governance to help steer the direction of model development and maximize
harmony among the various NCAR, NOAA, and WRF-Hydro community research efforts.
### Checklist for new feature contributions
#### You should have the following to submit a new feature contribution to the WRF-Hydro code base:
1. A WRF-Hydro team point of contact (POC). Early in your development process, it is always a good idea
to reach out to the WRF-Hydro team and find a good POC for your new feature. This person will help
keep you informed of new developments as they may relate to your feature, advise you on which branches
to keep current with (if other than main), and provide pointers on requirements.
2. New feature code integrated in with the latest WRF-Hydro main branch (or other as advised by your
WRF-Hydro POC). This merged code should exist in your own fork, but can be in your own main branch or
a separate feature branch.
* *TIP #1*: It is always a good strategy to pull the latest WRF-Hydro main code into your branch
fairly often throughout your development cycle. Leaving months of code changes to merge at the end of
your development cycle can result in lots of merge conflicts, time-consuming manual edits, and higher
potential for making errors.
* *TIP #2*: New code should follow the
[WRF-Hydro code contribution guidelines](https://github.com/NCAR/wrf_hydro_nwm_public/blob/main/.github/CONTRIBUTING.md).
3. Documentation for your new feature. This should include (1) a simple summary in the release notes
(added to [NEWS.md](https://github.com/NCAR/wrf_hydro_nwm_public/blob/main/NEWS.md)), and (2) a
detailed description of the new feature suitable to be included within the
[WRF-Hydro Technical Description](https://ral.ucar.edu/sites/default/files/public/projects/wrf_hydro/technical-description-user-guide/wrf-hydro-v5.1.1-technical-description.pdf),
included as a new markdown document in the
[Doc](https://github.com/NCAR/wrf_hydro_nwm_public/tree/main/trunk/NDHMS/Doc)
folder.
4. An updated
[standalone test case](https://ral.ucar.edu/projects/wrf_hydro/testcases) demonstrating how
your new feature works, based on one of the existing WRF-Hydro test cases (e.g., Croton). If you cannot
adapt an existing test case and need to create something new, please consult with your POC. The test
case should include:
* Domain and parameter files
* Namelists
* Example forcings if needed (idealized forcing use is OK)
* Test case documentation
5. Testing - you must clearly demonstrate that your new feature:
* Does no harm to the existing code (e.g., produces identical solutions EXCEPT when the new feature is
activated by a namelist or parameter setting).
* Fixes a documented issue (reference existing issue in the
[WRF-Hydro GitHub issue tracking](https://github.com/NCAR/wrf_hydro_nwm_public/issues) - this could also be a feature request).
* If model performance is improved, for example through more efficient IO, memory utilization, or other
software-specific improvements, it must be demonstrable and measurable.
* *TIP*: All pull requests go through automated CI testing, but for a new feature it is important to do
thorough testing ahead of time so you have a good sense of the model impacts and can explain/justify them.
Do not wait until automated CI testing to test your new feature.
6. A pull request from a branch on your fork to the WRF-Hydro main branch (or other as advised by your
WRF-Hydro POC). Make sure to also follow the specific
[WRF-Hydro pull request guidelines](https://github.com/NCAR/wrf_hydro_nwm_public/blob/main/.github/PULL_REQUEST_TEMPLATE.md).
================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.md
================================================
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: ''
assignees: ''
---
**Describe the bug**
A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Configure '....'
3. Run '....'
4. See error
**Expected behavior**
A clear and concise description of what you expected to happen.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Additional context**
Add any other context about the problem here.
================================================
FILE: .github/PULL_REQUEST_TEMPLATE.md
================================================
TYPE: choose one of [bug fix, enhancement, new feature, feature removed, no impact, text only]
KEYWORDS: approximately 3 to 6 words (more is always better) related to your commit, separated by commas
SOURCE: Developer's name and affiliation
DESCRIPTION OF CHANGES: One or more paragraphs describing problem, solution, and required changes.
ISSUE: The GitHub Issue that this PR addresses. For issue number 123, it would be `Fixes #123`
TESTS CONDUCTED: Explicitly state if regression, integration, or unit tests were run before submitting.
NOTES: Optional, as appropriate. Delete if not used.
<!--
ITEMS THAT MIGHT BE USEFUL TO CONSIDER
- Closes issue #xxxx
- Tests added (unit tests and/or regression/integration tests)
- Backwards compatible
- Documentation included
- Short description in the Development section of `NEWS.md`
--->
================================================
FILE: .github/workflows/test-pr.yml
================================================
name: build
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
inputs:
pr:
description: "PR to test"
required: true
jobs:
Model_Testing:
if: github.repository == 'NCAR/wrf_hydro_nwm_public'
strategy:
fail-fast: false
max-parallel: 4
matrix:
configuration: [nwm_ana, nwm_long_range, gridded, reach, reach_lakes]
runs-on: ubuntu-latest
env:
MPI_HOME: /usr/share/miniconda
NETCDF: /usr/share/miniconda
NETCDF_INCLUDES: /usr/share/miniconda/include
NETCDF_LIBRARIES: /usr/share/miniconda/lib
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Checkout candidate (pull request / push)
if: ${{ github.event_name == 'pull_request' || github.event_name == 'push' }}
uses: actions/checkout@v4
with:
path: candidate
- name: Checkout candidate (manual)
if: ${{ github.event_name == 'workflow_dispatch' }}
env:
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
run: gh repo clone ${{ github.repository }} candidate && cd candidate && gh pr checkout -R ${{ github.repository }} ${{ github.event.inputs.pr }}
- name: Checkout reference (pull request)
if: ${{ github.event_name == 'pull_request' }}
uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.base.ref }}
path: reference
- name: Checkout reference (push)
if: ${{ github.event_name == 'push' }}
uses: actions/checkout@v4
with:
ref: ${{ github.event.before }}
path: reference
- name: Checkout reference (manual)
if: ${{ github.event_name == 'workflow_dispatch' }}
env:
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
run: gh repo clone ${{ github.repository }} reference && cd reference && git checkout origin/$(gh pr view ${{ github.event.inputs.pr }} --json baseRefName --jq '.baseRefName')
- name: Install dependencies with apt-get
run: |
sudo apt-get update \
&& sudo apt-get install -yq --no-install-recommends \
wget \
curl \
bzip2 \
ca-certificates \
libhdf5-dev \
gfortran \
g++ \
m4 \
make \
libswitch-perl \
git \
bc \
openmpi-bin openmpi-common libopenmpi-dev \
libxml2-dev \
libnetcdf-dev \
libnetcdff-dev
- name: Install dependencies with pip
run: |
python3 -m pip install matplotlib numpy xarray dask netCDF4 pygithub
- name: Compile reference
run: |
cd $GITHUB_WORKSPACE/reference
cmake -B build
make -C build -j
- name: Compile candidate
run: |
cd $GITHUB_WORKSPACE/candidate
cmake -B build
make -C build -j
- name: Run reference model
run: |
cd $GITHUB_WORKSPACE/reference/build/Run
make run-croton-${{ matrix.configuration }}
- name: Run candidate model
run: |
cd $GITHUB_WORKSPACE/candidate/build/Run
make run-croton-${{ matrix.configuration }}
- name: generic - Compare HYDRO_RST.* output with xrcmp
if: ${{ always() }}
run: |
cd $GITHUB_WORKSPACE/candidate/build/Run
for file in output_${{ matrix.configuration }}/HYDRO_RST.*; do\
python ${GITHUB_WORKSPACE}/candidate/tests/utils/xrcmp.py \
--candidate $file \
--reference $GITHUB_WORKSPACE/reference/build/Run/$file \
--log_file $file_diff.txt \
--n_cores 1; \
done
- name: generic - Compare RESTART.* output with xrcmp
if: ${{ always() }}
run: |
cd $GITHUB_WORKSPACE/candidate/build/Run
for file in output_${{ matrix.configuration }}/RESTART.*; do\
python ${GITHUB_WORKSPACE}/candidate/tests/utils/xrcmp.py \
--candidate $file \
--reference $GITHUB_WORKSPACE/reference/build/Run/$file \
--log_file $file_diff.txt \
--n_cores 1; \
done
- name: generic - Compare last *.CHANOBS_DOMAIN1 output with xrcmp
if: ${{ always() }}
run: |
cd $GITHUB_WORKSPACE/candidate/build/Run
file=$(ls -t output_${{ matrix.configuration }}/*.CHANOBS_DOMAIN1 | head -n 1)
python ${GITHUB_WORKSPACE}/candidate/tests/utils/xrcmp.py \
--candidate $file \
--reference $GITHUB_WORKSPACE/reference/build/Run/$file \
--log_file $file_diff.txt \
--n_cores 1; \
- name: generic - Compare last *.CHRTOUT_DOMAIN1 output with xrcmp
if: ${{ always() }}
run: |
cd $GITHUB_WORKSPACE/candidate/build/Run
file=$(ls -t output_${{ matrix.configuration }}/*.CHRTOUT_DOMAIN1 | head -n 1)
python ${GITHUB_WORKSPACE}/candidate/tests/utils/xrcmp.py \
--candidate $file \
--reference $GITHUB_WORKSPACE/reference/build/Run/$file \
--log_file $file_diff.txt \
--n_cores 1; \
- name: generic - Compare last *.LSMOUT_DOMAIN1 output with xrcmp
if: ${{ always() }}
run: |
cd $GITHUB_WORKSPACE/candidate/build/Run
file=$(ls -t output_${{ matrix.configuration }}/*.LSMOUT_DOMAIN1 | head -n 1)
python ${GITHUB_WORKSPACE}/candidate/tests/utils/xrcmp.py \
--candidate $file \
--reference $GITHUB_WORKSPACE/reference/build/Run/$file \
--log_file $file_diff.txt \
--n_cores 1; \
- name: generic - Compare last *.RTOUT_DOMAIN1 output with xrcmp
if: ${{ always() }}
run: |
cd $GITHUB_WORKSPACE/candidate/build/Run
file=$(ls -t output_${{ matrix.configuration }}/*.RTOUT_DOMAIN1 | head -n 1)
python ${GITHUB_WORKSPACE}/candidate/tests/utils/xrcmp.py \
--candidate $file \
--reference $GITHUB_WORKSPACE/reference/build/Run/$file \
--log_file $file_diff.txt \
--n_cores 1; \
- name: generic - Compare output with compare_output
if: ${{ always() }}
run: |
cd $GITHUB_WORKSPACE/candidate/build/Run
mkdir output_diff
python -c \
"import sys; \
sys.path.append('${GITHUB_WORKSPACE}/candidate/tests/utils'); \
import compare_output; \
from pathlib import Path; \
compare_output.plot_diffs('${GITHUB_WORKSPACE}/candidate/build/Run/output_diff', \
'${GITHUB_WORKSPACE}/candidate/build/Run/output_${{ matrix.configuration }}/', \
'${GITHUB_WORKSPACE}/reference/build/Run/output_${{ matrix.configuration }}/', \
'${{ matrix.configuration }}')"
- name: generic - Copy test results from container
if: ${{ always() }}
run: |
mkdir -p $GITHUB_WORKSPACE/test_report
cp -r $GITHUB_WORKSPACE/candidate/build/Run/output_diff/diff_plots/* $GITHUB_WORKSPACE/test_report/
- name: generic - Attach diff plots to PR
if: ${{ failure() }}
shell: bash
run: |
cd $GITHUB_WORKSPACE/candidate/tests/local/utils
bash attach_all_plots.bash $(jq --raw-output .pull_request.number "$GITHUB_EVENT_PATH") ${{ matrix.configuration }} generic
- name: generic - Archive test results to GitHub
if: ${{ failure() }}
uses: actions/upload-artifact@v4
with:
name: test-reports
path: |
${{ github.workspace }}/test_report/*
# n-cores test
- name: Run parallel candidate model
run: |
rm -r $GITHUB_WORKSPACE/test_report/
cd $GITHUB_WORKSPACE/candidate/build/Run
make clean
make run-croton-${{ matrix.configuration }}-parallel
- name: n-cores - Compare HYDRO_RST.* output with xrcmp
if: ${{ always() }}
run: |
cd $GITHUB_WORKSPACE/candidate/build/Run
for file in output_${{ matrix.configuration }}/HYDRO_RST.*; do\
python ${GITHUB_WORKSPACE}/candidate/tests/utils/xrcmp.py \
--candidate $file \
--reference $GITHUB_WORKSPACE/reference/build/Run/$file \
--log_file $file_diff.txt \
--n_cores 1; \
done
- name: n-cores - Compare RESTART.* output with xrcmp
if: ${{ always() }}
run: |
cd $GITHUB_WORKSPACE/candidate/build/Run
for file in output_${{ matrix.configuration }}/RESTART.*; do\
python ${GITHUB_WORKSPACE}/candidate/tests/utils/xrcmp.py \
--candidate $file \
--reference $GITHUB_WORKSPACE/reference/build/Run/$file \
--log_file $file_diff.txt \
--n_cores 1; \
done
- name: n-cores - Compare last *.CHANOBS_DOMAIN1 output with xrcmp
if: ${{ always() }}
run: |
cd $GITHUB_WORKSPACE/candidate/build/Run
file=$(ls -t output_${{ matrix.configuration }}/*.CHANOBS_DOMAIN1 | head -n 1)
python ${GITHUB_WORKSPACE}/candidate/tests/utils/xrcmp.py \
--candidate $file \
--reference $GITHUB_WORKSPACE/reference/build/Run/$file \
--log_file $file_diff.txt \
--n_cores 1; \
- name: n-cores - Compare last *.CHRTOUT_DOMAIN1 output with xrcmp
if: ${{ always() }}
run: |
cd $GITHUB_WORKSPACE/candidate/build/Run
file=$(ls -t output_${{ matrix.configuration }}/*.CHRTOUT_DOMAIN1 | head -n 1)
python ${GITHUB_WORKSPACE}/candidate/tests/utils/xrcmp.py \
--candidate $file \
--reference $GITHUB_WORKSPACE/reference/build/Run/$file \
--log_file $file_diff.txt \
--n_cores 1; \
- name: n-cores - Compare last *.LSMOUT_DOMAIN1 output with xrcmp
if: ${{ always() }}
run: |
cd $GITHUB_WORKSPACE/candidate/build/Run
file=$(ls -t output_${{ matrix.configuration }}/*.LSMOUT_DOMAIN1 | head -n 1)
python ${GITHUB_WORKSPACE}/candidate/tests/utils/xrcmp.py \
--candidate $file \
--reference $GITHUB_WORKSPACE/reference/build/Run/$file \
--log_file $file_diff.txt \
--n_cores 1; \
- name: n-cores - Compare last *.RTOUT_DOMAIN1 output with xrcmp
if: ${{ always() }}
run: |
cd $GITHUB_WORKSPACE/candidate/build/Run
file=$(ls -t output_${{ matrix.configuration }}/*.RTOUT_DOMAIN1 | head -n 1)
python ${GITHUB_WORKSPACE}/candidate/tests/utils/xrcmp.py \
--candidate $file \
--reference $GITHUB_WORKSPACE/reference/build/Run/$file \
--log_file $file_diff.txt \
--n_cores 1; \
- name: n-cores - Compare output with compare_output
if: ${{ always() }}
run: |
cd $GITHUB_WORKSPACE/candidate/build/Run
rm -rf output_diff
mkdir output_diff
python -c \
"import sys; \
sys.path.append('${GITHUB_WORKSPACE}/candidate/tests/utils'); \
import compare_output; \
from pathlib import Path; \
compare_output.plot_diffs('${GITHUB_WORKSPACE}/candidate/build/Run/output_diff', \
'${GITHUB_WORKSPACE}/candidate/build/Run/output_${{ matrix.configuration }}/', \
'${GITHUB_WORKSPACE}/reference/build/Run/output_${{ matrix.configuration }}/', \
'${{ matrix.configuration }}')"
- name: n-cores - Copy test results from container
if: ${{ always() }}
run: |
mkdir -p $GITHUB_WORKSPACE/test_report
cp -r $GITHUB_WORKSPACE/candidate/build/Run/output_diff/diff_plots/* $GITHUB_WORKSPACE/test_report/
- name: n-cores - Attach diff plots to PR
if: ${{ failure() }}
shell: bash
run: |
cd $GITHUB_WORKSPACE/candidate/tests/local/utils
bash attach_all_plots.bash $(jq --raw-output .pull_request.number "$GITHUB_EVENT_PATH") ${{ matrix.configuration }} n-cores
- name: n-cores - Archive test results to GitHub
if: ${{ failure() }}
uses: actions/upload-artifact@v4
with:
name: test-reports
path: |
${{ github.workspace }}/test_report/*
# Testing perfect restart, not cleaning candidate model output
- name: Setup and run candidate model perfect restart startup
run: |
rm -r $GITHUB_WORKSPACE/test_report/
cd $GITHUB_WORKSPACE/candidate/build/Run
sed -i 's|RESTART_FILENAME_REQUESTED = "RESTART/RESTART.2011082600_DOMAIN1"|RESTART_FILENAME_REQUESTED = "./RESTART.2011090100_DOMAIN1"|' namelist.hrldas
sed -i 's/KDAY = 7/KDAY = 1/' namelist.hrldas
rm output_${{ matrix.configuration }}/RESTART.2011090200_DOMAIN1
rm output_${{ matrix.configuration }}/HYDRO_RST.2011-09-02_00:00_DOMAIN1
make run-croton-${{ matrix.configuration }}-parallel
- name: restart - Compare HYDRO_RST.* output with xrcmp
if: ${{ always() }}
run: |
cd $GITHUB_WORKSPACE/candidate/build/Run
for file in output_${{ matrix.configuration }}/HYDRO_RST.2011-09-02_00:00_DOMAIN1; do\
python ${GITHUB_WORKSPACE}/candidate/tests/utils/xrcmp.py \
--candidate $file \
--reference $GITHUB_WORKSPACE/reference/build/Run/$file \
--log_file $file_diff.txt \
--n_cores 1; \
done
- name: restart - Compare RESTART.* output with xrcmp
if: ${{ always() }}
run: |
cd $GITHUB_WORKSPACE/candidate/build/Run
for file in output_${{ matrix.configuration }}/RESTART.2011090200_DOMAIN1; do\
python ${GITHUB_WORKSPACE}/candidate/tests/utils/xrcmp.py \
--candidate $file \
--reference $GITHUB_WORKSPACE/reference/build/Run/$file \
--log_file $file_diff.txt \
--n_cores 1; \
done
- name: restart - Compare last *.CHANOBS_DOMAIN1 output with xrcmp
if: ${{ always() }}
run: |
cd $GITHUB_WORKSPACE/candidate/build/Run
file=$(ls -t output_${{ matrix.configuration }}/*.CHANOBS_DOMAIN1 | head -n 1)
python ${GITHUB_WORKSPACE}/candidate/tests/utils/xrcmp.py \
--candidate $file \
--reference $GITHUB_WORKSPACE/reference/build/Run/$file \
--log_file $file_diff.txt \
--n_cores 1; \
- name: restart - Compare last *.CHRTOUT_DOMAIN1 output with xrcmp
if: ${{ always() }}
run: |
cd $GITHUB_WORKSPACE/candidate/build/Run
file=$(ls -t output_${{ matrix.configuration }}/*.CHRTOUT_DOMAIN1 | head -n 1)
python ${GITHUB_WORKSPACE}/candidate/tests/utils/xrcmp.py \
--candidate $file \
--reference $GITHUB_WORKSPACE/reference/build/Run/$file \
--log_file $file_diff.txt \
--n_cores 1; \
- name: restart - Compare last *.LSMOUT_DOMAIN1 output with xrcmp
if: ${{ always() }}
run: |
cd $GITHUB_WORKSPACE/candidate/build/Run
file=$(ls -t output_${{ matrix.configuration }}/*.LSMOUT_DOMAIN1 | head -n 1)
python ${GITHUB_WORKSPACE}/candidate/tests/utils/xrcmp.py \
--candidate $file \
--reference $GITHUB_WORKSPACE/reference/build/Run/$file \
--log_file $file_diff.txt \
--n_cores 1; \
- name: restart - Compare last *.RTOUT_DOMAIN1 output with xrcmp
if: ${{ always() }}
run: |
cd $GITHUB_WORKSPACE/candidate/build/Run
file=$(ls -t output_${{ matrix.configuration }}/*.RTOUT_DOMAIN1 | head -n 1)
python ${GITHUB_WORKSPACE}/candidate/tests/utils/xrcmp.py \
--candidate $file \
--reference $GITHUB_WORKSPACE/reference/build/Run/$file \
--log_file $file_diff.txt \
--n_cores 1; \
- name: restart - Compare output with compare_output
if: ${{ always() }}
run: |
cd $GITHUB_WORKSPACE/candidate/build/Run
rm -rf output_diff
mkdir output_diff
python -c \
"import sys; \
sys.path.append('${GITHUB_WORKSPACE}/candidate/tests/utils'); \
import compare_output; \
from pathlib import Path; \
compare_output.plot_diffs('${GITHUB_WORKSPACE}/candidate/build/Run/output_diff', \
'${GITHUB_WORKSPACE}/candidate/build/Run/output_${{ matrix.configuration }}/', \
'${GITHUB_WORKSPACE}/reference/build/Run/output_${{ matrix.configuration }}/', \
'${{ matrix.configuration }}')"
- name: restart - Copy test results from container
if: ${{ always() }}
run: |
mkdir -p $GITHUB_WORKSPACE/test_report
cp -r $GITHUB_WORKSPACE/candidate/build/Run/output_diff/diff_plots/* $GITHUB_WORKSPACE/test_report/
- name: restart - Attach diff plots to PR
if: ${{ failure() }}
shell: bash
run: |
cd $GITHUB_WORKSPACE/candidate/tests/local/utils
bash attach_all_plots.bash $(jq --raw-output .pull_request.number "$GITHUB_EVENT_PATH") ${{ matrix.configuration }} perfect-restart
- name: restart - Archive test results to GitHub
if: ${{ failure() }}
uses: actions/upload-artifact@v4
with:
name: test-reports
path: |
${{ github.workspace }}/test_report/*
================================================
FILE: .gitignore
================================================
*.o
*.so
*.so.*
*.mod
*.lst
*~
Makefile.comm
docs/_build/
src/lib/*
src/macros
src/HRLDAS/user_build_options
*exe
/.project
src/Run
src/Run/
src/setEnvar.sh
src/Makefile.comm
src/Land_models/NoahMP/user_build_options
src/Land_models/Noah/user_build_options
src/LandModel
src/LandModel_cpl
src/Land_models/NoahMP/MPP
build/
README.md
/.idea
*__pycache__*
*pytest_cache*
*.log
compile_options.sh
.DS_Store
.venv
.vscode
================================================
FILE: .readthedocs.yaml
================================================
# Read the Docs configuration file for Sphinx projects
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
# Required
version: 2
# Set the OS, Python version and other tools you might need
build:
os: ubuntu-22.04
tools:
python: "3.11"
# You can also specify other tool versions:
# nodejs: "20"
# rust: "1.70"
# golang: "1.20"
# Build documentation in the "docs/" directory with Sphinx
sphinx:
configuration: docs/userguide/conf.py
# You can configure Sphinx to use a different builder, for instance use the dirhtml builder for simpler URLs
# builder: "dirhtml"
# Fail on all warnings to avoid broken references
# fail_on_warning: true
# Optionally build your docs in additional formats such as PDF and ePub
formats:
- pdf
# - epub
# Optional but recommended, declare the Python requirements required
# to build your documentation
# See https://docs.readthedocs.io/en/stable/guides/reproducible-builds.html
python:
install:
- requirements: docs/requirements.txt
================================================
FILE: CITATION.cff
================================================
authors:
- family-names: Gochis
given-names: David
orcid: 0000-0001-8668-4850
# origin: technical doc
- family-names: Barlage
given-names: Michael
# orcid:
# origin: technical doc
- family-names: Cabell
given-names: Ryan
orcid: 0000-0002-3623-5130
# origin: technical doc
- family-names: Casali
given-names: Matthew
# orcid: 0000-0001-6939-0332
# origin: technical doc
# - family-names:
# given-names: champham
# orcid:
# origin: github
- family-names: Dugger
given-names: Aubrey
orcid: 0000-0001-8250-4218
# origin: technical doc
- family-names: Eidhammer
given-names: Trude
orcid: 0000-0003-2281-9351
# origin: github
- family-names: Enzminger
given-names: Tom
orcid: 0000-0001-5072-3854
# origin: technical doc
- family-names: FitzGerald
given-names: Katelyn
orcid: 0000-0003-4184-1917
# origin: technical doc
- family-names: Felfelani
given-names: Farshid
orcid: 0000-0003-1360-5095
# origin: technical doc
- family-names: Gaydos
given-names: Andy
# origin: technical doc
- family-names: Mazrooei
given-names: Amir
orcid: 0000-0001-9171-9595
# origin: technical doc
- family-names: McAllister
given-names: Molly
# orcid:
# origin: technical doc
- family-names: McCreight
given-names: James
orcid: 0000-0001-6018-425X
# origin: technical doc
- family-names: McCluskey
given-names: Alyssa
# orcid:
# origin: technical doc
- family-names: Omani
given-names: Nina
# orcid:
# origin: technical doc
- family-names: RafieeiNasab
given-names: Arezoo
# github-names: arezoorn
orcid: 0000-0001-8557-107X
# origin: technical doc
- family-names: Rasmussen
given-names: Soren
#github-names: scrasmussen
orcid: 0000-0003-3899-1463
# origin: github
- family-names: Read
given-names: Laura
orcid: 0000-0003-3476-1249
# origin: technical doc
- family-names: Sampson
given-names: Kevin
orcid: 0000-0002-5537-7775
# origin: technical doc
- family-names: Srivastava
given-names: Ishita
orcid: 0009-0002-4060-6659
# origin: technical doc
- family-names: Yates
given-names: David
orcid: 0000-0002-0688-3460
# origin: technical doc
- family-names: Zhang
given-names: Yongxin
orcid: 0000-0001-6321-1276
# origin: technical doc
- family-names: Yu
given-names: Wei
# github-names:
# orcid:
# origin:
- family-names: Karsten
given-names: Logan
# github-names: logankarsten
# orcid:
# origin: github
- family-names: Dunlap
given-names: Rocky
# orcid:
# origin: github
- family-names: Fanfarillo
given-names: Alessandro
orcid: 0000-0003-3487-7452
# origin: github
- family-names: Fersch
given-names: Benjamin
# orcid:
# origin: github
- family-names: Heldmyer
given-names: Aaron
# github: aheldmyer
orcid: 0000-0001-8608-4927
# origin: github
- family-names: Johnson
given-names: Donald
# github-names: donaldwj
# orcid:
# origin: github
- family-names: Lahmers
given-names: Tim
# orcid:
# origin: github
- family-names: Mattern
given-names: David
# orcid:
# origin: github
# - family-names:
# given-names: Nels
# orcid:
# origin: github
- family-names: Rosen
given-names: Dan
# orcid:
# origin: github
- family-names: Valayamkunnath
given-names: Prasanth
orcid: 0000-0003-2270-0780
# origin: github
cff-version: 1.2.0
date-released: "2025-03-14"
title: "WRF-Hydro"
repository-code: "https://github.com/NCAR/wrf_hydro_nwm_public"
version: 5.4.0
url: "https://ral.ucar.edu/projects/wrf_hydro"
keywords:
- "hydrologic model"
- "hydrology"
- "hydrometeorology"
license-url: "https://github.com/NCAR/wrf_hydro_nwm_public/blob/main/LICENSE.txt"
identifiers:
- description: "This is the archived snapshot of all versions of WRF-Hydro"
type: doi
value: 10.5281/zenodo.3625237
- description: "This is the archived snapshot of version v5.4.0 of WRF-Hydro"
type: doi
value: 10.5281/zenodo.15040873
- description: "This is the archived snapshot of version v5.3.0 of WRF-Hydro"
type: doi
value: 10.5281/zenodo.5773161
- description: "This is the archived snapshot of version v5.2.0 of WRF-Hydro"
type: doi
value: 10.5281/zenodo.4479912
- description: "This is the archived snapshot of version v5.1.2 of WRF-Hydro"
type: doi
value: 10.5281/zenodo.3678643
- description: "This is the archived snapshot of version v5.1.1 of WRF-Hydro"
type: doi
value: 10.5281/zenodo.3625238
message: "Please cite this software using the metadata from this file."
================================================
FILE: CMakeLists.txt
================================================
cmake_minimum_required (VERSION 3.12)
cmake_policy(SET CMP0074 NEW) # use xxxx_ROOT env vars
if (NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE "Release")
endif()
# set project name and version numbers
project (WRF_Hydro LANGUAGES Fortran C)
set (WRF_Hydro_VERSION_MAJOR 5)
set (WRF_Hydro_VERSION_MINOR 4)
set (WRF_Hydro_VERSION_PATCH 0)
set (National_Water_Model_VERSION_MAJOR 3)
set (National_Water_Model_VERSION_MINOR 1)
set (National_Water_Model_VERSION_PATCH beta)
# set cmake to work with MPI Fortran
find_package(MPI REQUIRED)
add_compile_options(${MPI_Fortran_COMPILE_FLAGS})
include_directories(${MPI_Fortran_INCLUDE_PATH})
link_directories(${MPI_Fortran_LIBRARIES})
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
set(CMAKE_SKIP_BUILD_RPATH FALSE)
set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
# enable ctests
enable_testing()
#message("-- MPI Include directories: " ${MPI_INCLUDE_PATH} )
#message("-- MPI C COMPILER : " ${MPI_C_COMPILER} )
#message("-- MPI CXX COMPILER : " ${MPI_CXX_COMPILER} )
#message("-- MPI Fortran COMPILER : " ${MPI_Fortran_COMPILER} )
#message("-- MPI COMPILE FLAGS : " ${MPI_COMPILE_FLAGS} )
#message("-- MPI LINK FLAGS : " ${MPI_LINK_FLAGS} )
#message("-- MPI Fortran LINK FLAGS : " ${MPI_Fortran_LINK_FLAGS} )
#message("-- MPI Fortran LINK LIBRARIES : " ${MPI_Fortran_LIBRARIES} )
#message("-- MPI LIBRARY : " ${MPI_LIBRARY} )
#message("-- MPI EXTRA LIBRARY : " ${MPI_EXTRA_LIBRARY} )
#message("-- MPI LIBRARIES : " ${MPI_LIBRARIES} )
# netcdf does not have a built in package locator so add custom module directory
# that contains FindNetCDF.cmake
set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/src/cmake-modules)
# try to find the installed NETCDF library
if (NOT TARGET netCDF::netcdff AND TARGET NetCDF::NetCDF_Fortran)
add_library(netCDF::netcdff ALIAS NetCDF::NetCDF_Fortran)
endif()
if (NOT TARGET netCDF::netcdff)
set(NETCDF_F90 "YES")
set(NETCDF_F77 "YES")
find_package(NetCDF REQUIRED)
message("-- NetCDF Include Dir(s): ${NETCDF_INCLUDES_F77} ${NETCDF_INCLUDES_F90}")
endif()
# set user controled enviorment variables
set(HYDRO_LSM $ENV{HYDRO_LSM} CACHE STRING "Name of the Land Surface Model to Use")
# set enviorment variables if they have not been set
if ("${HYDRO_LSM}" STREQUAL "")
set(HYDRO_LSM "NoahMP")
message("-- Setting LSM to: NoahMP")
endif()
# get the variables defined by setEnvar.sh
set(WRF_HYDRO $ENV{WRF_HYDRO} CACHE STRING "WRF environment variable. Always set to 1 for WRF-Hydro")
set(HYDRO_D $ENV{HYDRO_D} CACHE STRING "Print additional debug information in WRF-Hydro")
set(WRF_HYDRO_RAPID $ENV{WRF_HYDRO_RAPID} CACHE STRING "WRF-Hydro coupling to RAPID routing model 0=off 1=on")
set(SPATIAL_SOIL $ENV{SPATIAL_SOIL} CACHE STRING "Spatially distributed soil parameters for NoahMP 0=off 1=on")
set(WRFIO_NCD_LARGE_FILE_SUPPORT $ENV{WRFIO_NCD_LARGE_FILE_SUPPORT} CACHE STRING "Large netCDF file support 0=off, 1=on")
set(NCEP_WCOSS $ENV{NCEP_WCOSS} CACHE STRING "WCOSS file units 0=off 1=on")
set(NWM_META $ENV{NWM_META} CACHE STRING "NWM output metadata 0=off 1=on")
set(WRF_HYDRO_NUDGING $ENV{WRF_HYDRO_NUDGING} CACHE STRING "Streamflow nudging 0=off 1=on")
set(OUTPUT_CHAN_CONN $ENV{OUTPUT_CHAN_CONN} CACHE STRING "Output channel connections")
set(PRECIP_DOUBLE $ENV{PRECIP_DOUBLE} CACHE STRING "Precipitation as double")
set(WRF_HYDRO_NUOPC $ENV{WRF_HYDRO_NUOPC} CACHE STRING "NUOPC library 0=off 1=on")
#set default values for env variables
if (WRF_HYDRO STREQUAL "")
set(WRF_HYDRO "1" CACHE STRING "WRF environment variable. Always set to 1 for WRF-Hydro" FORCE)
endif()
if (HYDRO_D STREQUAL "")
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
set(HYDRO_D "1" CACHE STRING "Print additonal debug information in WRF-Hydro" FORCE)
else()
set(HYDRO_D "0" CACHE STRING "Print additonal debug information in WRF-Hydro" FORCE)
endif()
endif()
if (WRF_HYDRO_RAPID STREQUAL "")
set(WRF_HYDRO_RAPID "0" CACHE STRING "WRF-Hydro coupling to RAPID routing model 0=off 1=on" FORCE)
endif()
if (SPATIAL_SOIL STREQUAL "")
set(SPATIAL_SOIL "0" CACHE STRING "Spatially distributed soil parameters for NoahMP 0=off 1=on" FORCE)
endif()
if (WRFIO_NCD_LARGE_FILE_SUPPORT STREQUAL "")
set(WRFIO_NCD_LARGE_FILE_SUPPORT "0" CACHE STRING "Large netCDF file support 0=off, 1=on" FORCE)
endif()
if (NCEP_WCOSS STREQUAL "")
set(NCEP_WCOSS "0" CACHE STRING "WCOSS file units 0=off, 1=on" FORCE)
endif()
if (NWM_META STREQUAL "")
set(NWM_META "0" CACHE STRING "NWM output metadata 0=off, 1=on" FORCE)
endif()
if (WRF_HYDRO_NUDGING STREQUAL "")
set(WRF_HYDRO_NUDGING "0" CACHE STRING "Streamflow nudging 0=off, 1=on" FORCE)
endif()
if (OUTPUT_CHAN_CONN STREQUAL "")
set(OUTPUT_CHAN_CONN "0" CACHE STRING "Output channel connections" FORCE)
endif()
if (PRECIP_DOUBLE STREQUAL "")
set(PRECIP_DOUBLE "0" CACHE STRING "Precipitation as double" FORCE)
endif()
if (WRF_HYDRO_NUOPC STREQUAL "")
set(WRF_HYDRO_NUOPC "0" CACHE STRING "NUOPC library 0=off, 1=on" FORCE)
endif()
# add preprocessor defines using env variables
message("=============================================================")
message("-- Start of WRF-Hydro Env VARIABLES" )
#always use -DMPP_LAND
add_definitions(-DMPP_LAND)
# set -DWRF_HYDRO from env
message("WRF_HYDRO = " ${WRF_HYDRO} )
if (WRF_HYDRO STREQUAL "1" )
add_definitions(-DWRF_HYDRO)
endif()
#set -DHYDRO_D from env
message("HYDRO_D = " ${HYDRO_D} )
if (HYDRO_D STREQUAL "1" )
add_definitions(-DHYDRO_D)
endif()
# set -DWRF_HYDRO_RAPID from env
if (WRF_HYDRO_RAPID STREQUAL "1" )
message("WRF_HYDRO_RAPID = " ${WRF_HYDRO_RAPID} )
add_definitions(-DWRF_HYDRO_RAPID)
endif()
#set -DSPATIAL_SOIL from env
message("SPATIAL_SOIL = " ${SPATIAL_SOIL} )
if (SPATIAL_SOIL STREQUAL "1" )
add_definitions(-DSPATIAL_SOIL)
endif()
#set -DWRFIO_NCD_LARGE_FILE_SUPPORT from env
message("WRFIO_NCD_LARGE_FILE_SUPPORT = " ${WRFIO_NCD_LARGE_FILE_SUPPORT} )
if(WRFIO_NCD_LARGE_FILE_SUPPORT STREQUAL "1" )
add_definitions(-DWRFIO_NCD_LARGE_FILE_SUPPORT)
endif()
#set -DNCEP_WCOSS from env
message("NCEP_WCOSS = " ${NCEP_WCOSS} )
if (NCEP_WCOSS STREQUAL "1" )
add_definitions(-DNCEP_WCOSS)
endif()
#set -DNWM_META from env
message("NWM_META = " ${NWM_META} )
if (NWM_META STREQUAL "1" )
add_definitions(-DNWM_META)
endif()
#set -DWRF_HYDRO_NUDGING from env
message("WRF_HYDRO_NUDGING = " ${WRF_HYDRO_NUDGING} )
if (WRF_HYDRO_NUDGING STREQUAL "1" )
add_definitions(-DWRF_HYDRO_NUDGING)
endif()
#set -DOUTPUT_CHAN_CONN from env
if (OUTPUT_CHAN_CONN STREQUAL "1" )
message("OUTPUT_CHAN_CONN = " ${OUTPUT_CHAN_CONN} )
add_definitions(-DOUTPUT_CHAN_CONN)
# requires nudging io module
set(WRF_HYDRO_NUDGING_IO "1")
endif()
#set -DPRECIP_DOUBLE from env
message("PRECIP_DOUBLE = " ${PRECIP_DOUBLE} )
if (PRECIP_DOUBLE STREQUAL "1" )
add_definitions(-DPRECIP_DOUBLE)
endif()
#set -DWRF_HYDRO_NUOPC from env
message("WRF_HYDRO_NUOPC = " ${WRF_HYDRO_NUOPC} )
if (WRF_HYDRO_NUOPC STREQUAL "1" )
add_definitions(-DWRF_HYDRO_NUOPC)
endif()
option(BUILD_CROCUS "Build Crocus" ON)
option(WRF_HYDRO_CREATE_EXE_SYMLINK "Create symlink wrfhydro.exe -> wrfhydro" ON)
message("WRF_HYDRO_CREATE_EXE_SYMLINK = " ${WRF_HYDRO_CREATE_EXE_SYMLINK} )
message("=============================================================")
#set compile flags based on compiler id
if (CMAKE_Fortran_COMPILER_ID MATCHES "GNU.*")
# set compile flags for gfortran
message( "-- Using gfortran")
set(CMAKE_Fortran_FLAGS "-cpp -w -ffree-form -ffree-line-length-none -fconvert=big-endian -frecord-marker=4")
if (CMAKE_Fortran_COMPILER_VERSION VERSION_GREATER_EQUAL 9)
set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -fallow-argument-mismatch")
endif()
set(CMAKE_Fortran_FLAGS_RELEASE "-O2")
set(CMAKE_Fortran_FLAGS_DEBUG "-O0 -g -fbacktrace")
elseif (CMAKE_Fortran_COMPILER_ID MATCHES "Intel.*")
# set compile flags for ifort
message( "-- Using ifort")
set(CMAKE_Fortran_FLAGS "-fpp -w -ftz -align all -fno-alias -fp-model precise -FR -convert big_endian")
set(CMAKE_Fortran_FLAGS_RELEASE "-O2 -march=core-avx2")
set(CMAKE_Fortran_FLAGS_DEBUG "-O0 -g -traceback")
elseif ((CMAKE_Fortran_COMPILER_ID MATCHES "PGI.*") OR (CMAKE_Fortran_COMPILER_ID MATCHES "NVHPC.*"))
message("-- Using NVHPC / PGI")
set(CMAKE_Fortran_FLAGS "-Mpreprocess -Mfree -byteswapio -Kieee ")
set(CMAKE_Fortran_FLAGS_RELEASE "-O2")
set(CMAKE_Fortran_FLAGS_DEBUG "-O0 -g -traceback")
elseif ((CMAKE_Fortran_COMPILER_ID MATCHES "Cray*"))
message("-- Using Cray")
set(CMAKE_Fortran_FLAGS "-eZ -ffree -ef -h alias=none -h fp1 -hbyteswapio")
set(CMAKE_Fortran_FLAGS_RELEASE "-O3 -G2")
set(CMAKE_Fortran_FLAGS_DEBUG "-O0 -G0") # -traceback")
else()
message("CMAKE_Fortran_COMPILER full path: " ${CMAKE_Fortran_COMPILER})
message("Fortran compiler: " ${Fortran_COMPILER_NAME})
message("No optimized Fortran compiler flags are known, we just try -O2...")
set(CMAKE_Fortran_FLAGS "-cpp")
set(CMAKE_Fortran_FLAGS_RELEASE "-O2")
set(CMAKE_Fortran_FLAGS_DEBUG "-O0 -g")
endif()
message("-- CMAKE_Fortran_COMPILER full path: " ${CMAKE_Fortran_COMPILER})
#set output directories for libraries binaries and fortran .mod files
set(CMAKE_BINARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib)
set(CMAKE_Fortran_MODULE_DIRECTORY ${PROJECT_BINARY_DIR}/mods)
#add common include directores need in the build
include_directories(AFTER ${PROJECT_BINARY_DIR}/mods)
include_directories(AFTER ${MPI_INCLUDE_PATH})
# include_directories(AFTER ${NETCDF_INCLUDES}) # NOTE: We don't need the C include for netCDF
include_directories(AFTER ${NETCDF_INCLUDES_F77})
include_directories(AFTER ${NETCDF_INCLUDES_F90})
include_directories(AFTER ${PROJECT_SOURCE_DIR}/src/Data_Rec)
add_subdirectory("src")
add_subdirectory("tests/ctests")
================================================
FILE: CODE_OF_CONDUCT.md
================================================
# Contributor Code of Conduct
## Our Pledge
We, as contributors, creators, stewards, and maintainers of WRF-Hydro® pledge to make participation in our software, system or hardware project and community a safe, productive, welcoming and inclusive experience for everyone. All participants are required to abide by this Code of Conduct. This includes respectful treatment of everyone regardless of age, body size, disability, ethnicity, gender identity or expression, level of experience, nationality, political affiliation, veteran status, pregnancy, genetic information, physical appearance, race, religion, or sexual orientation, as well as any other characteristic protected under applicable US federal or state law.
## Our Standards
Examples of behavior that contribute to creating a positive environment include:
* All participants are treated with respect and consideration, valuing a diversity of views and opinions
* Be considerate, respectful, and collaborative
* Communicate openly with respect for others, critiquing ideas rather than individuals and gracefully accepting criticism
* Acknowledging the contributions of others
* Avoid personal attacks directed toward other participants
* Be mindful of your surroundings and of your fellow participants
* Alert UCAR staff and suppliers/vendors if you notice a dangerous situation or someone in distress
* Respect the rules and policies of the project and venue
Examples of unacceptable behavior by participants include:
* Harassment, intimidation, or discrimination in any form
* Physical, verbal, or written abuse by anyone to anyone, including repeated use of pronouns other than those requested
* Unwelcome sexual attention or advances
* Personal attacks directed at other guests, members, participants, etc.
* Publishing others' private information such as a physical or electronic address, without explicit permission
* Alarming, intimidating, threatening, or hostile comments or conduct
* Inappropriate use of nudity and/or sexual images
* Threatening or stalking anyone, including a participant
* Other conduct which could reasonably be considered inappropriate in a professional setting
## Scope
This Code of Conduct applies to all spaces managed by the project whether they be physical, online or face-to-face. This includes project code, code repository, associated web pages, documentation, mailing lists, project websites and wiki pages, issue tracker, meetings, telecon, events, project social media accounts, and any other forums created by the project team which the community uses for communication. In addition, violations of this Code of Conduct outside these spaces may affect a person's ability to participate within them. Representation of a project may be further defined and clarified by project maintainers.
## Community Responsibilities
Everyone in the community is empowered to respond to people who are showing unacceptable behavior. They can talk to them privately or publicly. Anyone requested to stop unacceptable behavior is expected to comply immediately. If the behavior continues concerns may be brought to the project administrators or to any other party listed in the *Reporting* section below.
## Project Administrator Responsibilities
Project administrators are responsible for clarifying the standards of acceptable behavior and are encouraged to model appropriate behavior and provide support when people in the community point out inappropriate behavior. Project administrator(s) are normally the ones that would be tasked to carry out the actions in the *Consequences* section below.
Project administrators are also expected to keep this *Code of Conduct* updated with the main one housed at UCAR as listed below in the *Attribution* section.
## Reporting
Instances of unacceptable behavior can be brought to the attention of the [project administrator(s)](https://ral.ucar.edu/projects/wrf_hydro/team) who may take any action as outlined in the *Consequences* section below. However, making a report to a project administrator is not considered an 'official report' to UCAR.
Instances of unacceptable behavior may also be reported directly to UCAR via [UCAR's Harassment Reporting and Complaint Procedure](https://operations.ucar.edu/procedures/hr/harassment-reporting-and-complaint-procedure) or anonymously through [UCAR's EthicsPoint Hotline](https://www.ucar.edu/who-we-are/ethics).
Complaints received by UCAR will be handled pursuant to the procedures outlined in UCAR's Harassment Reporting and Complaint Procedure. Complaints to UCAR will be held as confidential as practicable under the circumstances, and retaliation against a person who initiates a complaint or an inquiry about inappropriate behavior will not be tolerated.
Any contributor can use these reporting methods even if they are not directly affiliated with UCAR. For more information, view the [Frequently Asked Questions (FAQ)](https://operations.ucar.edu/procedures/hr/reporting-faqs) page for reporting.
## Consequences
Upon receipt of a complaint, the project administrator(s) may take any action deemed necessary and appropriate under the circumstances. Such action can include things such as: removing, editing, or rejecting comments, commits, code, wiki edits, email, issues, and other contributions that are not aligned to this Code of Conduct, or banning temporarily or permanently any contributor for other behaviors that are deemed inappropriate, threatening, offensive, or harmful. Project administrators also have the right to report violations to UCAR HR and/or UCAR's Office of Diversity, Equity, and Inclusion (ODEI) as well as a participant's home institution and/or law enforcement. In the event an incident is reported to UCAR, UCAR will follow its [Harassment Reporting and Complaint Procedure](https://operations.ucar.edu/procedures/hr/harassment-reporting-and-complaint-procedure).
## Process for Changes
All UCAR-managed projects are required to adopt this Contributor Code of Conduct. Adoption is assumed even if not expressly stated in the repository. Projects should fill in sections where prompted with project-specific information, including, project name, email addresses, adoption date, etc. There is one section below marked "optional", which may not apply to a given project.
Projects that adopt this Code of Conduct need to stay up to date with UCAR's Contributor Code of Conduct, linked in the *Attribution* section below. Projects can make limited substantive changes to the Code of Conduct; however, the changes must be limited in scope and may not contradict the UCAR Contributor Code of Conduct.
## Attribution
This Code of Conduct was originally adapted from the Contributor Covenant, version 1.4.1. We then aligned it with the UCAR Participant Code of Conduct, which also borrows from the American Geophysical Union (AGU) Code of Conduct. The UCAR Participant Code of Conduct applies to both UCAR employees, as well as participants in activities run by UCAR. We modified the Scope section with the Django Project description. The original version of this for all software projects that have strong management from UCAR or UCAR staff is available on the UCAR website at https://www.ucar.edu/who-we-are/ethics-integrity/codes-conduct/contributors (the date that it was adopted by this project was 10 July 2019). When responding to complaints, UCAR HR and ODEI will do so based on the latest published version. Therefore, any project-specific changes should follow the Process for Changes section above.
================================================
FILE: LICENSE.txt
================================================
USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS AND CONDITIONS:
1. License. Subject to these terms and conditions, University Corporation for Atmospheric Research (UCAR)
grants you a non-exclusive, royalty-free license to use, create derivative works, publish, distribute,
disseminate, transfer, modify, revise and copy the WRF-Hydro® software, in both object and source code
(the "Software"). You shall not sell, license or transfer for a fee the Software, or any work that in any
manner contains the Software.
2. Disclaimer of Warranty on Software. Use of the Software is at your sole risk. The Software is provided
"AS IS" and without warranty of any kind and UCAR EXPRESSLY DISCLAIMS ALL WARRANTIES AND/OR CONDITIONS OF
ANY KIND, EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, ANY WARRANTIES OR CONDITIONS OF TITLE,
NON-INFRINGEMENT OF A THIRD PARTY?S INTELLECTUAL PROPERTY, MERCHANTABILITY OR SATISFACTORY QUALITY AND
FITNESS FOR A PARTICULAR PURPOSE. THE PARTIES EXPRESSLY DISCLAIM THAT THE UNIFORM COMPUTER INFORMATION
TRANSACTIONS ACT (UCITA) APPLIES TO OR GOVERNS THIS AGREEMENT. No oral or written information or advice
given by UCAR or a UCAR authorized representative shall create a warranty or in any way increase the scope
of this warranty. Should the Software prove defective, you (and neither UCAR nor any UCAR representative)
assume the cost of all necessary correction.
3. Limitation of Liability. UNDER NO CIRCUMSTANCES, INCLUDING NEGLIGENCE, SHALL UCAR BE LIABLE FOR ANY
DIRECT, INCIDENTAL, SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES INCLUDING LOST REVENUE, PROFIT OR DATA,
WHETHER IN AN ACTION IN CONTRACT OR TORT ARISING OUT OF OR RELATING TO THE USE OF OR INABILITY TO USE THE
SOFTWARE, EVEN IF UCAR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
4. Compliance with Law. All Software and any technical data delivered under this Agreement are subject to
U.S. export control laws and may be subject to export or import regulations in other countries. You agree
to comply strictly with all applicable laws and regulations in connection with use and distribution of the
Software, including export control laws, and you acknowledge that you have responsibility to obtain any
required license to export, re-export, or import as may be required.
5. No Endorsement/No Support. The names UCAR/NCAR, National Center for Atmospheric Research and the
University Corporation for Atmospheric Research may not be used in any advertising or publicity to endorse
or promote any products or commercial entity unless specific written permission is obtained from UCAR. The
Software is provided without any support or maintenance, and without any obligation to provide you with
modifications, improvements, enhancements, or updates of the Software.
6. Controlling Law and Severability. This Agreement shall be governed by the laws of the United States and the
State of Colorado. If for any reason a court of competent jurisdiction finds any provision, or portion
thereof, to be unenforceable, the remainder of this Agreement shall continue in full force and effect. This
Agreement shall not be governed by the United Nations Convention on Contracts for the International Sale of
Goods, the application of which is hereby expressly excluded.
7. Termination. Your rights under this Agreement will terminate automatically without notice from UCAR if you
fail to comply with any term(s) of this Agreement. You may terminate this Agreement at any time by destroying
the Software and any related documentation and any complete or partial copies thereof. Upon termination, all
rights granted under this Agreement shall terminate. The following provisions shall survive termination:
Sections 2, 3, 6 and 9.
8. Complete Agreement. This Agreement constitutes the entire agreement between the parties with respect to the
use of the Software and supersedes all prior or contemporaneous understandings regarding such subject matter.
No amendment to or modification of this Agreement will be binding unless in a writing and signed by UCAR.
9. Notices and Additional Terms. Copyright in Software is held by UCAR. You must include, with each copy of the
Software and associated documentation, a copy of this Agreement and the following notice:
"The source of this material is the Research Applications Laboratory at the National Center for Atmospheric
Research, a program of the University Corporation for Atmospheric Research (UCAR) pursuant to a Cooperative
Agreement with the National Science Foundation; ©2007 University Corporation for Atmospheric Research. All
Rights Reserved."
The following notice shall be displayed on any scholarly works associated with, related to or derived from
the Software:
"The WRF-Hydro modeling system was developed at the National Center for Atmospheric Research (NCAR) through
grants from the National Aeronautics and Space Administration (NASA) and the National Oceanic and Atmospheric
Administration (NOAA). NCAR is sponsored by the United States National Science Foundation."
BY USING OR DOWNLOADING THIS SOFTWARE, YOU AGREE TO BE BOUND BY THE TERMS AND CONDITIONS OF THIS AGREEMENT.
================================================
FILE: NEWS.md
================================================
# WRF-Hydro® v5.4.0 Release Notes
Please note that starting with WRF-Hydro v5.4, CMake is the preferred
build system. The legacy configure/compile scripts are still present,
but should be considered deprecated and will not be supported in
future releases.
WRF-Hydro model documentation has been migrated from individual Word and
PDF files to an online documentation system that will be hosted alongside
the model code in the GitHub repository. Please see the docs/ directory for
more details and view the documentation on the web at:
https://wrf-hydro.readthedocs.io/en/latest
For specific updates, reference the PRs listed in the following sections:
## Model Improvements
- PR#756: Add initial support for gage-assisted diversions in channel
routing, which requires a new optional Diversion netCDF parameter file.
This also adds a C compiler dependency
- PR#725: `lake_option` added to `&hydro_namelist` to override lake physics
options (or turn off lakes completely). Reservoir options have been moved
to a new, separate `&reservoir_nlist` namelist
- PR#743: liquid water fraction (or snow) added as optional forcing input variables
Forcing variables names can now be supplied as namelist inputs
- PR#782: documentation converted to readthedocs, also PR#786, PR#785,
PR#774, PR#789, PR#795, PR#796, PR#792, PR#799, PR#798, PR#791, PR#799,
PR#798, PR#797, PR#805, PR#804, PR#809, PR#810
## Bugfixes:
- PR#803, PR#808: `lake_option` bugfixes
- PR#813: Finding NetCDF fix for new Derecho environment
- PR#811: Adding routing diversion Makefiles
- PR#785: Support Fedora MPI environmental variables for NetCDF
- PR#752: LSM accumulations not reset if `RSTRT_SWC` equals `no reset`
- PR#729: Crocus glacier arrays changed to `optional` from `allocatable`
- Bugfixes: CMake nudging parallel build
## General cleanup and misc.
- PR#802: increment version numbers
- PR#794: input namelists and parametere tables
- PR#790: PR template updates
- PR#764: adding deprecation warning to configure build, CMake preferred
- PR#739: general CMake improvements, tabs to spaces
- PR#720: header info from files removed
- PR#724: redundant return statements removed
- PR#723: MPI case style fixed
- PR#733: .F -> .F90 file renaming
- PR#717: Added citation file
================================================
FILE: docs/BUILD.rst
================================================
Build
===========
Requirements
~~~~~~~~~~~~
+------------+---------+
|Compiler | Version |
+============+=========+
| GNU | 11+ |
+------------+---------+
| Intel | 2023+ |
+------------+---------+
| NVidia | 23+ |
+------------+---------+
| Cray | 15+ |
+------------+---------+
+--------------------+---------+
| Libraries/Software | Version |
+====================+=========+
| MPI | 3.x+ |
+--------------------+---------+
| Fortran NetCDF | 4.4+ |
+--------------------+---------+
| CMake | 3.12+ |
+--------------------+---------+
Note: Supported compiler versions are chosen based on long-term support (LTS) status, ensuring they continue to receive security and bug fixes.
Install dependencies for Debain/Ubuntu
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. code-block:: bash
$ apt install -y git cmake libnetcdff-dev mpi-default-dev
Install/activate dependencies for Red Hat/Fedora
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. code-block:: bash
$ dnf install -y git cmake netcdf-fortran-mpich-devel
<log out and back in to activate environment modules>
$ module load mpi
CMake Build
~~~~~~~~~~~
.. code-block:: bash
$ mkdir build
$ cd build
$ cmake ..
$ make -j 4
The executables, namelists and tables are now in the ``build/Run`` directory.
Testcases with domain setups can be found `here <https://ral.ucar.edu/projects/wrf_hydro/testcases>`_.
To build with additional functionality, enter ``cmake .. -DFOO=1`` where the
available options are described in the following table.
+------------------------------------+-------------------------------------------------------------------------------+
| CMake WRF-Hydro Specific Options | Functionality |
+====================================+===============================================================================+
| ``-DWRF_HYDRO=1`` | Default: turn on WRF-Hydro |
+------------------------------------+-------------------------------------------------------------------------------+
| ``-DHYDRO_D=1`` | Enhanced diagnostic output for debugging |
+------------------------------------+-------------------------------------------------------------------------------+
| ``-DSPATIAL_SOIL=1`` | Spatially distributed parameters for NoahMP |
+------------------------------------+-------------------------------------------------------------------------------+
| ``-DWRF_HYDRO_NUDGING=1`` | Enable the streamflow nudging routines for Muskingum-Cunge Routing |
+------------------------------------+-------------------------------------------------------------------------------+
| ``-DNWM_META=1`` | Output NWM Metadata |
+------------------------------------+-------------------------------------------------------------------------------+
| ``-DPRECIP_DOUBLE=1`` | Double precipitation from hydro forcing |
+------------------------------------+-------------------------------------------------------------------------------+
| ``-DNCEP_WCOSS=1`` | Do not use unless working on the WCOSS machines |
+------------------------------------+-------------------------------------------------------------------------------+
+------------------------------------+-------------------------------------------------------------------------------+
| Unsupported Functionality | |
+====================================+===============================================================================+
| ``-DWRF_HYDRO_NUOPC=1`` | Coupling with NUOPC, this option is not currently supported |
+------------------------------------+-------------------------------------------------------------------------------+
CMake Testcase
~~~~~~~~~~~~~~
To download and setup the Croton testcase in ``build/Run`` use one of the
following commands.
The first time the ``croton.tar.gz`` file will be downloaded, extracted, and configured.
Future commands will reconfigure the ``Run`` directory.
+---------------------------------+
| Make Command |
+=================================+
| make croton |
+---------------------------------+
| make croton-gridded |
+---------------------------------+
| make croton-gridded-no-lakes |
+---------------------------------+
| make croton-nwm |
+---------------------------------+
| make croton-nwm_ana |
+---------------------------------+
| make croton-nwm_longe_range |
+---------------------------------+
| make croton-reach |
+---------------------------------+
| make croton-reach-lakes |
+---------------------------------+
================================================
FILE: docs/Makefile
================================================
SOURCEDIR = userguide/
BUILDDIR = _build/html
# List all source files to track dependencies
SOURCE_FILES = $(shell find . -name '*.rst' -o -name '*.rest' -o -name '*.py' -o -name '*.css')
all: build
build: $(BUILDDIR)/index.html
$(BUILDDIR)/index.html: $(SOURCE_FILES)
@echo "Building readthedocs documentation"
sphinx-build -b html $(SOURCEDIR) $(BUILDDIR)
@echo "Open $(BUILDDIR)/index.html to preview readthedocs documentation"
open: build
open $(BUILDDIR)/index.html
clean:
rm -rf _build
================================================
FILE: docs/requirements.txt
================================================
sphinx_rtd_theme
================================================
FILE: docs/userguide/_static/ug_theme.css
================================================
.wy-nav-content {
max-width: 1000px !important;
}
.center {
text-align: center;
}
.underline {
text-decoration: underline;
}
.filename {
font-family: Courier, "Courier New", monospace;
white-space: pre-wrap;
}
.program {
font-family: Courier, "Courier New", monospace;
white-space: pre-wrap;
color: greenyellow;
background-color: black;
padding-left: 5px;
padding-right: 5px;
}
.wy-table-responsive table td, .wy-table-responsive table th {
white-space: normal;
}
================================================
FILE: docs/userguide/appendices.rest
================================================
.. vim: syntax=rst
.. include:: meta.rest
.. role:: raw-html(raw)
:format: html
APPENDICES
==========
This section contains supplementary information.
.. _section-a1:
A1. Standalone (Uncoupled) WRF-Hydro Test Case User Guide
---------------------------------------------------------
Purpose
^^^^^^^
This example test case is meant to orient you to running the
WRF-Hydro modelling system using prepared geographical inputs, and
prepared forcing data for a specific region (domain). We provide
baseline instructions to test that your WRF-Hydro executable was
compiled correctly and is able to run on your system. Please see the
Readme.txt file provided with the test case for specific file
descriptions and a regional description.
This test case provides example namelists and prepared geographical
input files for three routing configurations. While the step-by-step
walkthrough instructions here guide you through running the Gridded
configuration we suggest that you explore the other routing
configurations and related namelists for reference.
For further information on the WRF-Hydro modeling system and possible
training opportunities, please visit https://ral.ucar.edu/projects/wrf_hydro.
Requirements
^^^^^^^^^^^^
- WRF-Hydro source code:
- https://github.com/NCAR/wrf_hydro_nwm_public.git
- ``git clone`` into directory where you will be running this case
- An official WRF-Hydro example test case:
- Download from: https://ral.ucar.edu/projects/wrf_hydro/testcases
- or from release assets at: https://github.com/NCAR/wrf_hydro_nwm_public/releases
- All system libraries needed by the WRF-Hydro modeling system can be found
in the :ref:`build instructions <section-2.8>`.
Step-by-step walkthrough
^^^^^^^^^^^^^^^^^^^^^^^^
**Directory structure setup**:
We will organize all files and folders under a common top-level
directory to simplify commands in this walkthrough. All paths mentioned
in this walkthrough will be relative to this top-level directory. For
example, :file:`/home/user/project_directory/example_case/` will be referred to
as :file:`example_case/`.
#. Open a terminal window
#. Create a top-level directory that will hold all subdirectories and
files used for this walkthrough. Hereafter referred to as the
‘project directory’.
#. Copy the uncompressed WRF-Hydro source code into the project
directory created in step 2.
#. Copy the example case directory into
the project directory as well.
#. An example of your project directory structure using the Croton, NY
example test case would look like the following:
.. code-block:: console
project_directory/
├──wrf_hydro_nwm_public/
| ├──src/
|
├──example_case/
├──Gridded_no_lakes/
├──Gridded/
├──NWM/
├──Reach/
├──ReachLakes/
├──FORCING/
├──supplemental/
├──Readme.txt
Compiling the Code
^^^^^^^^^^^^^^^^^^
If you have not built WRF-Hydro before on your current system, please follow the
instructions in the :ref:`build instructions <section-2.8>` to ensure you have all
the necessary library dependencies available. If you have already built WRF-Hydro,
you can skip to step "CMake Build", repeated here:
.. code-block:: bash
$ cd project_directory/wrf_hydro_nwm_public # project_directory/ from above
$ mkdir build
$ cd build
$ cmake -DHYDRO_D=1 [-DWRF_HYDRO_NUDGING=1] .. # include -DWRF_HYDRO_NUDGING=1 if you want to use the NWM test case
$ make -j 4
The executables, namelists and tables will be created in the ``build/Run`` directory.
Running a WRF-Hydro Simulation
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
In this section we will use our compiled WRF-Hydro model and an
example test case to run a WRF-Hydro simulation. This walkthrough is
using the Croton, NY example test case. After extracting the Croton tarball
details on the domain and time period of the simulation are provided in the
:file:`example_case/Readme.txt` file.
1. First we need to copy the TBL and executable files in the
:file:`wrf_hydro_nwm_public*/src/build/Run`
directory to the directory
containing the domain and forcing files. For the WRF-Hydro Gridded
configuration, these files are located in the directory
:file:`example_case/Gridded`.
Copy the :file:`*.TBL` files to the example configuration directory:
| *(from your project directory)*
| :code:`cp wrf_hydro_nwm_public*/build/Run/\*.TBL example_case/Gridded`
Copy the :file:`wrf_hydro` file:
:code:`cp wrf_hydro_nwm_public*/build/Run/wrf_hydro example_case/Gridded`
.. note:: There are other configuration subfolders with the names such as :file:`Gridded`, :file:`nwm`, and
:file:`Reach`. These folders contain prepared files for other configurations of WRF-Hydro. They are found
under the :file:`src/template/` directory. Information
regarding physics options and routing configurations can be found in the main body of the *WRF-Hydro*
v\ |version_short| *Technical Description*. Also, note that there is only one :file:`FORCING/` directory.
The same forcing data can be used for all configurations.
2. Next, we need to link our forcing data to the :file:`Gridded/` directory.
From the :file:`example_case/Gridded directory`, create a symlink:
:code:`ln -s ../FORCING .`
Your project directory should now have the following
directory structure and files:
.. code-block:: console
project_directory/
├──wrf_hydro_nwm_public/
| ├──src/
| ├──build/
|
├──example_case/
├──Gridded/
├──FORCING/
├──DOMAIN/
├──RESTART/
├──referenceSim/
├──CHANPARM.TBL
├──GENPARM.TBL
├──HYDRO.TBL
├──MPTABLE.TBL
├──SOILPARM.TBL
├──hydro.namelist
├──namelist.hydrodas
├──wrf_hydro
3. Now we will run the simulation. Note that there are many options
and filepaths that need to be set in the two namelist files
:file:`hydro.namelist` and :file:`namelist.hrldas`. However, for this
walkthrough these files have been prepared for you.
Before running the model, ensure you are in the :file:`example_case/Gridded`
directory.
We will now run the model using :command:`mpirun` with 2 cores. This command may
differ depending on your system configuration, but here is an example
of what this might look like:
.. code-block:: bash
mpirun -np 2 ./wrf_hydro
4. If your simulation ran successfully, there should now be a large
number of output files. Descriptions of the output files and their contents
can be found in :ref:`Appendix A19 <section-a19>`. There are also two
important files for determining the success or failure of the run,
:file:`diag_hydro.00000` and :file:`diag_hydro.00001`. These :file:`diag_hydro`
files contain logs and diagnostics on the simulation run, and one file is
produced per core used in the run. Since we ran using 2 cores, we
have 2 :file:`diag_hydro` files.
You can check that your simulation ran successfully by examining the
last line of the diag files, which should read:
.. code-block:: console
The model finished successfully........
If this line is not present, the simulation did not finish
successfully.
5. You can check the validity of your simulation results by comparing
the restart files produced during your model run with the restart
files included in the :file:`example_case/Gridded/referenceSim` directory.
The restart files contain all the model states and thus provide a
simple means for testing if two simulations produced the same
results.
.. note:: Our current example test cases have only been run and tested with
the Noah-MP land surface model. For information regarding running
WRF-Hydro with Noah please see :ref:`Appendix A3 <section-a3>`.
.. _section-a2:
A2. Coupled WRF | WRF-Hydro Test Case User Guide
------------------------------------------------
Purpose
^^^^^^^
This test case for the coupled WRF | WRF-Hydro modeling system is meant to
orient you to running the modeling system using prepared geographical inputs
for WRF-Hydro and sample initial and boundary conditions for WRF. Note that
some of the initial and boundary conditions for this test case have been
modified in order to produce a hydrologic response over a very limited spatial
domain. Results generated from this test case should not be interpreted as a
real simulation and users should consult the WRF and WPS documentation for
best practices with respect to domain and model configuration. The purpose of
this test case is to provide baseline instructions and a computationally
tractable test case for users to familiarize themselves with the modeling
system and help ensure the modeling system is running properly on their
systems. Please see the README.txt file provided with the test case for a more
detailed description of the contents.
For a detailed technical description of WRF-Hydro and instructions on how to run WRF |
WRF-Hydro in coupled mode see the `WRF-Hydro Technical Description
documentation <https://wrf-hydro.readthedocs.io/>`_ and How
to Run WRF-Hydro V5 in Coupled Mode user guide available from
https://ral.ucar.edu/projects/wrf_hydro.
For further information regarding the WRF model and the WRF Preprocessing System (WPS)
see the WRF Users’ Guide located here:
http://www2.mmm.ucar.edu/wrf/users/docs/user_guide_v4/contents.html
Requirements
^^^^^^^^^^^^
- WRF-Hydro source code: https://github.com/NCAR/wrf_hydro_nwm_public.git
- Git clone into directory where you will be running this case
- Download WRF and WPS source code:
- WRF: https://github.com/wrf-model/WRF
- WPS: https://github.com/wrf-model/WPS
- WPS geographic data
http://www2.mmm.ucar.edu/wrf/src/wps_files/geog_high_res_mandatory.tar.gz
- An official WRF-Hydro coupled test case:
https://ral.ucar.edu/projects/wrf_hydro/testcases
- All system libraries needed by the WRF-Hydro modelling system can be found
in the How To Build & Run WRF-Hydro V5 in Standalone Mode user guide and the
FAQ web page located at https://ral.ucar.edu/projects/wrf_hydro
- All system libraries needed by the WRF modeling system and WPS can be found
in the WRF User’s Guide located here:
http://www2.mmm.ucar.edu/wrf/users/docs/user_guide_v4/contents.html
Step-by-step walkthrough
^^^^^^^^^^^^^^^^^^^^^^^^
**Directory structure setup**:
We will organize all files and folders under a common top-level directory to
simplify commands in this walkthrough. All paths mentioned in this walkthrough
will be relative to this top-level directory. For example,
/home/user/project_directory/example_case_coupled/ will be referred to as
example_case_coupled/. The following steps walk you through how to setup your
project directory.
1. Open a terminal window
2. Create a top-level directory that will hold all subdirectories and files
used for this walkthrough. Hereafter referred to as the ‘project
directory’.
3. Git clone WRF-Hydro, WRF, and WPS into project directory created in step 2.
Here are examples of possible commands to use, modify as needed:
.. code-block:: console
git clone https://github.com/NCAR/wrf_hydro_nwm_public.git
git clone --recurse-submodule --branch v4.7.1 https://github.com/wrf-model/WRF.git
git clone --branch v4.6.0 https://github.com/wrf-model/WPS.git
4. Download and extract testcase and geographic data.
.. code-block:: console
# download and extract files
wget https://github.com/NCAR/wrf_hydro_nwm_public/releases/download/v5.4.0/front_range_CO_example_testcase_coupled.tar.gz
tar zxf front_range_CO_example_testcase_coupled.tar.gz
# Note this geog data is currently broken, Derecho users should skip this
# step and in namelists.wps set
# geog_data_path = '/glade/work/wrfhelp/WPS_GEOG/',
wget http://www2.mmm.ucar.edu/wrf/src/wps_files/geog_high_res_mandatory.tar.gz
tar zxf geog_high_res_mandatory.tar.gz
5. Move the newly extracted geographic data into the WPS directory.
.. code-block:: console
# create directory and move geopgraphic data
mkdir -p run/WPS
mv WPS_GEOG/ run/WPS/geog
6. Your project directory structure will look like the following:
.. code-block:: console
project_directory/
├──run/
│ ├──WPS/
│ └──WRF/
├──wrf_hydro_nwm_public*/
│ └──src/
├──WRF/
├──WPS/
│ ├──geogrid/
│ ├──metgrid/
│ ├──ungrib/
│ └──geog/
└──example_case_coupled/
├──WRF_FORCING/
└──DOMAIN/
Compiling the Code
^^^^^^^^^^^^^^^^^^
This section will walk you through compiling the coupled WRF | WRF-Hydro
modeling system and the WRF Preprocessing System (WPS) utilities
**Compiling the coupled WRF | WRF-Hydro modeling system**
1. Navigate to the WRF source code directory at WRF
.. code-block:: console
cd WRF
2. Remove the old WRF-Hydro source code contained within this directory and replace it
with the updated version you just downloaded
.. code-block:: console
rm -r hydro
cp -r ../wrf_hydro*/src hydro
3. Load appropriate modules on Derecho, the following is an example for GNU compilers.
.. code-block:: console
module purge
module load ncarenv gcc ncarcompilers cray-mpich craype netcdf cmake
4. Configure and compile WRF
.. warning::
**On Derecho, use the legacy configure method. CMake has known issues with the coupled case.**
**Use the legacy configure method for building both WRF and WPS**
4a. Configure and compile WRF: CMake
.. code-block:: console
# CMake option to turn on WRF-Hydro nudging `-DWRF_HYDRO_NUDGING=1`
./configure_new -x -p gfortran/gcc -- -DWRF_CORE=ARW -DWRF_NESTING=BASIC -DENABLE_HYDRO=ON -DWRF_CASE=EM_REAL
./compile_new -j4
4b. Configure and compile WRF: Old Method
.. code-block:: console
# Load environement variables from WRF directory
source hydro/template/setEnvar.sh
# Export paths necessary for WRF to find the right libraries on Derecho
export Jasper_ROOT=/glade/u/home/wrfhelp/UNGRIB_LIBRARIES/
# Configure WRF
# On Derecho,
# For GNU (dmpar) and basic nesting
# 1. enter `printf '34\n1\n' | ./configure` or option 34 and 1
# For IFX (dmpar) and basic nesting
# 1. enter `printf '78\n1\n' | ./configure` or option 78 and 1
# 2. Login node does not have enough memory to compile succesfully with ifx.
# User can use interactive node with extra memory, mem=50GB works
./configure
./compile -j 4 em_real &> compile.log
# the binaries will be in the run directory
**Compiling the WRF Preprocessing System (WPS)**
1. Navigate to the WPS source code directory at WPS
2. Configure and compile the WPS. Note that grib2 data is used in the example
and the Jasper environmental variables need to be set.
2a. Configure and compile WPS: CMake
Note: CMakeLists.txt line 164 in the top directory of WPS will need to be changed to
.. code-block:: console
add_compile_definitions(
${WPS_DEFINITIONS_LIST}
${WPS_UNDEFINITIONS_LIST}
USE_JPEG2000
USE_PNG
)
Now configure with
.. code-block:: console
./configure_new -x -p gfortran -- -DBUILD_EXTERNALS=ON
./compile_new -j 4 &> compile.log
2b. Configure and compile WPS: old Method
.. code-block:: console
# Select option 2 and --build-grib2-libs. Option 2 is Linux x86_64, gfortran
# (dmpar) or select th dmpar option for compiler of choice
# The user can also enter printf '2\n' | ./configure --build-grib2-libs to pass the arguments
export Jasper_ROOT=/glade/u/home/wrfhelp/UNGRIB_LIBRARIES/
./configure --build-grib2-libs
./compile geogrid -j 4
./compile ungrib -j 4
./compile metgrid -j 4
check the compile log for errors.
Running the WRF Preprocessing System (WPS)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. figure:: media/wps_program_flow.png
:align: center
Image from `WPS Userguide <https://www2.mmm.ucar.edu/wrf/users/wrf_users_guide/build/html/wps.html>`_.
In this section we will use the compiled WRF Preprocessing System (WPS)
utilities along with a namelist file ( namelist.wps ) and meteorological
forcing data from the coupled test case to generate geogrid and metgrid files
for the two model domains (note that the inner nest, or domain 2, is where
WRF-Hydro will run).
**Running the geogrid utility**
1. Create a run directory for WPS within your project directory
.. code-block:: console
mkdir -p run/WPS
cd run/WPS
2. Now copy the required files for the WPS geogrid utility into your ``run/WPS``
directory
.. code-block:: console
cp ../../WPS/geogrid/GEOGRID.TBL .
cp ../../example_case_coupled/namelist.wps .
# for new CMake install method
cp ../../WPS/install/bin/geogrid.exe .
# or if the older method was used to build
cp ../../WPS/geogrid.exe .
Edit the paths within this namelist as appropriate for your system
3. Edit the path to geographic data in your ``namelist.wps`` file so that
``geog_data_path`` points to the correct path.
.. code-block:: console
geog_data_path = '/glade/work/wrfhelp/WPS_GEOG/',
# or geog, note though this is currently not working
geog_data_path = 'geog',
4. Run the geogrid utility
.. code-block:: console
mpiexec -np 2 ./geogrid.exe &> geogrid.log
**Running the ungrib utility**
The ungrib utility takes meteorological forcing data to be used for simulation
initial and boundary conditions and converts the files to an intermediate file
format used by the metgrid utility. Make sure modules are loaded from previous
steps.
1. Now copy the additional required files for the WPS ungrib utility into your
``run/WPS`` directory
.. code-block:: console
cd run/WPS
cp ../../WPS/link_grib.csh .
# for new cmake build method
cp ../../WPS/install/bin/ungrib.exe .
# or if the older method was used to build
cp ../../WPS/ungrib.exe .
2. Next copy over the necessary variable table for your forcing data
.. code-block:: console
cp ../../WPS/ungrib/Variable_Tables/Vtable.NAM Vtable
3. Then link your forcing data from the test case to the run directory (this
script will also rename the files to those expected for the ungrib utility)
.. code-block:: console
./link_grib.csh ../../example_case_coupled/WRF_FORCING/*
4. Next run the ungrib utility
.. code-block:: console
mpiexec -np 2 ./ungrib.exe &> ungrib.log
**Running the metgrid utility**
The metgrid utility does some interpolation of meteorological forcing data to
the model domain creating metgrid files to be used as input to the WRF real
utility.
1. Now copy additional the required files for the WPS metgrid utility into
your ``run/WPS`` directory
.. code-block:: console
cp ../../WPS/metgrid/METGRID.TBL .
# for newer CMake build method
cp ../../WPS/install/bin/metgrid.exe .
# or if the older method was used to build
cp ../../WPS/metgrid.exe .
2. Next run the metgrid utility
.. code-block:: console
mpiexec -np 2 ./metgrid.exe &> metgrid.log
Running a coupled WRF | WRF-Hydro simulation
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
In this section we will use our compiled coupled WRF | WRF-Hydro model to run
a simulation. This walkthrough uses the Front Range coupled example test
case. Details on the domain and time period of the simulation are provided in
the example_case_coupled/README.txt file.
**Setting up your run directory**
First we will create a run directory and copy over or link the required files.
1. Create a run directory for WRF by copying over the run directory from where
it was compiled
.. code-block:: console
cd project_directory
# run directory should exist at this point
cp -RL WRF/run run/WRF
cd run/WRF
2. Copy over parameter tables for WRF-Hydro
.. code-block:: console
cp ../../WRF/hydro/template/HYDRO/*TBL .
# cp ../../WRF/hydro/template/NoahMP/run/*.TBL .
# cp ../../WRF/install/test/em_real/*.TBL .
3. Copy over the namelists for real / wrf (namelist.input) and the hydro components
(hydro.namelist) from the example case
.. code-block:: console
cp ../../example_case_coupled/namelist.input .
cp ../../example_case_coupled/hydro.namelist .
cp ../../WRF/hydro/template/NoahMP/namelist.hrldas .
cp -r ../../example_case_coupled/DOMAIN/ .
cp ../../WRF/run/CAMtr_volume_mixing_ratio .
cp ../../WRF/phys/noahmp/parameters/MPTABLE.TBL .
4. Link the geogrid and metgrid files we just generated from the WPS utilities
.. code-block:: console
ln -sf ../WPS/met_em* .
ln -sf ../WPS/geo_em* .
ln -sf ../../WRF/run/RRTM_DATA .
4. Copy executable files
.. code-block:: console
# location for the CMake build, older method will have these files in the WRF/run directory
cp ../../WRF/install/bin/real real.exe
cp ../../WRF/install/bin/wrf wrf.exe
**Running the real utility**
The WRF real utility creates the wrfinput* and wrfbdy* initial and boundary
condition files to be used as input for the coupled simulation.
1. Execute real using the proper syntax for your system (example below)
and pipe the output to a log file.
.. code-block:: console
mpirun -np 2 ./real.exe &> real.log
2. Next review the rsl.out.* and rsl.error.* files for possible errors and
check to make sure the wrfinput* and wrfbdy* files have been created.
.. code-block:: console
tail rsl.error.* -n 1
**Running the coupled model**
Now we will run the coupled model (all included in the wrf binary) using
the wrfinput* and wrfbdy* files as initial and boundary conditions and the
model physics and other options selected in the namelist.input and
hydro.namelist files.
1. Execute wrf using the proper syntax for your system (example below) and
pipe the output to a log file.
.. code-block:: console
mpirun -np 2 ./wrf.exe &> wrf.log
2. If your simulation ran successfully, there should now be a large number of
output files. Descriptions of the output files can be found in the
WRF-Hydro V5 Technical Description at (
https://ral.ucar.edu/projects/wrf_hydro ) and the WRF User’s Guide found
here ( http://www2.mmm.ucar.edu/wrf/users/docs/user_guide_v4/contents.html
). You will also want to review the rsl.out.* and rsl.error.* files for
possible error messages.
.. _section-a3:
A3. Exceptions for Running WRF-Hydro with the Noah LSM
------------------------------------------------------
Support for the Noah Land Surface Model (LSM) within WRF-Hydro is
currently frozen at Noah version 3.6, development to use the
`refactored NoahMP <https://github.com/NCAR/noahmp>`_ as a submodule
is under way. Since the Noah LSM is not under
active development by the community, WRF-Hydro is continuing to support
Noah in deprecated mode only. Some new model features, such as the
improved output routines, have not been setup to be backward compatible
with Noah. Noah users should follow the guidelines below for adapting
the WRF-Hydro workflow to work with Noah:
- **LSM initialization:** The simple wrfinput.nc initialization file
created by the create_Wrfinput.R script does not currently include
all of the fields required by the Noah LSM. Therefore, Noah users
should use the WRF real utility to create a wrfinput_d0x file.
Refer to the WRF documentation and user guides for information on how
to do this.
- **Time-varying vegetation specifications:** While the Noah LSM will
be properly initialized with green vegetation fraction from the
wrfinput file, there is currently no automated method to update this
field over time (e.g., seasonally based on climatology). Therefore,
Noah users will need to provide these time-varying fields in the
model input forcing files (e.g., LDASIN).
- **Spatially varying parameters**: Spatially varying soil and
vegetation parameters (e.g., soil_properties.nc) are not supported in
Noah.
- **Model outputs:** The updated output routines have not been adapted
to work with Noah. Therefore, Noah users should always use
io_form_outputs = 0 to activate the deprecated output routines.
Scale/offset and compression options, CF compliance, augmented
spatial metadata, etc. are not available in this deprecated mode.
.. _section-a4:
A4. Noah `namelist.hrldas` File with Description of Options
-----------------------------------------------------------
Below is an annotated namelist.hrldas file for running with the Noah
land surface model. Notes and descriptions are indicated with <--
.. code-block:: fortran
&NOAHLSM_OFFLINE
HRLDAS_CONSTANTS_FILE = "./DOMAIN/wrfinput_d01" !!<-- Path to wrfinput file containing initialization data
! for the LSM. This is required even for a warm start
! where a restart file is provided.
INDIR = "./FORCING" !<-- Path to atmospheric forcing data directory.
OUTDIR = "./" !<-- Generally leave this as-is (output goes to base run directory);
! redirected output only applies to LSM output files and can cause
! issues when running coupled to WRF-Hydro.
START_YEAR = 2013 !<-- Simulation start year
START_MONTH = 09 !<-- Simulation start month
START_DAY = 01 !<-- Simulation start day
START_HOUR = 00 !<-- Simulation start hour
START_MIN = 00 !<-- Simulation start min
RESTART_FILENAME_REQUESTED = "RESTART.2013090100_DOMAIN1" !<-- Path to LSM restart file if using; this contains a
! "warm" model state from a previous model run.
! Comment out if not a restart simulation.
! Specification of simulation length in days hours
KHOUR = 24 !<-- Number of hours for simulation;
! Timesteps in units of seconds
FORCING_TIMESTEP = 3600 !<-- Timestep for forcing input data (in seconds)
NOAH_TIMESTEP = 3600 !<-- Timestep the LSM to cycle (in seconds)
OUTPUT_TIMESTEP = 86400 !<-- Timestep for LSM outputs, LDASOUT (in seconds)
! Land surface model restart file write frequency
RESTART_FREQUENCY_HOURS = 6 !<-- Timestep for LSM restart files to be generated (in hours). A value of -99999
! will simply output restarts on the start of each month, useful for longer
! model runs. Restart files are generally quite large, so be cognizant of
! storage space and runtime impacts when specifying.
! Split output after split_output_count output times.
SPLIT_OUTPUT_COUNT = 1 !<-- Number of timesteps to put in a single output file. This option
! must be 1 for NWM output configurations.
! Soil layer specification
NSOIL=4 !<-- Number of soil layers
ZSOIL(1) = 0.10 !<-- Thickness of top soil layer (m)
ZSOIL(2) = 0.30 !<-- Thickness of second soil layer (m)
ZSOIL(3) = 0.60 !<-- Thickness of third soil layer (m)
ZSOIL(4) = 1.00 !<-- Thickness of bottom soil layer (m)
! Forcing data measurement heights
ZLVL = 2.0 !<-- Height of input temperature and humidity measurement/estimate
ZLVL_WIND = 10.0 !<-- Height of input wind speed measurement/estimate
IZ0TLND = 0 !<-- Switch to control land thermal roughness length. Option 0 is the default,
! non-vegetation dependent value and option 1 introduces a vegetation dependence.
SFCDIF_OPTION = 0 !<-- Option to use the newer, option 1, or older,
option 0, SFCDIF routine. The default value is 0.
UPDATE_SNOW_FROM_FORCING = .FALSE. !<-- Option to activate or deactivate updating the snowcover
! fields from available analyses. The default option is true.
! -------- Section: Select atmospheric forcing input file format, FORC_TYP -------- !
! Specification of forcing data: 1=HRLDAS-hr format, 2=HRLDAS-min format,
! 3=WRF,4=Idealized, 5=Ideal w/ Spec.Precip.,
! 6=HRLDAS-hrly fomat w/ Spec. Precip, 7=WRF w/ Spec. Precip
FORC_TYP = 3
/
.. _section-a5:
A5. Noah-MP `namelist.hrldas` File with Description of Options
--------------------------------------------------------------
Below is an annotated namelist.hrldas file for running with the Noah-MP
land surface model. Do note that the file says ``&NOAHLSM_OFFLINE``
however it is for use with the Noah-MP LSM. This namelist statement
happens to be hardcoded and thus not easily changed. Notes and
descriptions are indicated with <-- after sections
being described. See the official HRLDAS namelist description here:
https://github.com/NCAR/hrldas-release/blob/release/HRLDAS/run/README.namelist
.. code-block:: fortran
&NOAHLSM_OFFLINE
HRLDAS_SETUP_FILE = "./DOMAIN/wrfinput_d01" !<-- Path to wrfinput file containing initialization
! data for the LSM. This is required even for a warm
! start where a restart file is provided.
INDIR = "./FORCING" !<-- Path to atmospheric forcing data directory.
SPATIAL_FILENAME = "./DOMAIN/soil_properties.nc" !<-- Path to optional 2d/3d soil and vegetation
! parameter file. If you are using this option,
! you must also use a binary compiled with
! SPATIAL_SOIL=1. If using the traditional
! parameter lookup tables, compile with
! SPATIAL_SOIL=0 and comment out this option.
OUTDIR = "./" !<-- Generally leave this as-is (output goes to base run directory); redirected
! output only applies to LSM output files
! and can cause issues when running coupled to WRF-Hydro.
START_YEAR = 2013 !<-- Simulation start year
START_MONTH = 09 !<-- Simulation start month
START_DAY = 12 !<-- Simulation start day
START_HOUR = 04 !<-- Simulation start hour
START_MIN = 00 !<-- Simulation start min
RESTART_FILENAME_REQUESTED = "RESTART.2013091204_DOMAIN1" !<-- Path to LSM restart file if using;
! this contains a "warm" model state
! from a previous model run. Comment out
! if not a restart simulation.
! Specification of simulation length in days OR hours
KHOUR = 24 !<-- Number of hours for simulation
! -------- Following Section: Noah-MP physics options -------- !
! Physics options (see the documentation for details)
DYNAMIC_VEG_OPTION = 4 !<-- options for dynamic vegetation:
! 1 -> off (use table LAI; use FVEG = SHDFAC from input)
! 2 -> on (together with OPT_CRS = 1)
! 3 -> off (use table LAI; calculate FVEG)
! **4 -> off (use table LAI; use maximum vegetation fraction)
! **5 -> on (use maximum vegetation fraction)
! 6 -> on (use FVEG = SHDFAC from input)
! 7 -> off (use input LAI; use FVEG = SHDFAC from input)
! 8 -> off (use input LAI; calculate FVEG)
! 9 -> off (use input LAI; use maximum vegetation fraction)
CANOPY_STOMATAL_RESISTANCE_OPTION = 1 !<-- options for canopy stomatal resistance
! **1 -> Ball-Berry
! 2 -> Jarvis
BTR_OPTION = 1 !<-- options for soil moisture factor for stomatal resistance
! **1 -> Noah (soil moisture)
! 2 -> CLM (matric potential)
! 3 -> SSiB (matric potential)
RUNOFF_OPTION = 3 !<-- options for runoff and groundwater
! 1 -> TOPMODEL with groundwater (Niu et al. 2007 JGR)
! 2 -> TOPMODEL with an equilibrium water table (Niu et al. 2005 JGR)
! **3 -> original surface and subsurface runoff (free drainage)
! 4 -> BATS surface and subsurface runoff (free drainage)
! 5 -> Miguez-Macho&Fan groundwater scheme (Miguez-Macho et al. 2007 JGR;
! Fan et al. 2007 JGR) [NOT YET SUPPORTED WITH WRF-HYDRO]
! 7 -> Xinanjiang runoff scheme
SURFACE_DRAG_OPTION = 1 !<-- options for surface layer drag coeff (CH & CM)
! **1 -> M-O
! 2 -> original Noah (Chen97)
FROZEN_SOIL_OPTION = 1 !<-- options for frozen soil permeability
! **1 -> linear effects, more permeable (Niu and Yang, 2006, JHM)
! 2 -> nonlinear effects, less permeable (old)
SUPERCOOLED_WATER_OPTION = 1 !<-- options for supercooled liquid water (or ice fraction)
! **1 -> no iteration (Niu and Yang, 2006 JHM)
! 2 -> Koren's iteration
RADIATIVE_TRANSFER_OPTION = 3 !<-- options for radiation transfer
! 1 -> modified two-stream (gap = F(solar angle, 3D structure ...)<1-FVEG)
! 2 -> two-stream applied to grid-cell (gap = 0)
! **3 -> two-stream applied to vegetated fraction (gap=1-FVEG)
SNOW_ALBEDO_OPTION = 1 !<-- options for ground snow surface albedo
! **1 -> BATS
! 2 -> CLASS
PCP_PARTITION_OPTION = 1 !<-- options for partitioning precipitation into rainfall & snowfall
! **1 -> Jordan (1991)
! 2 -> BATS: when SFCTMP<TFRZ+2.2
! 3 -> SFCTMP < TFRZ
! 4 -> Use WRF microphysics output
TBOT_OPTION = 2 !<-- options for lower boundary condition of soil temperature
! 1 -> zero heat flux from bottom (ZBOT and TBOT not used)
! **2 -> TBOT at ZBOT (8m) read from a file (original Noah)
TEMP_TIME_SCHEME_OPTION = 3 !<-- options for snow/soil temperature time scheme (only layer 1)
! 1 -> semi-implicit; flux top boundary condition
! 2 -> full implicit (original Noah); temperature top boundary condition
! **3 -> same as 1, but FSNO for TS calculation (generally improves snow; v3.7)
GLACIER_OPTION = 2 !<-- options for glacier treatment
! 1 -> include phase change of ice
! **2 -> ice treatment more like original Noah (slab)
SURFACE_RESISTANCE_OPTION = 4 !<-- options for surface resistent to evaporation/sublimation
! 1 -> Sakaguchi and Zeng, 2009
! 2 -> Sellers (1992)
! 3 -> adjusted Sellers to decrease RSURF for wet soil
! **4 -> option 1 for non-snow; rsurf = rsurf_snow for snow (set in MPTABLE); AD v3.8
IMPERV_OPTION = 9 !<-- options for impervious adjustment for surface runoff partitioning
! 0 -> none
! 1 -> adjust based on impervious fraction
! 2 -> adjust based on effective impervious fraction from Alley & Veenhuis
! **9 -> original formulation (varies based on runoff option)
! Timesteps in units of seconds
FORCING_TIMESTEP = 3600 !<-- Timestep for forcing input data (in seconds)
NOAH_TIMESTEP = 3600 !<-- Timestep the LSM to cycle (in seconds)
OUTPUT_TIMESTEP = 86400 !<-- Timestep for LSM outputs, LDASOUT (in seconds)
! Land surface model restart file write frequency
RESTART_FREQUENCY_HOURS = 2 !<-- Timestep for LSM restart files to be generated (in hours).
! A value of -99999 will simply output restarts on the start of
! each month, useful for longer model runs. Restart files are
! generally quite large, so be cognizant of storage space and
! runtime impacts when specifying.
! Split output after split_output_count output times.
SPLIT_OUTPUT_COUNT = 1 !<-- Number of timesteps to put in a single
output file. This option must be 1 for NWM output configurations.
! Soil layer specification
NSOIL=4 !<-- Number of soil layers
soil_thick_input(1) = 0.10 !<-- Thickness of top soil layer (m)
soil_thick_input(2) = 0.30 !<-- Thickness of second soil layer (m)
soil_thick_input(3) = 0.60 !<-- Thickness of third soil layer (m)
soil_thick_input(4) = 1.00 !<-- Thickness of bottom soil layer (m)
! Forcing data measurement height for winds, temp, humidity
ZLVL = 10.0 !<-- Height of input wind speed
! -------- Following Section: Restart IO file formats -------- !
! Options to specify whether restart files (both read in and output)
! should be in binary or netCDF format. Generally recommend using
! netCDF format (option 0) for both.
! Restart file format options
rst_bi_in = 0 !<-- 0: use netcdf input restart file 1: use parallel io for reading multiple
! restart files (1 per core)
rst_bi_out = 0 !<-- 0: use netcdf output restart file 1: use parallel io for outputting multiple
! restart files (1 per core)
! -------- Optional forcing variable names -------- !
! These can be left out of the namelist and will default to the values below,
! so only need to be specified if using alternative names.
! Forcing input variable names
forcing_name_T = "T2D" !<-- variable name for air temperature
forcing_name_Q = "Q2D" !<-- variable name for humidity
forcing_name_U = "U2D" !<-- variable name for u-component of wind speed
forcing_name_V = "V2D" !<-- variable name for v-component of wind speed
forcing_name_P = "PSFC" !<-- variable name for surface pressure
forcing_name_LW = "LWDOWN" !<-- variable name for downward longwave radiation
forcing_name_SW = "SWDOWN" !<-- variable name for downward shortwave radiation
forcing_name_PR = "RAINRATE" !<-- variable name for precipitation rate
! Optional way to supply liquid or snow fraction of precipitation, e.g., if provided
! by an atmospheric model. Otherwise the land model will estimate this.
! NOTE: You can provide either frozen fraction or liquid fraction (no need to provide both).
forcing_name_SN = "" !<-- variable name for frozen fraction of precipitation
forcing_name_LF = "LQFRAC" !<-- variable name for liquid fraction of precipitation
/
&WRF_HYDRO_OFFLINE
! Specification of forcing data: 1=HRLDAS-hr format, 2=HRLDAS-min format,
! 3=WRF, 4=Idealized, 5=Ideal w/ Spec.Precip.,
! 6=HRLDAS-hrly fomat w/ Spec. Precip, 7=WRF w/ Spec.Precip
FORC_TYP = 1
/
! -------- Optional settings for the Crocus snow model -------- !
! These options can be excluded if not using the Crocus snow/glacier model.
&CROCUS_nlist
crocus_opt = 0 !<-- 0 means the Crocus model is off (default)
! 1 means the Crocus model is on
act_lev = 40 !<-- Specify the number of layers the Crocus snow model will resolve.
! More layers will require more memory and may slow performance.
! 20-40 normal range, 1-50 acceptable
/
.. _section-a6:
A6. WRF-Hydro `hydro.namelist` File with Description of Options
---------------------------------------------------------------
Below is an annotated hydro.namelist file. Annotations follow what is
being described, indicated with <-- and blue text. Note that
annotations describing options are meant to accompany the commented
description in the namelist which precedes the option.
.. _hydro-namelist:
.. code-block:: fortran
&HYDRO_nlist
!!!! --------------- SYSTEM COUPLING -------------- !!!!
! Specify what is being coupled: 1=HRLDAS (offline Noah-LSM),
! 2=WRF, 3=NASA/LIS, 4=CLM
sys_cpl = 1 !<-- For offline runs, including Noah and Noah-MP, this will be option 1.
!!!! ----------- MODEL INPUT DATA FILES ----------- !!!!
! Specify land surface model gridded input data file (e.g.: "geo_em.d01.nc")
GEO_STATIC_FLNM = "./DOMAIN/geo_em.d01.nc" !<-- Path to the “GEOGRID” file which contains base
! information on the LSM grid (this file is generally
! created via WPS in the model preprocessing steps).
! Specify the high-resolution routing terrain input data file (e.g.: "Fulldom_hires.nc")
GEO_FINEGRID_FLNM = "./DOMAIN/Fulldom_hires.nc" !<-- Path to the “routing stack” which contains
! base information on the high-resolution routing
! grid. This file is generally created via the
! GIS pre-processing tools.
! Specify the spatial hydro parameters file (e.g.: "hydro2dtbl.nc")
! If you specify a filename and the file does not exist, it will
! be created for you.
HYDROTBL_F = "./DOMAIN/hydro2dtbl.nc" !<-- Path to the 2d hydro parameters file. If this file
! does not exist, it will be created for you based on
! HYDRO.TBL and the soil and land class grids found in the
! GEOGRID netCDF file
! Specify spatial metadata file for land surface grid. (e.g.: "GEOGRID_LDASOUT_Spatial_Metadata.nc")
LAND_SPATIAL_META_FLNM = "./DOMAIN/GEOGRID_LDASOUT_Spatial_Metadata.nc" !<-- Path to the geospatial
! metadata file for your domain. This file is required
! if using any of the io_form_outputs options (i.e.,
! io_form_outputs > 0). This file is generally created
! via the GIS pre-processing tools.
! Specify the name of the restart file if starting from restart...comment out with '!' if not...
RESTART_FILE = 'HYDRO_RST.2013-09-12_04:00_DOMAIN3' !<-- Path to hydro restart file; this contains
! a "warm" model state from a previous model run.
!!!! ------------- MODEL SETUP OPTIONS ------------ !!!!
! Specify the domain or nest number identifier...(integer)
IGRID = 1 !<-- Domain ID number. This comes from the WRF coupling framework and is intended to
! specify which nested domain you are running. For standalone runs, this is not relevant
! HOWEVER this ID must match the number specified after DOMAIN in your forcing file names
! (e.g., the "1" in "2013091200.LDASIN_DOMAIN1").
! Specify the restart file write frequency in minutes
! A value of -99999 will output restarts on the first day of the month only.
rst_dt = 120 !<-- Specify how often hydro restart files should be generated, in minutes. This should
! generally track your LSM restart file frequency (as specified in namelist.hrldas).
! A value of -99999 will simply output restarts on the start of each month, useful for
! longer model runs. Hydro restart files are generally quite large, so be cognizant of
! storage space and runtime impacts.
! Reset the LSM soil states from the high-res routing restart file (1=overwrite, 0=no overwrite)
! NOTE: Only turn this option on if overland or subsurface routing is active!
rst_typ = 1 !<-- Specify whether or not to use the soil conditions (soil moisture and ponded water)
! from the high-resolution hydro restart file, if "warm" starting the model with a
! provided HYDRO_RST file. If this option is 0, the LSM restart states will be used
! instead. IMPORTANT: If you are NOT running with terrain routing turned on, do not set
! this option to 1 as it may bring in invalid values.
! Restart file format control !<-- Options to whether restart files (input and output separately)
! should be in binary or netCDF format. Generally recommend to use
! netCDF format (option 0) for both.
rst_bi_in = 0 !0: use netCDF input restart file (default) 1: use parallel io for reading multiple
! restart files, 1 per core
rst_bi_out = 0 !0: use netCDF output restart file (default) 1: use parallel io for outputting multiple
! restart files, 1 per core
! Restart switch to set restart accumulation variables to 0 (0=no reset, 1=yes reset to 0.0)
RSTRT_SWC = 0 !<-- Specify whether or not to reset any accumulated output variables to 0 (option 1)
! or to continue accumulating from the values in the hydro restart file (option 0).
! Note that this only applies to the hydrologic model outputs; the LSM outputs will
! always continue to accumulate from the LSM restart file.
! Specify baseflow/bucket model initialization (0=cold start from table, 1=restart file)
GW_RESTART = 1 !<-- Specify whether to initialize the groundwater bucket states from the hydro
! restart file (option 1) or "cold" start the bucket states from the parameter
! table, GWBUCKPARM.nc.
!!!! ------------ MODEL OUTPUT CONTROL ------------ !!!!
! Specify the output file write frequency...(minutes)
out_dt = 60 !<-- Timestep for hydro model outputs, in minutes. This covers all output options
! listed below (CHRTOUT, GWOUT, RTOUT, LAKEOUT, etc.) so be cognizant of impacts
! on disk space and runtime when specifying.
! Specify the number of output times to be contained within each output history file...(integer)
! Currently only 1 and 0 are valid options. 1 will output a single file per timestep.
! 0 will output the CHANOBS file only as a single file over the run duration; other
! files will be one file per timestep.
SPLIT_OUTPUT_COUNT = 1 !<-- Number of timesteps to put in a single output file.
! 1 = one file per timestep
! 0 = same as option 1 but there will be one file for the
! full run duration for CHANOBS only
! Specify the minimum stream order to output to netCDF point file (integer)
! Note: lower value of stream order produces more output.
order_to_write = 4 !<-- Lowest stream order to include in output files. Selecting 1 gives
! you output for every reach/channel cell, selecting a higher order number
! gives you fewer channel output elements.
! Flag to turn on/off new I/O routines:
! 0 = deprecated output routines (only use when running with the Noah LSM),
! 1 = with scale/offset/compression,
! 2 = with scale/offset/NO compression,
! 3 = compression only,
! 4 = no scale/offset/compression (default)
io_form_outputs = 1 !<-- Specify which output option to use (NOTE: option 0 is the only
! supported option when running with the original Noah LSM)
! Realtime run configuration option:
! 0=all (default), 1=analysis, 2=short-range, 3=medium-range,
! 4=long-range, 5=retrospective,
! 6=diagnostic (includes all of 1-4 outputs combined)
io_config_outputs = 1 !<-- Specify which configuration of output variables to generate
! (NOTE: not active when io_form_outputs=0)
! Option to write output files at time 0 (restart cold start time): 0=no, 1=yes (default)
t0OutputFlag = 1 !<-- Select whether or not to create outputs at the initial timestep.
! Options to output channel & bucket influxes. Only active for UDMP_OPT=1.
! Nonzero choice requires that out_dt above matches NOAH_TIMESTEP in namelist.hrldas.
! 0=None (default), 1=channel influxes (qSfcLatRunoff, qBucket)
! 2=channel+bucket fluxes (qSfcLatRunoff, qBucket, qBtmVertRunoff_toBucket)
! 3=channel accumulations (accSfcLatRunoff, accBucket) *NOT TESTED*
output_channelBucket_influx = 0 !<-- Select which additional channel and groundwater bucket
! outputs will be generated. These additional variables can
! be used to drive the channel-only model.
! Output netCDF file control - specify which outputs to generate for the run.
CHRTOUT_DOMAIN = 1 !<-- Channel output variables (streamflow, velocity, head, etc.) as a netCDF
! point timeseries output at all channel points (1d) 0 = no output, 1 = output
CHANOBS_DOMAIN = 0 !<-- NetCDF point timeseries at forecast points or gage points (defined in
! Route_Link.nc) 0 = no output, 1 = output
CHRTOUT_GRID = 0 !<-- NetCDF grid of channel streamflow values (2d) 0 = no output, 1 = output
! NOTE: Not available with reach-based routing
LSMOUT_DOMAIN = 0 !<-- NetCDF grid of variables passed between LSM and routing components (2d)
! (generally used for diagnostics only)
! 0 = no output, 1 = output NOTE: No scale_factor/add_offset available
RTOUT_DOMAIN = 1 !<-- NetCDF grid of terrain routing variables on routing grid (2d)
! 0 = no output, 1 = output
output_gw = 1 !<-- NetCDF groundwater output, 0 = no output, 1 = output
! Groundwater bucket outputs [level, inflow, outflow]
outlake = 1 !<-- NetCDF grid of lake values (1d) 0 = no output, 1 = output !
! Lake output variables (if lakes are included in the domain) [level, inflow, outflow]
frxst_pts_out = 0 !<-- ASCII text file of streamflow at forecast points or gage points
! (defined in Route_Link.nc), 0 = no output, 1 = output
!!!! ---- PHYSICS OPTIONS AND RELATED SETTINGS ---- !!!!
! Specify the number of soil layers (integer) and the depth of the bottom of each layer... (meters)
! Notes: In the current version of WRF-Hydro these must be the same as in the namelist.input file.
! Future versions may permit this to be different.
NSOIL=4 !<-- Number of soil layers
ZSOIL8(1) = -0.10 !<-- Depth of bottom boundary of top soil layer in meters
ZSOIL8(2) = -0.40 !<-- Depth of bottom of second soil layer in meters (note that this is specified
! differently than the namelist.hrldas; this is total depth from the surface
instead of thickness)
ZSOIL8(3) = -1.00 !<-- Depth of bottom of third soil layer in meters (note that this is specified
! differently than the namelist.hrldas; this is total depth from the surface
instead of thickness)
ZSOIL8(4) = -2.00 !<-- Depth of bottom of fourth (last) soil layer in meters (note that this is
! specified differently than the namelist.hrldas; this is total depth from the
surface instead of thickness)
! Specify the grid spacing of the terrain routing grid (meters)
DXRT = 100.0 !<-- Resolution of the high-res routing grid
! Specify the integer multiple between the land model grid and the terrain routing grid (integer)
AGGFACTRT = 10 !<-- Aggregation factor between the high-res routing grid and the LSM grid;
! e.g., a 100-m routing grid resolution and a 1km LSM grid resolution would
! be AGGFACTRT = 10.
! Specify the channel routing model timestep (seconds)
DTRT_CH = 10 !<-- Timestep for the channel routing module to cycle, in seconds; model runtime
! will be sensitive to this timestep, so choose something appropriate for your
! domain resolution (finer resolutions generally require finer timesteps).
! Specify the terrain routing model timestep (seconds)
DTRT_TER = 10 !<-- Timestep for the terrain routing module to cycle, in seconds; model runtime
! will be sensitive to this timestep, so choose something appropriate for your
! domain resolution (finer resolutions generally require finer timesteps).
! Switch to activate subsurface routing...(0=no, 1=yes)
SUBRTSWCRT = 1 !<-- Turn on/off subsurface routing module.
! Switch to activate surface overland flow routing...(0=no, 1=yes)
OVRTSWCRT = 1 !<-- Turn on/off overland routing module.
! Specify overland flow routing option:
! 1=Seepest Descent (D8) 2=CASC2D (not active)
! NOTE: Currently subsurface flow is only steepest descent
rt_option = 1 !<-- For both terrain routing modules, specify whether flow should follow the
! steepest path (option 1) or multi-directional (option 2).
! Option 2 is currently unsupported.
! Specify whether to adjust overland flow parameters based on imperviousness
imperv_adj = 0 !<-- When overland routing is active and an imperviousness grid is
! provided in Fulldom_hires.nc, you can use this option to reduce
! the overland roughness and maximum retention depth based on the
! impervious fraction.
! 0 = no adjustment, 1 = activate parameter adjustments
! Switch to activate channel routing...(0=no, 1=yes)
CHANRTSWCRT = 1 !<-- Turn on/off channel routing module.
! Specify channel routing option:
! 1=Muskingam-reach, 2=Musk.-Cunge-reach, 3=Diff.Wave-gridded
channel_option = 3 !<-- If channel routing module is active, select which physics option to use.
! Specify the reach file for reach-based routing options (e.g.: "Route_Link.nc")
route_link_f = "./DOMAIN/Route_Link.nc" !<-- If using one of the reach-based channel routing
! options (channel_option = 1 or 2), specify the path
! to the Route_Link.nc file, which provides the
! channel-reach parameters.
! If using channel_option=2, activate the compound channel formulation? (Default=.FALSE.)
! This option is currently only supported if using reach-basedrouting with UDMP=1.
compound_channel = .FALSE. !<-- Turn on or off the compound channel formulation.
! This option only works with Muskingum-Cunge reach-based
! routing with UDMP=1. This option also requires additional
! parameters in the routelink file.
! Switch to activate channel-loss option (0=no, 1=yes) [Requires Kchan in RouteLink]
! channel_loss_option = 0 !<-- Turn on or off channel loss. Note that the channel loss
! scheme currently only works for Muskingum-Cunge reach-based
! channel routing. Also note that activating channel loss will
! create a sink in the model, so the water budget will not close.
! By default this option is off.
! Lake / Reservoir options (0=lakes off, 1=level pool (typical default),
! 2=passthrough, 3=reservoir DA [see &reservoir_nlist below])
lake_option = 1 !<-- Set the lake/reservoir option. Note that different options may
! require different domain/parameter/input files. Option 0 (lakes off)
! will not generate reasonable results for gridded channel routing
! domains where lake cells mask out channel cells.
! Specify the lake parameter file (e.g.: "LAKEPARM.nc"). Note: REQUIRED if lakes are on.
route_lake_f = "./DOMAIN/LAKEPARM.nc" !<-- If lakes are active, specify the path to the lake
! parameter file, which provides the lake parameters.
! Switch to activate baseflow bucket model...(0=none, 1=exp. bucket, 2=pass-through,
! 4=exp. bucket with area normalized parameters)
! Option 4 is currently only supported if using reach-based routing with UDMP=1.
GWBASESWCRT = 1 !<-- Turn on/off the ground water bucket module. Option 1 activates the
! exponential bucket model, Option 2 bypasses the bucket model and dumps all
! flow from the bottom of the soil column directly into the channel, and
! Option 4 is a variation of the exponential bucket model (option 1) where
! the coefficient is scaled by catchment area and only works for UDMP=1.
! Option 0 creates a sink at the bottom of the soil column (water draining from
! the bottom of the soil column leaves the system, so note that this option will
! not have water balance closure).
! Groundwater/baseflow 2d mask specified on land surface model grid (e.g.: "GWBASINS.nc").
! NOTE: Only required if baseflow model is active (1 or 2) and UDMP_OPT=0.
gwbasmskfil = "./DOMAIN/GWBASINS.nc" !<-- For configurations where the bucket or pass-through
! groundwater modules are active, provide the path to the
! 2d netCDF file (LSM grid resolution) that maps the
! groundwater basin IDs. Bucket parameters will be specified
! through the GWBUCKPARM.nc file, whose IDs should match
! those in the groundwater basin mask file.
! Groundwater bucket parameter file (e.g.: "GWBUCKPARM.nc")
GWBUCKPARM_file = "./DOMAIN/GWBUCKPARM.nc" !<-- For configurations where the groundwater bucket
! model is active, specify the path to the bucket
! parameter file, which provides bucket parameters
! by catchment.
! User defined mapping, such NHDPlus: 0=no (default), 1=yes
UDMP_OPT = 0 !<-- If 1, this tells the model to use a "user-defined mapping" scheme to translate
! between terrain and groundwater flow and reaches, e.g., NHDPlus.
! If user-define mapping is on, specify the user-defined mapping file (e.g.: "spatialweights.nc")
!udmap_file = "./DOMAIN/spatialweights.nc" !<-- If UDMP_OPT=1 (user defined mapping is active),
! provide the path to the required spatial weights
! file, which maps between grid cells and catchments.
/ !<-- End of hydro namelist HYDRO_nlist
&NUDGING_nlist !<-- Start of separate namelist for nudging, only used if the model is compiled
! with the compile-time option WRF_HYDRO_NUDGING=1. Ignored otherwise.
! Path to the "timeslice" observation files.
timeSlicePath = "./nudgingTimeSliceObs/" !<-- Path to a directory containing nuding “time slice”
! observation files. There are no requirements on the
! existence of files in the directory, but the directory
! itself must exist if specified.
nudgingParamFile = "DOMAIN/nudgingParams.nc" !<-- Path to the required nudging parameter file.
! Nudging restart file. nudgingLastObsFile defaults to '', which will look for
! nudgingLastObs.YYYY-mm-dd_HH:MM:SS.nc *AT THE INITALIZATION TIME OF THE RUN*. Set to a missing
! file to use no restart.
!nudgingLastObsFile = '/a/nonexistent/file/gives/nudging/cold/start' !<-- Optional path to an
! optional nudging restart
! file. See comments above.
! Parallel input of nudging timeslice observation files?
readTimesliceParallel = .TRUE. !<-- Can read the observation files in parallel (on different cores)
! for quicker run speeds.
! temporalPersistence defaults to true, only runs if necessary params present.
temporalPersistence = .FALSE. !<-- This option uses the expCoeff
! parameter for persisting observations
! The total number of last (obs, modeled) pairs to save in nudgingLastObs for removal of bias.
! This is the maximum array length. (This option is active when persistBias=FALSE)
! (Default=960=10days @15min obs resolution, if all the obs are present and longer if not.)
nLastObs = 960 !<-- The maximum trailing window size for calculating bias correction.
! If using temporalPersistence the last observation persists by default. This option instead
! persists the bias after the last observation.
persistBias = .FALSE. !<-- Apply bias correction as observations move into the past?
! AnA (FALSE) vs Forecast (TRUE) bias persistence.
! If persistBias: Does the window for calculating the bias end at model init time (=t0)?
! FALSE = window ends at model time (moving),
! TRUE = window ends at init=t0(fcst) time.
! (If commented out, Default=FALSE)
! Note: Perfect restart tests require this option to be .FALSE.
biasWindowBeforeT0 = .FALSE. !<-- Is the bias window shifting with
! model integration?
! If persistBias: Only use this many last (obs, modeled) pairs.
! (If Commented out, Default=-1*nLastObs)
! > 0: apply an age-based filter, units=hours.
! = 0: apply no additional filter, use all available/usable obs.
! < 0: apply an count-based filter, units=count
maxAgePairsBiasPersist = -960
! If persistBias: The minimum number of last (obs, modeled) pairs, with age less
! than maxAgePairsBiasPersist, required to apply a bias correction. (default=8)
minNumPairsBiasPersist = 8
! If persistBias: give more weight to observations closer in time? (default=FALSE)
invDistTimeWeightBias = .TRUE. !<-- The exact form of this
! weighting is currently hard-coded.
! If persistBias: "No constructive interference in bias correction?", reduce the bias
! adjustment when the model and the bias adjustment have the same sign relative to the
! modeled flow at t0? (default=FALSE)
! Note: Perfect restart tests require this option to be .FALSE.
noConstInterfBias = .FALSE. !<-- Tactical response to phase errors.
/
.. _section-a7:
A7. Static input files for WRF-Hydro
-------------------------------------
The WRF-Hydro model requires several static input files to define the spatial domain and
its parameters. These include two files in common with the WRF Model, :file:`geo_em.d01.nc`
and :file:`wrfinput.d01.nc`, as well as the WRF-Hydro routing domain file :file:`Fulldom_hires.nc`.
The variables in these netCDF files are listed in the tables below:
.. csv-table:: :file:`geo_em.d{X}.nc` `\qquad` *geo_em*
:file: input-tables/geo_em.tsv
:delim: tab
:header-rows: 1
\
.. csv-table:: :file:`wrfinput.d{X}.nc` `\qquad` *WRFINPUT*
:file: input-tables/wrfinput.tsv
:delim: tab
:header-rows: 1
\
.. csv-table:: :file:`Fulldom_hires.nc` `\qquad` *Fulldom_Hires*
:file: input-tables/Fulldom_hires.tsv
:delim: tab
:header-rows: 1
.. _section-a8:
A8. Noah land surface model parameter tables
--------------------------------------------
The Noah land surface model requires three parameter table files denoted
by the file suffix TBL. The variables contained within these files are
described in the tables below.
Please refer to the Noah land surface model documentation
(https://ral.ucar.edu/sites/default/files/public/product-tool/unified-noah-lsm/Noah_LSM_USERGUIDE_2.7.1.pdf)
for additional information.
`GENPARM.TBL` - This file contains global parameters for the Noah land surface model.
.. table::
:width: 90%
:align: center
+--------------------+-------------------------------------------------+
| **Variable name** | **Description** |
+====================+=================================================+
| SLOPE_DATA | Linear reservoir coefficient |
+--------------------+-------------------------------------------------+
| SBETA_DATA | Parameter used to calculate vegetation effect |
| | on soil heat |
+--------------------+-------------------------------------------------+
| FXEXP_DAT | Soil evaporation exponent used in DEVAP |
+--------------------+-------------------------------------------------+
| CSOIL_DATA | Soil heat capacity [:math:`J/m^3/K`] |
+--------------------+-------------------------------------------------+
| SALP_DATA | Shape parameter of distribution function of |
| | snow cover |
+--------------------+-------------------------------------------------+
| REFDK_DATA | Parameter in the surface runoff |
| | parameterization |
+--------------------+-------------------------------------------------+
| REFKDT_DATA | Parameter in the surface runoff |
| | parameterization |
+--------------------+-------------------------------------------------+
| FRZK_DATA | Frozen ground parameter |
+--------------------+-------------------------------------------------+
| ZBOT_DATA | Depth of lower boundary soil temperature |
| | [:math:`m`] |
+--------------------+-------------------------------------------------+
| CZIL_DATA | Parameter used in the calculation of the |
| | roughness length for heat |
+--------------------+-------------------------------------------------+
| SMLOW_DATA | Soil moisture wilt, soil moisture reference |
| | parameter |
+--------------------+-------------------------------------------------+
| SMHIGH_DATA | Soil moisture wilt, soil moisture reference |
| | parameter |
+--------------------+-------------------------------------------------+
| LVCOEF_DATA | Parameter in the snow albedo formulation |
+--------------------+-------------------------------------------------+
| `SOILPARM.TBL` - This file contains parameters that are assigned based
upon soil classification.
| *All parameters are a function of soil class.*
.. table::
:width: 90%
:align: center
+-------------+--------------------------------------------------------+
| **Variable | **Description** |
| name** | |
+=============+========================================================+
| BB | B parameter |
+-------------+--------------------------------------------------------+
| DRYSMC | Dry soil moisture threshold at which direct |
| | evaporation from top soil layer ends |
+-------------+--------------------------------------------------------+
| F11 | Soil thermal diffusivity/conductivity coefficient |
+-------------+--------------------------------------------------------+
| MAXSMC | Saturation soil moisture content (i.e. porosity) |
+-------------+--------------------------------------------------------+
| REFSMC | Reference soil moisture (field capacity), where |
| | transpiration begins to stress |
+-------------+--------------------------------------------------------+
| SATPSI | Saturation soil matric potential |
+-------------+--------------------------------------------------------+
| SATDK | Saturation soil conductivity |
+-------------+--------------------------------------------------------+
| SATDW | Saturation soil diffusivity |
+-------------+--------------------------------------------------------+
| WLTSMC | Wilting point soil moisture |
+-------------+--------------------------------------------------------+
| QTZ | Soil quartz content |
+-------------+--------------------------------------------------------+
| `VEGPARM.TBL` - This file contains parameters that a function of land cover type.
| *All parameters are a function of land cover type.*
.. table::
:width: 90%
:align: center
+-------------------+---------------------------------------------------------+
| **Variable name** | **Description** |
+===================+=========================================================+
| SHDFAC | Green vegetation fraction |
+-------------------+---------------------------------------------------------+
| NROOT | Number of soil layers (from the top) reached by |
| | vegetation roots |
+-------------------+---------------------------------------------------------+
| RS | Minimum stomatal resistance [`s/m`] |
+-------------------+---------------------------------------------------------+
| RGL | Parameter used in radiation stress function |
+-------------------+---------------------------------------------------------+
| HS | Parameter used in vapor pressure deficit function |
+-------------------+---------------------------------------------------------+
| SNUP | Threshold water-equivalent snow depth [m] that implies |
| | 100% snow cover |
+-------------------+---------------------------------------------------------+
| MAXALB | Upper bound on maximum albedo over deep snow [`\%`] |
+-------------------+---------------------------------------------------------+
| LAIMIN | Minimum leaf area index through the year |
| | [dimensionless] |
+-------------------+---------------------------------------------------------+
| LAIMAX | Maximum leaf area index through the year |
| | [dimensionless] |
+-------------------+---------------------------------------------------------+
| EMISSMIN | Minimum background emissivity through the year |
| | [fraction 0.0 to 1.0] |
+-------------------+---------------------------------------------------------+
| EMISSMAX | Maximum background emissivity through the year |
| | [fraction 0.0 to 1.0] |
+-------------------+---------------------------------------------------------+
| ALBEDOMIN | Minimum background albedo through the year [fraction |
| | 0.0 to 1.0] |
+-------------------+---------------------------------------------------------+
| ALBEDOMAX | Maximum background albedo through the year [fraction |
| | 0.0 to 1.0] |
+-------------------+---------------------------------------------------------+
| Z0MIN | Minimum background roughness length through the year |
| | [`m`] |
+-------------------+---------------------------------------------------------+
| Z0MAX | Maximum background roughness length through the year |
| | [`m`] |
+-------------------+---------------------------------------------------------+
| TOPT_DATA | Optimum transpiration air temperature [`K`] |
+-------------------+---------------------------------------------------------+
| CMCMAX_DATA | Maximum canopy water capacity [volumetric fraction] |
| | |
+-------------------+---------------------------------------------------------+
| CFACTR_DATA | Parameter used in the canopy interception calculation |
| | [dimensionless] |
+-------------------+---------------------------------------------------------+
| RSMAX_DATA | Maximal stomatal resistance [`s/m`] |
+-------------------+---------------------------------------------------------+
| BARE | The land-use category representing bare ground (used to |
| | set the vegetation fraction to zero) [land-use category |
| | index] |
+-------------------+---------------------------------------------------------+
| NATURAL | The land-use category representative of the non-urban |
| | portion of urban land-use points [land-use category |
| | index] |
+-------------------+---------------------------------------------------------+
.. _section-a9:
A9. Noah-MP land surface model parameter tables
-----------------------------------------------
The Noah-MP land surface model requires three parameter table files
denoted by the file suffix TBL. The variables contained within these
files are described in the tables below.
As part of the work conducted for the National Water Model
implementation, the ability to specify a number of these land surface
model parameters spatially on a two or three dimensional grid was
introduced. This is done through the use of the compile time option
``SPATIAL_SOIL`` and the specification of a netCDF format parameter file
with the default filename soil_properties.nc. A list of the variables
contained in this file is included in a table below as well.
`GENPARM.TBL` This file contains global parameters for the Noah-MP
land surface model.
.. table::
:width: 90%
:align: center
+---------------+------------------------------------------------------+
| **Variable | **Description** |
| name** | |
+===============+======================================================+
| SLOPE_DATA | Linear reservoir coefficient |
+---------------+------------------------------------------------------+
| SBETA_DATA | Parameter used to calculate vegetation effect on |
| | soil heat |
+---------------+------------------------------------------------------+
| FXEXP_DAT | Soil evaporation exponent used in DEVAP |
+---------------+------------------------------------------------------+
| CSOIL_DATA | Soil heat capacity [:math:`J/m^3/K`] |
+---------------+------------------------------------------------------+
| SALP_DATA | Shape parameter of distribution function of snow |
| | cover |
+---------------+------------------------------------------------------+
| REFDK_DATA | Parameter in the surface runoff parameterization |
+---------------+------------------------------------------------------+
| REFKDT_DATA | Parameter in the surface runoff parameterization |
+---------------+------------------------------------------------------+
| FRZK_DATA | Frozen ground parameter |
+---------------+------------------------------------------------------+
| ZBOT_DATA | Depth of lower boundary soil temperature [:math:`m`] |
+---------------+------------------------------------------------------+
| CZIL_DATA | Parameter used in the calculation of the roughness |
| | length for heat |
+---------------+------------------------------------------------------+
| SMLOW_DATA | Soil moisture wilt, soil moisture reference |
| | parameter |
+---------------+------------------------------------------------------+
| SMHIGH_DATA | Soil moisture wilt, soil moisture reference |
| | parameter |
+---------------+------------------------------------------------------+
| LVCOEF_DATA | Parameter in the snow albedo formulation |
+---------------+------------------------------------------------------+
`SOILPARM.TBL` - This file contains parameters that are assigned based
on soil classification.
.. table::
:width: 90%
:align: center
+--------------+-------------------------------------------------------+
| **Variable | **Description** |
| name** | |
+==============+=======================================================+
| BB | B parameter |
+--------------+-------------------------------------------------------+
| DRYSMC | Dry soil moisture threshold at which direct |
| | evaporation from top soil layer ends |
+--------------+-------------------------------------------------------+
| F11 | Soil thermal diffusivity/conductivity coefficient |
+--------------+-------------------------------------------------------+
| MAXSMC | Saturation soil moisture content (i.e. porosity) |
+--------------+-------------------------------------------------------+
| REFSMC | Reference soil moisture (field capacity), where |
| | transpiration begins to stress |
+--------------+-------------------------------------------------------+
| SATPSI | Saturation soil matric potential |
+--------------+-------------------------------------------------------+
| SATDK | Saturation soil conductivity |
+--------------+-------------------------------------------------------+
| SATDW | Saturation soil diffusivity |
+--------------+-------------------------------------------------------+
| WLTSMC | Wilting point soil moisture |
+--------------+-------------------------------------------------------+
| QTZ | Soil quartz content |
+--------------+-------------------------------------------------------+
| AXAJ | Tension water distribution inflection parameter |
+--------------+-------------------------------------------------------+
| BXAJ | Tension water distribution shape parameter |
+--------------+-------------------------------------------------------+
| XXAJ | Free water distribution shape parameter |
+--------------+-------------------------------------------------------+
`MPTABLE.TBL` - This file contains parameters that are a function of
land cover type.
.. table::
:width: 90%
:align: center
+-------------------------+--------------------------------------------+
| **Variable name** | **Description** |
+=========================+============================================+
| VEG_DATASET_DESCRIPTION | Land cover classification dataset |
+-------------------------+--------------------------------------------+
| NVEG | Number of land cover categories |
+-------------------------+--------------------------------------------+
| ISURBAN | Land cover category for urban |
+-------------------------+--------------------------------------------+
| ISWATER | Land cover category for water |
+-------------------------+--------------------------------------------+
| ISBARREN | Land cover category for barren |
+-------------------------+--------------------------------------------+
| ISICE | Land cover category for ice |
+-------------------------+--------------------------------------------+
| EBLFOREST | Land cover category for evergreen |
| | broadleaf forest |
+-------------------------+--------------------------------------------+
| .. centered:: *Parameters below are a function of land cover type* |
+-------------------------+--------------------------------------------+
| CH2OP | Maximum intercepted H\ :sub:`2`\O per unit |
| | LAI + SAI [:math:`mm`] |
+-------------------------+--------------------------------------------+
| DLEAF | Characteristic leaf dimension [:math:`m`] |
+-------------------------+--------------------------------------------+
| Z0MVT | Momentum roughness length [:math:`m`] |
+-------------------------+--------------------------------------------+
| HVT | Top of canopy [:math:`m`] |
+-------------------------+--------------------------------------------+
| HVB | Bottom of canopy [:math:`m`] |
+-------------------------+--------------------------------------------+
| DEN | Tree density [:math:`trunks/m^2`\] |
+-------------------------+--------------------------------------------+
| RC | Tree crown radius [:math:`m`] |
+-------------------------+--------------------------------------------+
| MFSNO | Snowmelt m parameter |
+-------------------------+--------------------------------------------+
| RHOS_VIS | Monthly stem area index (SAI), one-sided |
+-------------------------+--------------------------------------------+
| RHOS_NIR | Monthly leaf area index (LAI), one-sided |
+-------------------------+--------------------------------------------+
| TAUL_VIS | Leaf transmittance, visible |
+-------------------------+--------------------------------------------+
| TAUL_NIR | Leaf transmittance, near infrared |
+-------------------------+--------------------------------------------+
| TAUS_VIS | Stem transmittance, visible |
+-------------------------+--------------------------------------------+
| TAUS_NIR | Stem transmittance, near infrared |
+-------------------------+--------------------------------------------+
| XL | Leaf / stem orientation index |
+-------------------------+--------------------------------------------+
| CWPVT | Canopy wind parameter |
+-------------------------+--------------------------------------------+
| C3PSN | Photosynthetic pathway [c4 = 0. \| c3 = |
| | 1.] |
+-------------------------+--------------------------------------------+
| KC25 | CO2 Michaelis-Menten constant |
| | at 25°C [:math:`Pa`] |
+-------------------------+--------------------------------------------+
| AKC | Q10 for KC25 |
+-------------------------+--------------------------------------------+
| KO25 | O2 Michaelis-Menten constant |
| | at 25°C [:math:`Pa`] |
+-------------------------+--------------------------------------------+
| AKO | Q10 for KO25 |
+-------------------------+--------------------------------------------+
| AVCMX | Q10 for VCMX25 |
+-------------------------+--------------------------------------------+
| AQE | Q10 for QE25 |
+-------------------------+--------------------------------------------+
| LTOVRC | Leaf turnover [:math:`1/s`] |
+-------------------------+--------------------------------------------+
| DILEFC | Coefficient for leaf stress death |
| | [:math:`1/s`] |
+-------------------------+--------------------------------------------+
| DILEFW | Coefficient for leaf stress death |
| | [:math:`1/s`] |
+-------------------------+--------------------------------------------+
| RMF25 | Leaf maintenance respiration at 25°C |
| | [:math:`umol\ CO_{2}/m^2/s`] |
+-------------------------+--------------------------------------------+
| SLA | Single-side leaf area [:math:`m2/kg`] |
+-------------------------+--------------------------------------------+
| FRAGR | Fraction of growth respiration |
+-------------------------+--------------------------------------------+
| TMIN | Minimum temperature for photosynthesis |
| | [:math:`K`] |
+-------------------------+--------------------------------------------+
| VCMX25 | maximum rate of carboxylation at 25°C |
| | [:math:`umol\ CO_{2}/m^2/s`] |
+-------------------------+--------------------------------------------+
| TDLEF | Characteristic temperature for leaf |
| | freezing [:math:`K`] |
+-------------------------+--------------------------------------------+
| BP | Minimum leaf conductance |
| | [:math:`umol\ /m^2/s`] |
+-------------------------+--------------------------------------------+
| MP | Slope of conductance to photosynthesis |
| | relationship |
+-------------------------+--------------------------------------------+
| QE25 | Quantum efficiency at 25°C |
| | [:math:`umol\ CO_{2} / umol\ photon`] |
+-------------------------+--------------------------------------------+
| RMS25 | Stem maintenance respiration at 25°C |
| | [:math:`umol\ CO_{2}/kg_{bio}/s`] |
+-------------------------+--------------------------------------------+
| RMR25 | Root maintenance respiration at 25°C |
| | [:math:`umol\ CO_{2}/kg_{bio}/s`] |
+-------------------------+--------------------------------------------+
| ARM | Q10 for maintenance respiration |
+-------------------------+--------------------------------------------+
| FOLNMX | Foliage nitrogen concentration when |
| | :math:`f(n)=1` [:math:`\%`] |
+-------------------------+--------------------------------------------+
| WRRAT | Wood to non-wood ratio |
+-------------------------+--------------------------------------------+
| MRP | Microbial respiration parameter |
| | [:math:`umol\ CO_{2}/kg_{C}/s`] |
+-------------------------+--------------------------------------------+
| NROOT | Number of soil layers with root present |
+-------------------------+--------------------------------------------+
| RGL | Parameter used in radiation stress |
| | function |
+-------------------------+--------------------------------------------+
| RS | Stomatal resistance [:math:`s/m`] |
+-------------------------+--------------------------------------------+
| HS | Parameter used in vapor pressure deficit |
| | function |
+-------------------------+--------------------------------------------+
| TOPT | Optimum transpiration air temperature [K] |
+-------------------------+--------------------------------------------+
| RSMAX | Maximal stomatal resistance |
| | [:math:`s m-1`] |
+-------------------------+--------------------------------------------+
| SAI | Steam area index |
+-------------------------+--------------------------------------------+
| LAI | Leaf area index |
+-------------------------+--------------------------------------------+
| SLAREA | (not used in Noah-MP as configured in |
| | WRF-Hydro) |
+-------------------------+--------------------------------------------+
| EPS1 | (not used in Noah-MP as configured in |
| | WRF-Hydro) |
+-------------------------+--------------------------------------------+
| EPS2 | (not used in Noah-MP as configured in |
| | WRF-Hydro) |
+-------------------------+--------------------------------------------+
| EPS3 | (not used in Noah-MP as configured in |
| | WRF-Hydro) |
+-------------------------+--------------------------------------------+
| EPS4 | (not used in Noah-MP as configured in |
| | WRF-Hydro) |
+-------------------------+--------------------------------------------+
| EPS5 | (not used in Noah-MP as configured in |
| | WRF-Hydro) |
+-------------------------+--------------------------------------------+
| .. centered:: *Parameters below are a function of soil color index* |
+-------------------------+--------------------------------------------+
| ALBSAT_VIS | Saturated soil albedos for visible |
+-------------------------+--------------------------------------------+
| ALBSAT_NIR | Saturated soil albedos for near infrared |
+-------------------------+--------------------------------------------+
| ALBDRY_VIS | Dry soil albedos for visible |
+-------------------------+--------------------------------------------+
| ALBDRY_NIR | Dry soil albedos for near infrared |
+-------------------------+--------------------------------------------+
| .. centered:: *Parameters below are global* |
+-------------------------+--------------------------------------------+
| ALBICE | Albedo land ice (visible and near |
| | infrared) |
+-------------------------+--------------------------------------------+
| ALBLAK | Albedo frozen lakes (visible and near |
| | infrared) |
+-------------------------+--------------------------------------------+
| OMEGAS | Two-stream parameter for snow |
+-------------------------+--------------------------------------------+
| BETADS | Two-stream parameter for snow |
+-------------------------+--------------------------------------------+
| BETAIS | Two-stream parameter for snow |
+-------------------------+--------------------------------------------+
| EG | Emissivity soil surface (soil and lake) |
+-------------------------+--------------------------------------------+
| CO2 | CO\ :sub:`2` partial pressure |
+-------------------------+--------------------------------------------+
| O2 | O\ :sub:`2` partial pressure |
+-------------------------+--------------------------------------------+
| TIMEAN | Grid cell mean topographic index [global |
| | mean] |
+-------------------------+--------------------------------------------+
| FSATMX | Maximum surface saturated fraction [global |
| | mean] |
+-------------------------+--------------------------------------------+
| Z0SNO | Snow surface roughness length [:math:`m`] |
+-------------------------+--------------------------------------------+
| SSI | Liquid water holding capacity for snowpack |
| | [:math:`m^3/m^3`] |
+-------------------------+--------------------------------------------+
| SWEMX | New snow mass to fully cover old snow |
| | [:math:`mm`] |
+-------------------------+--------------------------------------------+
| TAU0 | Tau0 from Yang97 eqn. 10a |
+-------------------------+--------------------------------------------+
| GRAIN_GROWTH | Growth from vapor diffusion Yang97 |
| | eqn. 10b |
+-------------------------+--------------------------------------------+
| EXTRA_GROWTH | Extra growth near freezing Yang97 |
| | eqn. 10c |
+-------------------------+--------------------------------------------+
| DIRT_SOOT | Dirt and soot term Yang97 eqn. 10d |
+-------------------------+--------------------------------------------+
| BATS_COSZ | Zenith angle snow albedo |
| | adjustment; b in Yang97 eqn. 15 |
+-------------------------+--------------------------------------------+
| BATS_VIS_NEW | New snow visible albedo |
+-------------------------+--------------------------------------------+
| BATS_NIR_NEW | New snow NIR albedo |
+-------------------------+--------------------------------------------+
| BATS_VIS_AGE | Age factor for diffuse visible snow |
| | albedo Yang97 eqn. 17 |
+-------------------------+--------------------------------------------+
| BATS_NIR_AGE | Age factor for diffuse NIR snow |
| | albedo Yang97 eqn. 18 |
+-------------------------+--------------------------------------------+
| BATS_VIS_DIR | Cosz factor for direct visible snow |
| | albedo Yang97 eqn. 15 |
+-------------------------+--------------------------------------------+
| BATS_NIR_DIR | Cosz factor for direct NIR snow |
| | albedo Yang97 eqn. 16 |
+-------------------------+--------------------------------------------+
| RSURF_SNOW | Surface resistance for snow [:math:`s/m`] |
+-------------------------+--------------------------------------------+
| RSURF_EXP | Exponent in the shape parameter for |
| | soil resistance option 1 |
+-------------------------+--------------------------------------------+
| IMPERV_URBAN | impervious fraction to use for urban |
| | type cells [0-1] |
+-------------------------+--------------------------------------------+
| SCAMAX | maximum fractional snow covered area [0-1] |
+-------------------------+--------------------------------------------+
| SWE_LIMIT | maximum SWE limit [mm] |
+-------------------------+--------------------------------------------+
`soil\_properties.nc` [optional]
.. table::
:width: 90%
:align: center
+------------+----------------------------------------------------------+
| **Variable | **Description** |
| name** | |
+============+==========================================================+
| bexp | Beta parameter |
+------------+----------------------------------------------------------+
| cwpvt | Empirical canopy wind parameter |
+------------+----------------------------------------------------------+
| dksat | Saturated soil hydraulic conductivity |
+------------+----------------------------------------------------------+
| dwsat | Saturated soil hydraulic diffusivity |
+------------+----------------------------------------------------------+
| hvt | Top of vegetation canopy [:math:`m`] |
+------------+----------------------------------------------------------+
| mfsno | Snowmelt m parameter |
+------------+----------------------------------------------------------+
| mp | Slope of conductance to photosynthesis relationship |
+------------+----------------------------------------------------------+
| psisat | Saturated soil matric potential |
+------------+----------------------------------------------------------+
| quartz | Soil quartz content |
+------------+----------------------------------------------------------+
| refdk | Parameter in the surface runoff parameterization |
+------------+----------------------------------------------------------+
| refkdt | Parameter in the surface runoff parameterization |
+------------+----------------------------------------------------------+
| rsurf_exp | Exponent in the shape parameter for soil |
| | resistance option 1 |
+------------+----------------------------------------------------------+
| slope | Slope index |
+------------+----------------------------------------------------------+
| smcdry | Dry soil moisture threshold where direction evaporation |
| | from the top layer ends |
+------------+----------------------------------------------------------+
| smcmax | Saturated value of soil moisture [volumetric] |
+------------+----------------------------------------------------------+
| smcref | Reference soil moisture (field capacity) [volumetric] |
+------------+----------------------------------------------------------+
| smcwlt | Wilting point soil moisture [volumetric] |
+------------+----------------------------------------------------------+
| vcmx25 | Maximum rate of carboxylation at 25°C |
| | [:math:`umol\ CO_{2}/m^2/s`] |
+------------+----------------------------------------------------------+
| AXAJ | Tension water distribution inflection parameter |
+------------+----------------------------------------------------------+
| BXAJ | Tension water distribution shape parameter |
+------------+----------------------------------------------------------+
| XXAJ | Free water distribution shape parameter |
+------------+----------------------------------------------------------+
| rsurfsnow | Surface resistance for snow [s/m] |
+------------+----------------------------------------------------------+
| scamax | Maximum fractional snow covered area [0-1] |
+------------+----------------------------------------------------------+
| snowretfac | Snowpack water release timescale factor [1/s] |
+------------+----------------------------------------------------------+
| ssi | Liquid water holding capacity for snowpack |
| | [:math:`m^3/m^3`] |
+------------+----------------------------------------------------------+
| tau0 | Snow albedo decay timescale parameter [s] |
+------------+----------------------------------------------------------+
| imperv | Impervious fraction (optional) [0-1] |
+------------+----------------------------------------------------------+
.. _section-a10:
A10. Terrain routing parameter files
------------------------------------
Parameters for the lateral routing component of WRF-Hydro are specified
via either the `HYDRO.TBL` file or the `hydro2dtbl.nc` file. Variables
within these files are described in the tables below.
`HYDRO.TBL`
.. table::
:width: 90%
:align: center
+--------------------+------------------------------------------------------+
| **Variable name** | **Description** |
+====================+======================================================+
| .. centered:: *The parameter below is a function of land cover type* |
+--------------------+------------------------------------------------------+
| SFC_ROUGH | Overland flow roughness coefficient |
+--------------------+------------------------------------------------------+
| .. centered:: *The parameters below are a function of soil class* |
+--------------------+------------------------------------------------------+
| SATDK | Saturated soil hydraulic conductivity [:math:`m/s`] |
+--------------------+------------------------------------------------------+
| MAXSMC | Maximum volumetric soil moisture |
| | [:math:`m^3/m^3`] |
+--------------------+------------------------------------------------------+
| REFSMC | Reference volumetric soil moisture |
| | [:math:`m^3/m^3`] |
+--------------------+------------------------------------------------------+
| WLTSMC | Wilting point volumetric soil moisture |
| | [:math:`m^3/m^3`] |
+--------------------+------------------------------------------------------+
| QTZ | Quartz fraction of the soil |
+--------------------+------------------------------------------------------+
`hydro2dtbl.nc`
.. table::
:width: 90%
:align: center
+-----------------------+----------------------------------------------+
| **Variable name** | **Description** |
+=======================+==============================================+
| SMCMAX1 | Maximum volumetric soil moisture |
| | [:math:`m^3/m^3`] |
+-----------------------+----------------------------------------------+
| SMCREF1 | Reference volumetric soil moisture |
| | [:math:`m^3/m^3`] |
+-----------------------+----------------------------------------------+
| SMCWLT1 | Wilting point volumetric soil moisture |
| | [:math:`m^3/m^3`] |
+-----------------------+----------------------------------------------+
| OV_ROUGH2D | Overland flow roughness coefficient |
+-----------------------+----------------------------------------------+
| LKSAT | Lateral saturated soil hydraulic |
| | conductivity [:math:`m/s`] |
+-----------------------+----------------------------------------------+
| NEXP | Exponent in the decay function for lateral |
| | Ksat over depth |
+-----------------------+----------------------------------------------+
.. _section-a11:
A11. Channel routing parameter tables (`CHANPARM.TBL` and `Route\_Link.nc`)
---------------------------------------------------------------------------
Variables of the the channel routing parameter tables are described in
the tables below.
| `CHANPARM.TBL`
| *All parameters are a function of Strahler stream order*
.. table::
:width: 90%
:align: center
+----------------------+---------------------------------------------------+
| **Variable name** | **Description** |
+======================+===================================================+
| Bw | Channel bottom width [:math:`m`] |
+----------------------+---------------------------------------------------+
| HLINK | Initial depth of water in the channel [:math:`m`] |
+----------------------+---------------------------------------------------+
| ChSSlp | Channel side slope [:math:`m/m`] |
+----------------------+---------------------------------------------------+
| MannN | Manning’s roughness coefficient |
+----------------------+---------------------------------------------------+
| `Route\_Link.nc`
| *All parameters are specified per stream specified per stream segment (i.e. link)*
.. table::
:width: 90%
:align: center
+----------------------+-----------------------------------------------+
| **Variable name** | **Description** |
+======================+===============================================+
| BtmWdth | Channel bottom width [:math:`m`] |
+----------------------+-----------------------------------------------+
| ChSlp | Channel side slope [:math:`m/m`] |
+----------------------+-----------------------------------------------+
| Kchan | Channel conductivity [:math:`mm/hr`] |
+----------------------+-----------------------------------------------+
| Length | Stream segment length [:math:`m`] |
+----------------------+-----------------------------------------------+
| MusK | Muskingum routing time [:math:`s`] |
+----------------------+-----------------------------------------------+
| MusX | Muskingum weighting coefficient |
+----------------------+-----------------------------------------------+
| NHDWaterbodyComID | ComID of an associated water body if any |
+----------------------+-----------------------------------------------+
| Qi | Initial flow in link [:math:`m^3/s`] |
+----------------------+-----------------------------------------------+
| So | Slope [:math:`m/m`] |
+----------------------+-----------------------------------------------+
| alt | Elevation from the NAD88 datum at start node |
| | [:math:`m`] |
+----------------------+-----------------------------------------------+
| ascendingIndex | Index to user for sorting IDs - *only in NWM |
| | files* |
+----------------------+-----------------------------------------------+
| from | From Link ID |
+----------------------+-----------------------------------------------+
| gages | Identifier for stream gage at this location |
+----------------------+-----------------------------------------------+
| lat | Latitude of the segment midpoint *[degrees |
| | north]* |
+----------------------+-----------------------------------------------+
| link | Link ID |
+----------------------+-----------------------------------------------+
| lon | Longitude of the segment midpoint *[degrees |
| | east]* |
+----------------------+-----------------------------------------------+
| n | Manning's roughness |
+----------------------+-----------------------------------------------+
| nCC | Compound Channel Manning's roughness |
+----------------------+-----------------------------------------------+
| order | Strahler stream order |
+----------------------+-----------------------------------------------+
| to | To Link ID |
+----------------------+-----------------------------------------------+
| time | Time of measurement |
+----------------------+-----------------------------------------------+
| TopWdth | Top Width [m] |
+----------------------+-----------------------------------------------+
| TopWdthCC | Compound Channel Top Width [m] |
+----------------------+-----------------------------------------------+
.. _section-a12:
A12. Groundwater input and parameter files
------------------------------------------
The contents of the groundwater input and parameter files are described
in the tables below.
`GWBASINS.nc`
.. table::
:width: 90%
:align: center
+----------------------+-----------------------------------------------+
| **Variable name** | **Description** |
+======================+===============================================+
| y | projection y coordinate |
+----------------------+-----------------------------------------------+
| x | projection x coordinate |
+----------------------+-----------------------------------------------+
| crs | coordinate reference system definition |
+----------------------+-----------------------------------------------+
| BASIN | groundwater basin ID |
+----------------------+-----------------------------------------------+
`GWBUCKPARM.nc`
.. table::
:width: 90%
:align: center
+-----------------------+----------------------------------------------+
| **Variable name** | **Description** |
+=======================+==============================================+
| Basin | Basin monotonic ID (1...n) |
+-----------------------+----------------------------------------------+
| Coeff | Coefficient |
+-----------------------+----------------------------------------------+
| Expon | Exponent |
+-----------------------+----------------------------------------------+
| Zmax | Zmax |
+-----------------------+----------------------------------------------+
| Zinit | Zinit |
+-----------------------+----------------------------------------------+
| Area_sqkm | Basin area [:math:`km^2`] |
+-----------------------+----------------------------------------------+
| ComID | NHDCatchment FEATUREID (NHDFlowline ComID) |
+-----------------------+----------------------------------------------+
| Loss | Fraction of bucket output lost |
+-----------------------+----------------------------------------------+
.. _section-a13:
A13. Spatial weights input file variable description
----------------------------------------------------
The contents of the `spatialweights.nc` file is described in the table
below.
.. table::
:width: 90%
:align: center
+--------------+---------------------------------------------+---------------+
| **Variable | **Description** | **Dimension** |
| name** | | |
+==============+=============================================+===============+
| polyid | ID of polygon | polyid |
+--------------+---------------------------------------------+---------------+
| IDmask | Polygon ID (polyid) associated with each | data |
| | record) | |
+--------------+---------------------------------------------+---------------+
| overlaps | Number of intersecting polygons | polyid
gitextract_36al2cpr/
├── .github/
│ ├── CODESTYLE.md
│ ├── CONTRIBUTING.md
│ ├── ISSUE_TEMPLATE/
│ │ └── bug_report.md
│ ├── PULL_REQUEST_TEMPLATE.md
│ └── workflows/
│ └── test-pr.yml
├── .gitignore
├── .readthedocs.yaml
├── CITATION.cff
├── CMakeLists.txt
├── CODE_OF_CONDUCT.md
├── LICENSE.txt
├── NEWS.md
├── docs/
│ ├── BUILD.rst
│ ├── Makefile
│ ├── requirements.txt
│ └── userguide/
│ ├── _static/
│ │ └── ug_theme.css
│ ├── appendices.rest
│ ├── conf.py
│ ├── index.rest
│ ├── input-tables/
│ │ ├── Fulldom_hires.tsv
│ │ ├── geo_em.tsv
│ │ └── wrfinput.tsv
│ ├── introduction.rest
│ ├── meta.rest
│ ├── model-code-config.rest
│ ├── model-inputs-preproc.rest
│ ├── model-outputs.rest
│ ├── model-physics.rest
│ ├── nudging.rest
│ ├── output-tables/
│ │ ├── CHANOBS_DOMAIN.csv
│ │ ├── CHRTOUT_DOMAIN.csv
│ │ ├── CHRTOUT_GRID.csv
│ │ ├── GWOUT_DOMAIN.csv
│ │ ├── LAKEOUT_DOMAIN.csv
│ │ ├── LDASOUT_DOMAIN.csv
│ │ ├── LSMOUT.csv
│ │ └── RTOUT_DOMAIN.csv
│ └── references.rest
├── src/
│ ├── .nwm_version
│ ├── .version
│ ├── CMakeLists.txt
│ ├── CPL/
│ │ ├── CLM_cpl/
│ │ │ ├── Makefile
│ │ │ ├── Makefile.cpl
│ │ │ ├── bat2.csh
│ │ │ ├── cesm_cpl_compiling.csh
│ │ │ ├── clm_drv_HYDRO.F
│ │ │ └── module_clm_HYDRO.F
│ │ ├── LIS_cpl/
│ │ │ ├── Makefile
│ │ │ ├── Makefile.cpl
│ │ │ ├── lis_drv_HYDRO.F
│ │ │ └── module_lis_HYDRO.F
│ │ ├── NUOPC_cpl/
│ │ │ ├── .gitignore
│ │ │ ├── CMakeLists.txt
│ │ │ ├── Doxyfile
│ │ │ ├── Makefile
│ │ │ ├── WRFHydro_ESMF_Extensions.F90
│ │ │ ├── WRFHydro_NUOPC_Cap.F90
│ │ │ ├── WRFHydro_NUOPC_Fields.F90
│ │ │ ├── WRFHydro_NUOPC_Flags.F90
│ │ │ ├── WRFHydro_NUOPC_Gluecode.F90
│ │ │ ├── WRFHydro_NUOPC_Macros.h
│ │ │ └── analysis/
│ │ │ ├── ferret_NUOPC_import.jnl
│ │ │ ├── ferret_NUOPC_mask.jnl
│ │ │ ├── grid_NUOPC_CONUS.ncl
│ │ │ └── grid_NUOPC_Global.ncl
│ │ ├── NoahMP_cpl/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── Makefile
│ │ │ ├── hrldas_drv_HYDRO.F
│ │ │ └── module_hrldas_HYDRO.F
│ │ ├── Noah_cpl/
│ │ │ ├── Makefile
│ │ │ ├── hrldas_drv_HYDRO.F
│ │ │ └── module_hrldas_HYDRO.F
│ │ └── WRF_cpl/
│ │ ├── CMakeLists.txt
│ │ ├── Makefile
│ │ ├── Makefile.cpl
│ │ ├── module_wrf_HYDRO.F90
│ │ ├── module_wrf_HYDRO_downscale.F90
│ │ └── wrf_drv_HYDRO.F90
│ ├── Data_Rec/
│ │ ├── CMakeLists.txt
│ │ ├── Makefile
│ │ ├── module_RT_data.F90
│ │ ├── module_gw_gw2d_data.F90
│ │ ├── module_namelist.F90
│ │ ├── module_namelist_inc.F90
│ │ └── module_rt_inc.F90
│ ├── Debug_Utilities/
│ │ ├── CMakeLists.txt
│ │ ├── Makefile
│ │ └── debug_dump_variable.F90
│ ├── Doc/
│ │ └── link_to_documentation.txt
│ ├── HYDRO_drv/
│ │ ├── CMakeLists.txt
│ │ ├── Makefile
│ │ └── module_HYDRO_drv.F90
│ ├── IO/
│ │ ├── CMakeLists.txt
│ │ ├── Makefile
│ │ └── netcdf_layer.F90
│ ├── Land_models/
│ │ ├── Noah/
│ │ │ ├── CHANGES
│ │ │ ├── CMakeLists.txt
│ │ │ ├── GRAPHICS/
│ │ │ │ ├── HORIZ/
│ │ │ │ │ ├── Makefile
│ │ │ │ │ ├── kwm_date_utilities.F
│ │ │ │ │ ├── kwm_string_utilities.F
│ │ │ │ │ ├── lccone.F
│ │ │ │ │ ├── llxy_generic.F
│ │ │ │ │ ├── module_2ddata.F
│ │ │ │ │ ├── module_plot2d_graphics.F
│ │ │ │ │ ├── namelist.plt2d
│ │ │ │ │ └── plt2d.F
│ │ │ │ └── TIME_SERIES/
│ │ │ │ ├── Makefile
│ │ │ │ ├── kwm_date_utilities.F
│ │ │ │ ├── kwm_string_utilities.F
│ │ │ │ ├── lccone.F
│ │ │ │ ├── ldasout_timeseries.F
│ │ │ │ ├── llxy_generic.F
│ │ │ │ ├── module_plotts_graphics.F
│ │ │ │ ├── module_ptdata.F
│ │ │ │ ├── namelist.pltts
│ │ │ │ └── namelist.pltts.sample
│ │ │ ├── HRLDAS_COLLECT_DATA/
│ │ │ │ ├── GRIB_TABLES/
│ │ │ │ │ ├── GRIB1_PARAMETER_TABLE
│ │ │ │ │ └── GRIB2_PARAMETER_TABLE
│ │ │ │ ├── Makefile
│ │ │ │ ├── consolidate_grib.F
│ │ │ │ ├── lib/
│ │ │ │ │ ├── Makefile
│ │ │ │ │ ├── arguments_module.F
│ │ │ │ │ ├── cio.c
│ │ │ │ │ ├── decode_jpeg2000.c
│ │ │ │ │ ├── gbytesys.F
│ │ │ │ │ ├── get_unused_unit.F
│ │ │ │ │ ├── io_f.c
│ │ │ │ │ ├── kwm_date_utilities.F
│ │ │ │ │ ├── kwm_grid_utilities.F
│ │ │ │ │ ├── kwm_string_utilities.F
│ │ │ │ │ ├── kwm_timing_utilities.F
│ │ │ │ │ ├── module_geo_em.F
│ │ │ │ │ ├── module_grib.F
│ │ │ │ │ ├── module_grib1.F
│ │ │ │ │ ├── module_grib2.F
│ │ │ │ │ ├── module_grib2_tables.F
│ │ │ │ │ ├── module_grib_common.F
│ │ │ │ │ ├── module_input_data_structure.F
│ │ │ │ │ ├── module_llxy.F
│ │ │ │ │ ├── module_mapinfo.F
│ │ │ │ │ ├── module_wrfinputfile.F
│ │ │ │ │ ├── swap4c.c
│ │ │ │ │ ├── swap4f.F
│ │ │ │ │ └── trig_degrees.F
│ │ │ │ └── run/
│ │ │ │ ├── Makefile
│ │ │ │ ├── README.namelist
│ │ │ │ ├── namelist.example.complex
│ │ │ │ ├── namelist.example.simple
│ │ │ │ └── namelist.input
│ │ │ ├── IO_code/
│ │ │ │ ├── Makefile
│ │ │ │ ├── Noah_hrldas_driver.F
│ │ │ │ └── module_hrldas_netcdf_io.F
│ │ │ ├── Makefile
│ │ │ ├── Noah/
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── Makefile
│ │ │ │ ├── module_sf_noahlsm.F
│ │ │ │ ├── module_sf_noahlsm.F.org
│ │ │ │ └── module_sf_urban.F
│ │ │ ├── Run/
│ │ │ │ ├── GENPARM.TBL
│ │ │ │ ├── LANDUSE.TBL
│ │ │ │ ├── Makefile
│ │ │ │ ├── SOILPARM.TBL
│ │ │ │ ├── URBPARM.TBL
│ │ │ │ └── VEGPARM.TBL
│ │ │ ├── Utility_programs/
│ │ │ │ ├── Makefile
│ │ │ │ ├── gcip_sw_to_grib/
│ │ │ │ │ ├── Makefile
│ │ │ │ │ ├── srb_daily_to_grib.F
│ │ │ │ │ └── srb_monthly_to_grib.F
│ │ │ │ ├── geth_newdate.c
│ │ │ │ ├── gribbyte.c
│ │ │ │ ├── gribedition.c
│ │ │ │ ├── gribextract.c
│ │ │ │ ├── hrldas_extract_point.F
│ │ │ │ ├── lccone.F
│ │ │ │ ├── llxy_generic.F
│ │ │ │ ├── modify_wrfinput.F
│ │ │ │ └── vectorize/
│ │ │ │ ├── check_test.ncl
│ │ │ │ ├── check_wrfinput.ncl
│ │ │ │ ├── namelist.vectorize
│ │ │ │ ├── procedure.txt
│ │ │ │ ├── vectorize.perl
│ │ │ │ ├── vectorize_geo_em.F
│ │ │ │ ├── vectorize_ldasin.F
│ │ │ │ └── vectorize_wrfinput.f90
│ │ │ ├── Utility_routines/
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── Makefile
│ │ │ │ ├── kwm_string_utilities.F
│ │ │ │ ├── module_Noahlsm_utility.F
│ │ │ │ ├── module_date_utilities.F
│ │ │ │ ├── module_model_constants.F
│ │ │ │ └── module_sfcdif_wrf.F
│ │ │ ├── Utility_scripts/
│ │ │ │ ├── modify_wrfinput.ncl
│ │ │ │ ├── nam_3d_gribextract.csh
│ │ │ │ ├── ncep_rad_gribextract.csh
│ │ │ │ └── ndas_surface_gribextract.csh
│ │ │ ├── VERIFICATION/
│ │ │ │ ├── Fluxes_statistics/
│ │ │ │ │ ├── Makefile
│ │ │ │ │ ├── fluxes_statistics.F
│ │ │ │ │ ├── get_unused_unit.F
│ │ │ │ │ ├── kwm_date_utilities.F
│ │ │ │ │ ├── kwm_grid_utilities.F
│ │ │ │ │ ├── kwm_plot_utilities.F
│ │ │ │ │ ├── kwm_string_utilities.F
│ │ │ │ │ ├── lccone.F
│ │ │ │ │ ├── llxy_generic.F
│ │ │ │ │ ├── module_hd.F
│ │ │ │ │ └── namelist.fluxstats
│ │ │ │ └── OKMeso_statistics/
│ │ │ │ ├── Makefile
│ │ │ │ ├── get_unused_unit.F
│ │ │ │ ├── kwm_date_utilities.F
│ │ │ │ ├── kwm_plot_utilities.F
│ │ │ │ ├── kwm_string_utilities.F
│ │ │ │ ├── lccone.F
│ │ │ │ ├── llxy_generic.F
│ │ │ │ ├── module_hd.F
│ │ │ │ ├── okmeso.namelist
│ │ │ │ ├── rdbz.c
│ │ │ │ ├── rdmet.F
│ │ │ │ ├── rdsom.F
│ │ │ │ └── rdsom_mem.F
│ │ │ ├── user_build_options.bak
│ │ │ ├── user_build_options.gfort
│ │ │ ├── user_build_options.gfortran
│ │ │ ├── user_build_options.linux
│ │ │ └── user_build_options.linux.sequential
│ │ └── NoahMP/
│ │ ├── CMakeLists.txt
│ │ ├── HRLDAS_forcing/
│ │ │ ├── Makefile
│ │ │ ├── create_forcing.F
│ │ │ ├── lib/
│ │ │ │ ├── Makefile
│ │ │ │ ├── arguments_module.F
│ │ │ │ ├── cio.c
│ │ │ │ ├── decode_jpeg2000.c
│ │ │ │ ├── gbytesys.F
│ │ │ │ ├── get_unused_unit.F
│ │ │ │ ├── io_f.c
│ │ │ │ ├── kwm_date_utilities.F
│ │ │ │ ├── kwm_grid_utilities.F
│ │ │ │ ├── kwm_string_utilities.F
│ │ │ │ ├── kwm_timing_utilities.F
│ │ │ │ ├── module_geo_em.F
│ │ │ │ ├── module_grib.F
│ │ │ │ ├── module_grib1.F
│ │ │ │ ├── module_grib2.F
│ │ │ │ ├── module_grib2_tables.F
│ │ │ │ ├── module_grib_common.F
│ │ │ │ ├── module_input_data_structure.F
│ │ │ │ ├── module_llxy.F
│ │ │ │ ├── module_mapinfo.F
│ │ │ │ ├── module_wrfinputfile.F
│ │ │ │ ├── swap4c.c
│ │ │ │ ├── swap4f.F
│ │ │ │ └── trig_degrees.F
│ │ │ └── run/
│ │ │ ├── Makefile
│ │ │ ├── README.namelist
│ │ │ └── examples/
│ │ │ ├── GLDAS/
│ │ │ │ ├── check_SW.ncl
│ │ │ │ ├── combine_precips.f90
│ │ │ │ ├── combine_precips.perl
│ │ │ │ ├── create_UV.f90
│ │ │ │ ├── create_UV.perl
│ │ │ │ ├── extract_gldas.perl
│ │ │ │ ├── extract_gldas_init.perl
│ │ │ │ ├── fill_SSRD.f90
│ │ │ │ ├── fill_SSRD.perl
│ │ │ │ ├── gribtab_GLDAS_NOAH.gtb
│ │ │ │ └── namelist.input.GLDAS
│ │ │ ├── NARR/
│ │ │ │ ├── check_SW.ncl
│ │ │ │ ├── extract_narr_30m.perl
│ │ │ │ ├── extract_narr_init.perl
│ │ │ │ ├── extract_narr_sfc.perl
│ │ │ │ ├── fill_DSWRF.f90
│ │ │ │ ├── fill_DSWRF.perl
│ │ │ │ └── namelist.input.NARR
│ │ │ ├── NLDAS/
│ │ │ │ ├── extract_nldas.perl
│ │ │ │ ├── extract_nldas_init.perl
│ │ │ │ └── namelist.input.NLDAS
│ │ │ ├── namelist.example.complex
│ │ │ ├── namelist.example.simple
│ │ │ └── vector/
│ │ │ ├── create_ldasin_files.ncl
│ │ │ └── create_setup.ncl
│ │ ├── IO_code/
│ │ │ ├── Makefile
│ │ │ ├── main_hrldas_driver.F
│ │ │ ├── module_NoahMP_hrldas_driver.F
│ │ │ └── module_hrldas_netcdf_io.F
│ │ ├── Makefile
│ │ ├── README
│ │ ├── Utility_routines/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── Makefile
│ │ │ ├── kwm_string_utilities.F
│ │ │ ├── module_date_utilities.F
│ │ │ ├── module_model_constants.F
│ │ │ └── module_wrf_utilities.F
│ │ ├── data_structures/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── Makefile
│ │ │ ├── forcing.f90
│ │ │ ├── geometry.f90
│ │ │ ├── parameters.f90
│ │ │ └── state.f90
│ │ ├── hydro/
│ │ │ ├── Makefile.hydro
│ │ │ ├── Makefile_run
│ │ │ └── user_build_options.bak
│ │ ├── phys/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── Makefile
│ │ │ ├── module_sf_noahmp_glacier.F
│ │ │ ├── module_sf_noahmp_groundwater.F
│ │ │ ├── module_sf_noahmpdrv.F
│ │ │ ├── module_sf_noahmplsm.F
│ │ │ └── surfex/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── Makefile
│ │ │ ├── ini_csts.F
│ │ │ ├── modd_csts.F
│ │ │ ├── modd_snow_metamo.F
│ │ │ ├── modd_snow_par.F
│ │ │ ├── modd_surf_atm.F
│ │ │ ├── mode_snow3l.F
│ │ │ ├── mode_surf_coefs.F
│ │ │ ├── mode_thermos.F
│ │ │ ├── module_snowcro.F
│ │ │ ├── module_snowcro_intercept.F
│ │ │ └── tridiag_ground_snowcro.F
│ │ ├── run/
│ │ │ ├── GENPARM.TBL
│ │ │ ├── MPTABLE.TBL
│ │ │ ├── Makefile
│ │ │ └── SOILPARM.TBL
│ │ └── version
│ ├── MPP/
│ │ ├── CMakeLists.txt
│ │ ├── CPL_WRF.F90
│ │ ├── Makefile
│ │ ├── Makefile.NoahMP
│ │ ├── hashtable.F90
│ │ ├── module_mpp_GWBUCKET.F90
│ │ ├── module_mpp_ReachLS.F90
│ │ └── mpp_land.F90
│ ├── Makefile
│ ├── OrchestratorLayer/
│ │ ├── CMakeLists.txt
│ │ ├── Makefile
│ │ ├── config.F90
│ │ ├── io_manager.F90
│ │ └── orchestrator.F90
│ ├── README.build.md
│ ├── Rapid_routing/
│ │ ├── .gitignore
│ │ ├── .rapid_init.F90.swp
│ │ ├── LICENSE
│ │ ├── README
│ │ ├── hrldas_RAPID_drv.F90
│ │ ├── hrldas_RAPID_wrapper.F90
│ │ ├── makefile
│ │ ├── makefile.cpl
│ │ ├── makefile.orig
│ │ ├── rapid_arrays.F90
│ │ ├── rapid_close_Qfor_file.F90
│ │ ├── rapid_close_Qhum_file.F90
│ │ ├── rapid_close_Qobs_file.F90
│ │ ├── rapid_close_Qout_file.F90
│ │ ├── rapid_close_Vlat_file.F90
│ │ ├── rapid_create_Qout_file.F90
│ │ ├── rapid_create_obj.F90
│ │ ├── rapid_destro_obj.F90
│ │ ├── rapid_final.F90
│ │ ├── rapid_get_Qdam.F90
│ │ ├── rapid_hsh_mat.F90
│ │ ├── rapid_init.F90
│ │ ├── rapid_main.F90
│ │ ├── rapid_namelist
│ │ ├── rapid_net_mat.F90
│ │ ├── rapid_net_mat_brk.F90
│ │ ├── rapid_obs_mat.F90
│ │ ├── rapid_open_Qfor_file.F90
│ │ ├── rapid_open_Qhum_file.F90
│ │ ├── rapid_open_Qobs_file.F90
│ │ ├── rapid_open_Qout_file.F90
│ │ ├── rapid_open_Vlat_file.F90
│ │ ├── rapid_phiroutine.F90
│ │ ├── rapid_read_Qfor_file.F90
│ │ ├── rapid_read_Qhum_file.F90
│ │ ├── rapid_read_Qobs_file.F90
│ │ ├── rapid_read_Vlat_file.F90
│ │ ├── rapid_read_namelist.F90
│ │ ├── rapid_routing.F90
│ │ ├── rapid_routing_param.F90
│ │ ├── rapid_script.sh
│ │ ├── rapid_set_Qext0.F90
│ │ ├── rapid_var.F90
│ │ └── rapid_write_Qout_file.F90
│ ├── Routing/
│ │ ├── CMakeLists.txt
│ │ ├── Diversions/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── Makefile
│ │ │ ├── module_diversions.F90
│ │ │ └── module_diversions_timeslice.F90
│ │ ├── Makefile
│ │ ├── Noah_distr_routing.F90
│ │ ├── Noah_distr_routing_overland.F90
│ │ ├── Noah_distr_routing_subsurface.F90
│ │ ├── Overland/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── Makefile
│ │ │ ├── module_overland.F90
│ │ │ ├── module_overland_control.F90
│ │ │ ├── module_overland_mass_balance.F90
│ │ │ ├── module_overland_routing_properties.F90
│ │ │ ├── module_overland_streams_and_lakes.F90
│ │ │ ├── overland.md
│ │ │ └── overland_tests.F90
│ │ ├── Reservoirs/
│ │ │ ├── .gitignore
│ │ │ ├── CMakeLists.txt
│ │ │ ├── Level_Pool/
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── Makefile
│ │ │ │ ├── module_levelpool.F90
│ │ │ │ ├── module_levelpool_properties.F90
│ │ │ │ ├── module_levelpool_state.F90
│ │ │ │ └── module_levelpool_tests.F90
│ │ │ ├── Makefile
│ │ │ ├── Persistence_Level_Pool_Hybrid/
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── Makefile
│ │ │ │ ├── module_persistence_levelpool_hybrid.F90
│ │ │ │ ├── module_persistence_levelpool_hybrid_properties.F90
│ │ │ │ ├── module_persistence_levelpool_hybrid_state.F90
│ │ │ │ └── module_persistence_levelpool_hybrid_tests.F90
│ │ │ ├── Persistence_Level_Pool_Hybrid_Module_README.md
│ │ │ ├── RFC_Forecasts/
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── Makefile
│ │ │ │ ├── module_rfc_forecasts.F90
│ │ │ │ ├── module_rfc_forecasts_properties.F90
│ │ │ │ ├── module_rfc_forecasts_state.F90
│ │ │ │ └── module_rfc_forecasts_tests.F90
│ │ │ ├── RFC_Forecasts_Module_README.md
│ │ │ ├── module_reservoir.F90
│ │ │ ├── module_reservoir_read_rfc_time_series_data.F90
│ │ │ ├── module_reservoir_read_timeslice_data.F90
│ │ │ ├── module_reservoir_utilities.F90
│ │ │ └── reservoir_tests.F90
│ │ ├── Subsurface/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── Makefile
│ │ │ ├── module_subsurface.F90
│ │ │ ├── module_subsurface_grid_transform.F90
│ │ │ ├── module_subsurface_input.F90
│ │ │ ├── module_subsurface_output.F90
│ │ │ ├── module_subsurface_properties.F90
│ │ │ ├── module_subsurface_state.F90
│ │ │ ├── module_subsurface_static_data.F90
│ │ │ └── subsurface_tests.F90
│ │ ├── module_GW_baseflow.F90
│ │ ├── module_HYDRO_io.F90
│ │ ├── module_HYDRO_utils.F90
│ │ ├── module_NWM_io.F90
│ │ ├── module_NWM_io_dict.F90
│ │ ├── module_RT.F90
│ │ ├── module_UDMAP.F90
│ │ ├── module_channel_routing.F90
│ │ ├── module_date_utilities_rt.F90
│ │ ├── module_gw_gw2d.F90
│ │ ├── module_lsm_forcing.F90
│ │ ├── module_noah_chan_param_init_rt.F90
│ │ └── module_reservoir_routing.F90
│ ├── arc/
│ │ ├── Makefile.Noah
│ │ ├── Makefile.NoahMP
│ │ ├── Makefile.mpp
│ │ ├── macros.gordon
│ │ ├── macros.gordon.debug
│ │ ├── macros.mpp.IBM.xlf90_r
│ │ ├── macros.mpp.cray_fortran
│ │ ├── macros.mpp.gfort
│ │ ├── macros.mpp.ifort
│ │ ├── macros.mpp.ifort.omp
│ │ ├── macros.mpp.intel.cray_xc
│ │ ├── macros.mpp.linux
│ │ └── macros.mpp.mpiifort
│ ├── cmake-modules/
│ │ ├── FindESMF.cmake
│ │ └── FindNetCDF.cmake
│ ├── compile_offline_Noah.sh
│ ├── compile_offline_NoahMP.sh
│ ├── compile_options.json
│ ├── configure
│ ├── deprecated/
│ │ ├── README.build.txt
│ │ ├── build_install.sh
│ │ └── build_install_theia.sh
│ ├── hrldas_namelists.json
│ ├── hydro_namelists.json
│ ├── nudging/
│ │ ├── CMakeLists.txt
│ │ ├── Makefile
│ │ ├── Nudging_frxst_gage.csv
│ │ ├── io/
│ │ │ ├── CMakeLists.txt
│ │ │ └── module_nudging_io.F90
│ │ ├── module_date_utils_nudging.F90
│ │ ├── module_nudging_utils.F90
│ │ └── module_stream_nudging.F90
│ ├── nwm.md
│ ├── nwm_doxyfile
│ ├── template/
│ │ ├── HYDRO/
│ │ │ ├── CHANPARM.TBL
│ │ │ ├── HYDRO.TBL
│ │ │ ├── HYDRO_MODIS.TBL
│ │ │ └── hydro.namelist
│ │ ├── Noah/
│ │ │ └── namelist.hrldas
│ │ ├── NoahMP/
│ │ │ └── namelist.hrldas
│ │ ├── examples/
│ │ │ └── nwm/
│ │ │ ├── namelists/
│ │ │ │ ├── v2.0/
│ │ │ │ │ ├── analysis_assim/
│ │ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ │ └── namelist.hrldas
│ │ │ │ │ ├── analysis_assim_extended/
│ │ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ │ └── namelist.hrldas
│ │ │ │ │ ├── analysis_assim_long_range/
│ │ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ │ └── namelist.hrldas
│ │ │ │ │ ├── hi_analysis_assim/
│ │ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ │ └── namelist.hrldas
│ │ │ │ │ ├── hi_short_range/
│ │ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ │ └── namelist.hrldas
│ │ │ │ │ ├── long_range/
│ │ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ │ └── namelist.hrldas
│ │ │ │ │ ├── medium_range/
│ │ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ │ └── namelist.hrldas
│ │ │ │ │ └── short_range/
│ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ └── namelist.hrldas
│ │ │ │ ├── v2.0_reforecasts/
│ │ │ │ │ ├── analysis_assim/
│ │ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ │ └── namelist.hrldas
│ │ │ │ │ ├── analysis_assim_extended/
│ │ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ │ └── namelist.hrldas
│ │ │ │ │ ├── analysis_assim_long_range/
│ │ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ │ └── namelist.hrldas
│ │ │ │ │ ├── long_range/
│ │ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ │ └── namelist.hrldas
│ │ │ │ │ ├── medium_range/
│ │ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ │ └── namelist.hrldas
│ │ │ │ │ └── short_range/
│ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ └── namelist.hrldas
│ │ │ │ ├── v2.1/
│ │ │ │ │ ├── analysis_assim/
│ │ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ │ └── namelist.hrldas
│ │ │ │ │ ├── analysis_assim_extended/
│ │ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ │ └── namelist.hrldas
│ │ │ │ │ ├── analysis_assim_longrange/
│ │ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ │ └── namelist.hrldas
│ │ │ │ │ ├── hi_analysis_assim/
│ │ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ │ └── namelist.hrldas
│ │ │ │ │ ├── hi_short_range/
│ │ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ │ └── namelist.hrldas
│ │ │ │ │ ├── long_range/
│ │ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ │ └── namelist.hrldas
│ │ │ │ │ ├── medium_range/
│ │ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ │ └── namelist.hrldas
│ │ │ │ │ ├── pr_analysis_assim/
│ │ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ │ └── namelist.hrldas
│ │ │ │ │ ├── pr_short_range/
│ │ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ │ └── namelist.hrldas
│ │ │ │ │ └── short_range/
│ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ └── namelist.hrldas
│ │ │ │ └── v3.0/
│ │ │ │ ├── ak_analysis_assim/
│ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ └── namelist.hrldas
│ │ │ │ ├── ak_analysis_assim_extended/
│ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ └── namelist.hrldas
│ │ │ │ ├── ak_analysis_assim_extended_no_da/
│ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ └── namelist.hrldas
│ │ │ │ ├── ak_analysis_assim_no_da/
│ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ └── namelist.hrldas
│ │ │ │ ├── ak_medium_range/
│ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ └── namelist.hrldas
│ │ │ │ ├── ak_medium_range_no_da/
│ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ └── namelist.hrldas
│ │ │ │ ├── ak_short_range/
│ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ └── namelist.hrldas
│ │ │ │ ├── analysis_assim/
│ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ └── namelist.hrldas
│ │ │ │ ├── analysis_assim_extended/
│ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ └── namelist.hrldas
│ │ │ │ ├── analysis_assim_extended_no_da/
│ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ └── namelist.hrldas
│ │ │ │ ├── analysis_assim_longrange/
│ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ └── namelist.hrldas
│ │ │ │ ├── analysis_assim_longrange_no_da/
│ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ └── namelist.hrldas
│ │ │ │ ├── analysis_assim_no_da/
│ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ └── namelist.hrldas
│ │ │ │ ├── hi_analysis_assim/
│ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ └── namelist.hrldas
│ │ │ │ ├── hi_analysis_assim_no_da/
│ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ └── namelist.hrldas
│ │ │ │ ├── hi_short_range/
│ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ └── namelist.hrldas
│ │ │ │ ├── hi_short_range_no_da/
│ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ └── namelist.hrldas
│ │ │ │ ├── long_range/
│ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ └── namelist.hrldas
│ │ │ │ ├── medium_range/
│ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ └── namelist.hrldas
│ │ │ │ ├── medium_range_no_da/
│ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ └── namelist.hrldas
│ │ │ │ ├── pr_analysis_assim/
│ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ └── namelist.hrldas
│ │ │ │ ├── pr_analysis_assim_no_da/
│ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ └── namelist.hrldas
│ │ │ │ ├── pr_short_range/
│ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ └── namelist.hrldas
│ │ │ │ ├── pr_short_range_no_da/
│ │ │ │ │ ├── hydro.namelist
│ │ │ │ │ └── namelist.hrldas
│ │ │ │ └── short_range/
│ │ │ │ ├── hydro.namelist
│ │ │ │ └── namelist.hrldas
│ │ │ └── parameter_tables/
│ │ │ ├── v2.0/
│ │ │ │ ├── CHANPARM.TBL
│ │ │ │ ├── GENPARM.TBL
│ │ │ │ ├── HYDRO.TBL
│ │ │ │ ├── MPTABLE.TBL
│ │ │ │ └── SOILPARM.TBL
│ │ │ ├── v2.1/
│ │ │ │ ├── CHANPARM.TBL
│ │ │ │ ├── GENPARM.TBL
│ │ │ │ ├── HYDRO.TBL
│ │ │ │ ├── MPTABLE.TBL
│ │ │ │ └── SOILPARM.TBL
│ │ │ └── v3.0/
│ │ │ ├── Alaska/
│ │ │ │ ├── CHANPARM.TBL
│ │ │ │ ├── GENPARM.TBL
│ │ │ │ ├── HYDRO.TBL
│ │ │ │ ├── MPTABLE.TBL
│ │ │ │ └── SOILPARM.TBL
│ │ │ ├── CONUS/
│ │ │ │ ├── CHANPARM.TBL
│ │ │ │ ├── GENPARM.TBL
│ │ │ │ ├── HYDRO.TBL
│ │ │ │ ├── MPTABLE.TBL
│ │ │ │ └── SOILPARM.TBL
│ │ │ ├── Hawaii/
│ │ │ │ ├── CHANPARM.TBL
│ │ │ │ ├── GENPARM.TBL
│ │ │ │ ├── HYDRO.TBL
│ │ │ │ ├── MPTABLE.TBL
│ │ │ │ └── SOILPARM.TBL
│ │ │ └── PuertoRico/
│ │ │ ├── CHANPARM.TBL
│ │ │ ├── GENPARM.TBL
│ │ │ ├── HYDRO.TBL
│ │ │ ├── MPTABLE.TBL
│ │ │ └── SOILPARM.TBL
│ │ └── setEnvar.sh
│ ├── utils/
│ │ ├── CMakeLists.txt
│ │ ├── Makefile
│ │ ├── fortglob/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── Makefile
│ │ │ ├── fortglob.F90
│ │ │ ├── libfortglob.c
│ │ │ └── libfortglob.h
│ │ ├── module_hydro_stop.F90
│ │ └── module_version.F90
│ └── wrf_hydro_config
└── tests/
├── __init__.py
├── config_file_meta/
│ ├── croton_NY/
│ │ ├── nwm_ana/
│ │ │ ├── FORCING.md5
│ │ │ ├── NWM/
│ │ │ │ ├── DOMAIN/
│ │ │ │ │ ├── Fulldom_hires.cdl
│ │ │ │ │ ├── Fulldom_hires.md5
│ │ │ │ │ ├── GEOGRID_LDASOUT_Spatial_Metadata.cdl
│ │ │ │ │ ├── GEOGRID_LDASOUT_Spatial_Metadata.md5
│ │ │ │ │ ├── GWBUCKPARM.cdl
│ │ │ │ │ ├── GWBUCKPARM.md5
│ │ │ │ │ ├── LAKEPARM.cdl
│ │ │ │ │ ├── LAKEPARM.md5
│ │ │ │ │ ├── Route_Link.cdl
│ │ │ │ │ ├── Route_Link.md5
│ │ │ │ │ ├── geo_em.d01.cdl
│ │ │ │ │ ├── geo_em.d01.md5
│ │ │ │ │ ├── hydro2dtbl.cdl
│ │ │ │ │ ├── hydro2dtbl.md5
│ │ │ │ │ ├── nudgingParams.cdl
│ │ │ │ │ ├── nudgingParams.md5
│ │ │ │ │ ├── soil_properties.cdl
│ │ │ │ │ ├── soil_properties.md5
│ │ │ │ │ ├── spatialweights.cdl
│ │ │ │ │ ├── spatialweights.md5
│ │ │ │ │ ├── wrfinput_d01.cdl
│ │ │ │ │ └── wrfinput_d01.md5
│ │ │ │ ├── RESTART/
│ │ │ │ │ ├── HYDRO_RST.2011-08-26_00:00_DOMAIN1.cdl
│ │ │ │ │ ├── HYDRO_RST.2011-08-26_00:00_DOMAIN1.md5
│ │ │ │ │ ├── RESTART.2011082600_DOMAIN1.cdl
│ │ │ │ │ ├── RESTART.2011082600_DOMAIN1.md5
│ │ │ │ │ ├── nudgingLastObs.2011-08-26_00:00:00.cdl
│ │ │ │ │ └── nudgingLastObs.2011-08-26_00:00:00.md5
│ │ │ │ └── nudgingTimeSliceObs.md5
│ │ │ ├── hydro.namelist
│ │ │ └── namelist.hrldas
│ │ └── nwm_long_range/
│ │ ├── FORCING.md5
│ │ ├── NWM/
│ │ │ ├── DOMAIN/
│ │ │ │ ├── nudgingParams.cdl
│ │ │ │ └── nudgingParams.md5
│ │ │ ├── DOMAIN_LR/
│ │ │ │ ├── Fulldom_hires.cdl
│ │ │ │ ├── Fulldom_hires.md5
│ │ │ │ ├── GEOGRID_LDASOUT_Spatial_Metadata.cdl
│ │ │ │ ├── GEOGRID_LDASOUT_Spatial_Metadata.md5
│ │ │ │ ├── GWBUCKPARM.cdl
│ │ │ │ ├── GWBUCKPARM.md5
│ │ │ │ ├── LAKEPARM.cdl
│ │ │ │ ├── LAKEPARM.md5
│ │ │ │ ├── Route_Link.cdl
│ │ │ │ ├── Route_Link.md5
│ │ │ │ ├── geo_em.d01.cdl
│ │ │ │ ├── geo_em.d01.md5
│ │ │ │ ├── hydro2dtbl.cdl
│ │ │ │ ├── hydro2dtbl.md5
│ │ │ │ ├── soil_properties.cdl
│ │ │ │ ├── soil_properties.md5
│ │ │ │ ├── spatialweights.cdl
│ │ │ │ ├── spatialweights.md5
│ │ │ │ ├── wrfinput_d01.cdl
│ │ │ │ └── wrfinput_d01.md5
│ │ │ ├── RESTART/
│ │ │ │ ├── nudgingLastObs.2011-08-26_00:00:00.cdl
│ │ │ │ └── nudgingLastObs.2011-08-26_00:00:00.md5
│ │ │ ├── RESTART_LR/
│ │ │ │ ├── HYDRO_RST.2011-08-26_00:00_DOMAIN1.cdl
│ │ │ │ ├── HYDRO_RST.2011-08-26_00:00_DOMAIN1.md5
│ │ │ │ ├── RESTART.2011082600_DOMAIN1.cdl
│ │ │ │ └── RESTART.2011082600_DOMAIN1.md5
│ │ │ └── nudgingTimeSliceObs.md5
│ │ ├── hydro.namelist
│ │ └── namelist.hrldas
│ └── get_config_file_meta_data.py
├── conftest.py
├── ctests/
│ ├── CMakeLists.txt
│ ├── run_cmake_testcase.sh
│ ├── run_dir_makefile.mk
│ ├── setup_cmake_testcase.sh
│ ├── should_fail.f90
│ └── should_not_fail.f90
├── hrldas_option_suites.json
├── hydro_option_suites.json
├── local/
│ ├── derecho/
│ │ ├── example_croton_test.sh
│ │ └── model_test.sh
│ ├── examples/
│ │ ├── ex1_run_croton_derecho.sh
│ │ ├── ex2_run_conus_derecho.sh
│ │ └── ex3_run_croton_docker.sh
│ ├── requirements.txt
│ ├── reservoir_testing_files/
│ │ ├── 2010-10-01_06:00:00.15min.usgsTimeSlice.ncdf
│ │ ├── 2016-10-10_00:00:00.15min.usaceTimeSlice.ncdf
│ │ ├── 2019-08-18_00.60min.CCHC1.RFCTimeSeries.ncdf
│ │ ├── 2019-08-18_00.60min.SNOA2.RFCTimeSeries.ncdf
│ │ ├── 2019-09-18_00.60min.CCHC1.RFCTimeSeries.ncdf
│ │ ├── 2019-10-18_00.60min.CCHC1.RFCTimeSeries.ncdf
│ │ ├── 2019-11-18_00.60min.CCHC1.RFCTimeSeries.ncdf
│ │ ├── 2019-12-19_05.60min.CCHC1.RFCTimeSeries.ncdf
│ │ ├── reservoir_index_AnA_represents_Extended_MR.nc
│ │ ├── reservoir_index_Long_Range_AnA.nc
│ │ ├── reservoir_index_Standard_AnA_APRFC_GDLs.nc
│ │ └── reservoir_index_short_range.nc
│ ├── run_tests.py
│ └── utils/
│ ├── attach_all_plots.bash
│ ├── attach_plots_to_pr.py
│ ├── generate_diff_plots.py
│ ├── nwm_testing.yml
│ ├── releaseapi.py
│ ├── requirements.txt
│ └── thresholds.csv
├── test_1_fundamental.py
├── test_2_regression.py
├── test_3_outputs.py
├── test_supp_1_channel_only.py
├── test_supp_2_nwm_output.py
├── utilities.py
└── utils/
├── compare_output.py
├── xrcmp.py
└── xrnan.py
SYMBOL INDEX (104 symbols across 28 files)
FILE: src/Land_models/Noah/HRLDAS_COLLECT_DATA/lib/decode_jpeg2000.c
function info_jpeg2000 (line 45) | void info_jpeg2000(char *buffer, int *length, int *width, int *height, j...
function decode_jpeg2000 (line 78) | void decode_jpeg2000(jas_image_t **image, jas_stream_t **instream, int *...
FILE: src/Land_models/Noah/HRLDAS_COLLECT_DATA/lib/io_f.c
type GribFileInfo (line 64) | struct GribFileInfo {
function c_gribopen (line 73) | void c_gribopen(char *filename, struct GribFileInfo **GFPTR, int *ierr) {
function c_writeopen (line 145) | void c_writeopen(char *filename, struct GribFileInfo **GFPTR) {
function c_close (line 151) | void c_close(struct GribFileInfo **GFPTR) {
function io_fread (line 180) | void io_fread(struct GribFileInfo **GFPTR, char *buf, int *nread, int *i...
function io_fwrite (line 209) | void io_fwrite(struct GribFileInfo **GFPTR, char *buf, int *nwrite, int ...
function io_fseek (line 221) | void io_fseek(struct GribFileInfo **GFPTR, int *nbytes, int *mode) {
function io_ftell (line 247) | void io_ftell(struct GribFileInfo **GFPTR, long *itell) {
FILE: src/Land_models/Noah/HRLDAS_COLLECT_DATA/lib/swap4c.c
function swap4c (line 23) | void swap4c(char i[], int n) {
FILE: src/Land_models/Noah/Utility_programs/geth_newdate.c
function nfeb (line 343) | int nfeb(int year)
function geti (line 363) | int geti(char *s, int p, int l) {
FILE: src/Land_models/Noah/Utility_programs/gribbyte.c
function main (line 53) | int main(int argc, char *argv[])
function process_grib1_record (line 248) | void process_grib1_record() {
function process_grib2_record (line 302) | void process_grib2_record (int lengrib) {
function check_and_write (line 369) | void check_and_write() {
FILE: src/Land_models/Noah/Utility_programs/gribedition.c
function main (line 34) | int main(int argc, char *argv[])
FILE: src/Land_models/Noah/Utility_programs/gribextract.c
function main (line 68) | int main(int argc, char *argv[])
function process_grib1_record (line 425) | void process_grib1_record(int fw, int lengrib) {
function process_grib2_record (line 514) | void process_grib2_record (int fw, int lengrib, unsigned char discipline) {
function check_and_write (line 597) | void check_and_write(int fw, int lengrib) {
FILE: src/Land_models/Noah/VERIFICATION/OKMeso_statistics/rdbz.c
function bz_open_ (line 38) | int bz_open_(char *flnm, int *iunit, int *ierr, int *ivrb) {
function bz_read_string_ (line 84) | int bz_read_string_(int *iunit, unsigned char *string, int *length, int ...
function bz_restart_ (line 96) | int bz_restart_(int *offset) {
function bz_advance_line_ (line 102) | int bz_advance_line_() {
function bz_getline_ (line 107) | int bz_getline_(int *iunit, char *string, int *length, int *ierr) {
function bz_getline_ (line 217) | int bz_getline_(int *iunit, char *string, int *length, int *ierr){
function bz_close_ (line 265) | int bz_close_(int *iunit, int *ierr, int *ivrb) {
FILE: src/Land_models/NoahMP/HRLDAS_forcing/lib/decode_jpeg2000.c
function info_jpeg2000 (line 46) | void info_jpeg2000(char *buffer, int *length, int *width, int *height, j...
function decode_jpeg2000 (line 79) | void decode_jpeg2000(jas_image_t **image, jas_stream_t **instream, int *...
FILE: src/Land_models/NoahMP/HRLDAS_forcing/lib/io_f.c
type GribFileInfo (line 63) | struct GribFileInfo {
function c_gribopen (line 72) | void c_gribopen(char *filename, struct GribFileInfo **GFPTR, int *ierr) {
function c_writeopen (line 144) | void c_writeopen(char *filename, struct GribFileInfo **GFPTR) {
function c_close (line 150) | void c_close(struct GribFileInfo **GFPTR) {
function io_fread (line 179) | void io_fread(struct GribFileInfo **GFPTR, char *buf, int *nread, int *i...
function io_fwrite (line 208) | void io_fwrite(struct GribFileInfo **GFPTR, char *buf, int *nwrite, int ...
function io_fseek (line 220) | void io_fseek(struct GribFileInfo **GFPTR, int *nbytes, int *mode) {
function io_ftell (line 246) | void io_ftell(struct GribFileInfo **GFPTR, long *itell) {
FILE: src/Land_models/NoahMP/HRLDAS_forcing/lib/swap4c.c
function swap4c (line 23) | void swap4c(char i[], int n) {
FILE: src/utils/fortglob/libfortglob.c
function globrec (line 3) | globrec * globfiles_c(const char * pattern) {
function freeglobrec (line 15) | void freeglobrec(glob_t ** rec) {
FILE: src/utils/fortglob/libfortglob.h
type globrec (line 6) | typedef struct globrec {
FILE: tests/config_file_meta/get_config_file_meta_data.py
function get_nlst_file_meta (line 31) | def get_nlst_file_meta(
FILE: tests/conftest.py
function pytest_addoption (line 8) | def pytest_addoption(parser):
function _make_sim (line 138) | def _make_sim(
function exe_cmd (line 186) | def exe_cmd(request):
function candidate_sim (line 191) | def candidate_sim(request):
function candidate_channel_only_sim (line 226) | def candidate_channel_only_sim(request):
function candidate_nwm_output_sim (line 259) | def candidate_nwm_output_sim(request):
function reference_sim (line 296) | def reference_sim(request):
function reference_nwm_output_sim (line 331) | def reference_nwm_output_sim(request):
function output_dir (line 368) | def output_dir(request):
function ncores (line 382) | def ncores(request):
function xrcmp_n_cores (line 387) | def xrcmp_n_cores(request):
function feature_ids (line 392) | def feature_ids(request):
FILE: tests/local/run_tests.py
function run_tests (line 13) | def run_tests(
function main (line 121) | def main():
FILE: tests/local/utils/attach_plots_to_pr.py
function get_options (line 45) | def get_options():
function login (line 80) | def login(token=None):
function runcmd (line 94) | def runcmd(cmd, pwd=None, logError=True):
function clone_repo (line 113) | def clone_repo(repo, outdir, token=None):
function add_images (line 145) | def add_images(images, outdir, pull):
function create_pull_comment (line 207) | def create_pull_comment(gh, repo, sha, images, pull, title=None):
function run (line 244) | def run():
FILE: tests/local/utils/generate_diff_plots.py
function get_options (line 90) | def get_options():
function get_datasets (line 216) | def get_datasets(base_path, comp_path, filepattern, useDask=True):
function create_diff (line 276) | def create_diff(datasets, variable, threshold=0):
function get_stat (line 311) | def get_stat(dataset, variable, stat):
function plot_diffs (line 345) | def plot_diffs(dataset, file_type, variable, var_label, outpath, type=GR...
function get_range (line 442) | def get_range(datasets, variable):
function process_variable (line 473) | def process_variable(type, variable, datasets, outdir, base_label, comp_...
function plot_timeseries (line 523) | def plot_timeseries(datasets, feature_id, outpath, file_type, variable, ...
function run (line 570) | def run(options=None):
FILE: tests/local/utils/releaseapi.py
function get_release_asset (line 6) | def get_release_asset(download_dir: str,
function main (line 38) | def main():
FILE: tests/test_1_fundamental.py
function test_compile_candidate (line 41) | def test_compile_candidate(candidate_sim, output_dir):
function test_compile_reference (line 59) | def test_compile_reference(reference_sim, output_dir):
function test_run_candidate (line 77) | def test_run_candidate(candidate_sim, output_dir, ncores, exe_cmd):
function test_run_reference (line 123) | def test_run_reference(reference_sim, output_dir, ncores, exe_cmd):
function test_ncores_candidate (line 168) | def test_ncores_candidate(output_dir, exe_cmd, ncores, xrcmp_n_cores, fe...
function test_perfrestart_candidate (line 255) | def test_perfrestart_candidate(output_dir, xrcmp_n_cores, feature_ids):
FILE: tests/test_2_regression.py
function test_regression_data (line 16) | def test_regression_data(output_dir, xrcmp_n_cores, feature_ids):
function test_regression_metadata (line 53) | def test_regression_metadata(output_dir, xrcmp_n_cores):
FILE: tests/test_3_outputs.py
function test_output_has_nans (line 8) | def test_output_has_nans(output_dir, xrcmp_n_cores):
FILE: tests/test_supp_1_channel_only.py
function test_run_candidate_channel_only (line 99) | def test_run_candidate_channel_only(
function test_channel_only_matches_full (line 209) | def test_channel_only_matches_full(
function test_ncores_candidate_channel_only (line 271) | def test_ncores_candidate_channel_only(
function test_perfrestart_candidate_channel_only (line 371) | def test_perfrestart_candidate_channel_only(output_dir, xrcmp_n_cores, f...
FILE: tests/test_supp_2_nwm_output.py
function test_run_reference_nwm_output_sim (line 15) | def test_run_reference_nwm_output_sim(
function test_run_candidate_nwm_output_sim (line 74) | def test_run_candidate_nwm_output_sim(
function test_regression_metadata_nwm_output (line 134) | def test_regression_metadata_nwm_output(output_dir):
FILE: tests/utilities.py
function wait_job (line 8) | def wait_job(sim):
function eprint (line 21) | def eprint(*args, **kwargs):
function print_diffs (line 31) | def print_diffs(diffs):
function plot_diffs (line 46) | def plot_diffs(output_dir, candidatename, referencename, testname, featu...
function make_sim (line 99) | def make_sim(domain_dir,
FILE: tests/utils/compare_output.py
function plot_diffs (line 6) | def plot_diffs(output_dir, candidatename, referencename, testname, featu...
FILE: tests/utils/xrcmp.py
function calc_stats (line 41) | def calc_stats(arg_tuple):
function xrcmp (line 136) | def xrcmp(
function parse_arguments (line 277) | def parse_arguments():
FILE: tests/utils/xrnan.py
function check_nans (line 10) | def check_nans(arg_dict):
function xrnan (line 23) | def xrnan(
function parse_arguments (line 63) | def parse_arguments():
Copy disabled (too large)
Download .json
Condensed preview — 740 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (10,277K chars).
[
{
"path": ".github/CODESTYLE.md",
"chars": 13804,
"preview": "# WRF-Hydro Fortran Conventions Guide\n\n# Fortran standard\nNew code contributions should be written to at least\n[Fortran "
},
{
"path": ".github/CONTRIBUTING.md",
"chars": 9828,
"preview": "# Contributing to WRF-Hydro®\nAll bug reports, bug fixes, code, and documentation contributions are welcome and encourage"
},
{
"path": ".github/ISSUE_TEMPLATE/bug_report.md",
"chars": 525,
"preview": "---\nname: Bug report\nabout: Create a report to help us improve\ntitle: ''\nlabels: ''\nassignees: ''\n\n---\n\n**Describe the b"
},
{
"path": ".github/PULL_REQUEST_TEMPLATE.md",
"chars": 845,
"preview": "TYPE: choose one of [bug fix, enhancement, new feature, feature removed, no impact, text only]\n\nKEYWORDS: approximately "
},
{
"path": ".github/workflows/test-pr.yml",
"chars": 17982,
"preview": "name: build\n\non:\n push:\n branches: [ main ]\n pull_request:\n branches: [ main ]\n\n # Allows you to run this workf"
},
{
"path": ".gitignore",
"chars": 418,
"preview": "*.o\n*.so\n*.so.*\n*.mod\n*.lst\n*~\nMakefile.comm\ndocs/_build/\nsrc/lib/*\nsrc/macros\nsrc/HRLDAS/user_build_options\n*exe\n/.proj"
},
{
"path": ".readthedocs.yaml",
"chars": 1037,
"preview": "# Read the Docs configuration file for Sphinx projects\n# See https://docs.readthedocs.io/en/stable/config-file/v2.html f"
},
{
"path": "CITATION.cff",
"chars": 4784,
"preview": "authors:\n - family-names: Gochis\n given-names: David\n orcid: 0000-0001-8668-4850\n # origin: technical doc\n - "
},
{
"path": "CMakeLists.txt",
"chars": 10242,
"preview": "cmake_minimum_required (VERSION 3.12)\ncmake_policy(SET CMP0074 NEW) # use xxxx_ROOT env vars\nif (NOT CMAKE_BUILD_TYPE)\n "
},
{
"path": "CODE_OF_CONDUCT.md",
"chars": 7533,
"preview": "# Contributor Code of Conduct\n\n## Our Pledge\nWe, as contributors, creators, stewards, and maintainers of WRF-Hydro® pled"
},
{
"path": "LICENSE.txt",
"chars": 5144,
"preview": "USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS AND CONDITIONS:\n\n1. License. Subject to these terms and condition"
},
{
"path": "NEWS.md",
"chars": 2321,
"preview": "# WRF-Hydro® v5.4.0 Release Notes\n\nPlease note that starting with WRF-Hydro v5.4, CMake is the preferred\nbuild system. T"
},
{
"path": "docs/BUILD.rst",
"chars": 5193,
"preview": "Build\n===========\n\n\nRequirements\n~~~~~~~~~~~~\n\n+------------+---------+\n|Compiler | Version |\n+============+========="
},
{
"path": "docs/Makefile",
"chars": 503,
"preview": "SOURCEDIR = userguide/\nBUILDDIR = _build/html\n\n# List all source files to track dependencies\nSOURCE_FILES = $(shell find"
},
{
"path": "docs/requirements.txt",
"chars": 17,
"preview": "sphinx_rtd_theme\n"
},
{
"path": "docs/userguide/_static/ug_theme.css",
"chars": 516,
"preview": ".wy-nav-content {\n max-width: 1000px !important;\n}\n\n.center {\n text-align: center;\n}\n\n.underline {\n text-decora"
},
{
"path": "docs/userguide/appendices.rest",
"chars": 162232,
"preview": ".. vim: syntax=rst\n.. include:: meta.rest\n.. role:: raw-html(raw)\n :format: html\n\nAPPENDICES\n==========\n\nThis section "
},
{
"path": "docs/userguide/conf.py",
"chars": 863,
"preview": "project = 'WRF-Hydro Modeling System'\nauthor = 'WRF-Hydro Team'\ncopyright = '2024, '+author\nversion = 'v5.4.0'\nrelease ="
},
{
"path": "docs/userguide/index.rest",
"chars": 4205,
"preview": ".. vim: syntax=rst\n.. include:: meta.rest\n\n.. image:: media/wrfhydro-banner.png\n :align: center\n\n===================="
},
{
"path": "docs/userguide/input-tables/Fulldom_hires.tsv",
"chars": 1345,
"preview": "VariableName\tDimensions\tDescription\tUnits\tNotes\r\nTOPOGRAPHY\tRouting grid\tTerrain grid or Digital Elevation Model (DEM).\t"
},
{
"path": "docs/userguide/input-tables/geo_em.tsv",
"chars": 730,
"preview": "VariableName\tDimensions\tDescription\tUnits\tNotes\r\nLU_INDEX\tLSM grid\tLand cover type\tCategorical\tHydro routing code uses t"
},
{
"path": "docs/userguide/input-tables/wrfinput.tsv",
"chars": 1648,
"preview": "VariableName\tDimensions\tDescription\tUnits\tNotes\r\nSMOIS\tLSM grid, soil layers\tInitial volumetric soil moisture content\tm3"
},
{
"path": "docs/userguide/introduction.rest",
"chars": 14879,
"preview": ".. vim: syntax=rst\n.. include:: meta.rest\n\n1. Introduction\n===============\n\nThe purpose of this technical note is to des"
},
{
"path": "docs/userguide/meta.rest",
"chars": 261,
"preview": ".. |version_short| replace:: 5.4\n.. |version_long| replace:: 5.4.0\n\n.. role:: center\n :class: center\n\n.. role:: under"
},
{
"path": "docs/userguide/model-code-config.rest",
"chars": 28222,
"preview": ".. vim: syntax=rst\n.. include:: meta.rest\n\n2. Model Code and Configuration Description\n================================="
},
{
"path": "docs/userguide/model-inputs-preproc.rest",
"chars": 47205,
"preview": ".. vim: syntax=rst\n.. include:: meta.rest\n\n5. Model inputs and preprocessing\n=================================\n\nThis cha"
},
{
"path": "docs/userguide/model-outputs.rest",
"chars": 20533,
"preview": ".. vim: syntax=rst\n.. include:: meta.rest\n\n.. _section-6.0:\n\n6. Description of Output Files from WRF-Hydro\n============="
},
{
"path": "docs/userguide/model-physics.rest",
"chars": 78507,
"preview": ".. vim: syntax=rst\n.. include:: meta.rest\n\n.. _section-3:\n\n3. Model Physics Description\n============================\n\nTh"
},
{
"path": "docs/userguide/nudging.rest",
"chars": 16677,
"preview": ".. vim: syntax=rst\n.. include:: meta.rest\n\n4. Streamflow Nudging Data Assimilation\n====================================="
},
{
"path": "docs/userguide/output-tables/CHANOBS_DOMAIN.csv",
"chars": 1132,
"preview": "Variable Name,Long Name,Description,Units,IO_ConfigOutputs_0,IO_ConfigOutputs_1,IO_ConfigOutputs_2,IO_ConfigOutputs_3,IO"
},
{
"path": "docs/userguide/output-tables/CHRTOUT_DOMAIN.csv",
"chars": 2482,
"preview": "Variable Name,Long Name,Description,Units,IO_ConfigOutputs_0,IO_ConfigOutputs_1,IO_ConfigOutputs_2,IO_ConfigOutputs_3,IO"
},
{
"path": "docs/userguide/output-tables/CHRTOUT_GRID.csv",
"chars": 955,
"preview": "Variable Name,Long Name,Description,Units,IO_ConfigOutputs_0,IO_ConfigOutputs_1,IO_ConfigOutputs_2,IO_ConfigOutputs_3,IO"
},
{
"path": "docs/userguide/output-tables/GWOUT_DOMAIN.csv",
"chars": 937,
"preview": "Variable Name,Long Name,Description,Units,IO_ConfigOutputs_0,IO_ConfigOutputs_1,IO_ConfigOutputs_2,IO_ConfigOutputs_3,IO"
},
{
"path": "docs/userguide/output-tables/LAKEOUT_DOMAIN.csv",
"chars": 1135,
"preview": "Variable Name,Long Name,Description,Units,IO_ConfigOutputs_0,IO_ConfigOutputs_1,IO_ConfigOutputs_2,IO_ConfigOutputs_3,IO"
},
{
"path": "docs/userguide/output-tables/LDASOUT_DOMAIN.csv",
"chars": 11934,
"preview": "Variable Name,Long Name,Description,Units,IO_ConfigOutputs_0,IO_ConfigOutputs_1,IO_ConfigOutputs_2,IO_ConfigOutputs_3,IO"
},
{
"path": "docs/userguide/output-tables/LSMOUT.csv",
"chars": 2252,
"preview": "Variable Name,Long Name,Description,Units,IO_ConfigOutputs_0,IO_ConfigOutputs_1,IO_ConfigOutputs_2,IO_ConfigOutputs_3,IO"
},
{
"path": "docs/userguide/output-tables/RTOUT_DOMAIN.csv",
"chars": 1430,
"preview": "Variable Name,Long Name,Description,Units,IO_ConfigOutputs_0,IO_ConfigOutputs_1,IO_ConfigOutputs_2,IO_ConfigOutputs_3,IO"
},
{
"path": "docs/userguide/references.rest",
"chars": 7168,
"preview": ".. vim: syntax=rst\n\nREFERENCES\n==========\n\nBelow are cited references in an alphabetical listing by author.\n\nBall, J. T."
},
{
"path": "src/.nwm_version",
"chars": 5,
"preview": "v3.1\n"
},
{
"path": "src/.version",
"chars": 7,
"preview": "v5.4.0\n"
},
{
"path": "src/CMakeLists.txt",
"chars": 10203,
"preview": "if(${PROJECT_NAME} STREQUAL \"WRF\")\n # additions that WRF-Hydro's top CMakeLists.txt handles\n add_compile_o"
},
{
"path": "src/CPL/CLM_cpl/Makefile",
"chars": 562,
"preview": "# Makefile \n#\n.SUFFIXES:\n.SUFFIXES: .o .F\n\nCLMOBJPATH = /d1/weiyu/scratch/merra_boulder\n\nCLM_MOD = -I $(CLMOBJPATH)/lnd/"
},
{
"path": "src/CPL/CLM_cpl/Makefile.cpl",
"chars": 112,
"preview": "# Makefile \n\nall:\n\t(cd ../../; make -f Makefile.comm)\n\t(make)\n\nclean:\n\t(cd ../../; make -f Makefile.comm clean)\n"
},
{
"path": "src/CPL/CLM_cpl/bat2.csh",
"chars": 905,
"preview": "#!/bin/csh -f\nmake -f Makefile.cpl\n\nrm -f /d1/weiyu/scratch/merra_boulder/run/ccsm.exe\ncd /d1/weiyu/scratch/merra_boulde"
},
{
"path": "src/CPL/CLM_cpl/cesm_cpl_compiling.csh",
"chars": 810,
"preview": "#!/bin/csh -f\ncd /raid/weiyu/scratch/clm4_ndhms/ccsm/obj\n\nmpif90 -o /d1/weiyu/scratch/clm4_ndhms/run/ccsm.exe ccsm_comp_"
},
{
"path": "src/CPL/CLM_cpl/clm_drv_HYDRO.F",
"chars": 139,
"preview": "subroutine clm_drv_HYDRO()\n use module_clm_HYDRO, only: clm_cpl_HYDRO\n implicit none\n call clm_cpl_HYDRO()\nend subrou"
},
{
"path": "src/CPL/CLM_cpl/module_clm_HYDRO.F",
"chars": 34246,
"preview": "\nmodule module_CLM_HYDRO\n use domainMod , only : ldomain\n use clmtype , only : clm3\n use clm_varpar "
},
{
"path": "src/CPL/LIS_cpl/Makefile",
"chars": 525,
"preview": "# Makefile \n#\n\n.SUFFIXES:\n.SUFFIXES: .o .F\nLIS_ROOT = ../../../..\n\nLIS_MOD = -I ../../mod -I$(LIS_ROOT)/make\ninclude $(L"
},
{
"path": "src/CPL/LIS_cpl/Makefile.cpl",
"chars": 126,
"preview": "# Makefile \n\nall:\n\t(cd ../../; make -f Makefile.comm)\n\t(make)\n\nclean:\n\t(make clean)\n\t(cd ../../; make -f Makefile.comm c"
},
{
"path": "src/CPL/LIS_cpl/lis_drv_HYDRO.F",
"chars": 296,
"preview": "\n!2345678\n subroutine lis_drv_HYDRO(n)\n use module_lis_HYDRO, only: lis_cpl_HYDRO\n implicit none"
},
{
"path": "src/CPL/LIS_cpl/module_lis_HYDRO.F",
"chars": 8596,
"preview": "\nmodule module_lis_HYDRO\n use noah271_lsmMod, only : noah271_struc\n! use LIS_coreMod, only : LIS_rc, LIS_domain, LI"
},
{
"path": "src/CPL/NUOPC_cpl/.gitignore",
"chars": 27,
"preview": "*.a\n*.mk\n*.mod\n*.o\nVERSION\n"
},
{
"path": "src/CPL/NUOPC_cpl/CMakeLists.txt",
"chars": 1589,
"preview": "### Library Prerequisites\nif (NOT TARGET esmf)\n find_package(ESMF MODULE REQUIRED)\nendif (NOT TARGET esmf)\n\n### Library"
},
{
"path": "src/CPL/NUOPC_cpl/Doxyfile",
"chars": 108243,
"preview": "# Doxyfile 1.8.12\n\n# This file describes the settings to be used by the documentation system\n# doxygen (www.doxygen.org)"
},
{
"path": "src/CPL/NUOPC_cpl/Makefile",
"chars": 9755,
"preview": "#\n# --- WRF-HYDRO makefile\n# --- Requires ESMVv7+\n# --- WRF-HYDRO ESMF component.\n#\n\n# ###############\n# Local Variables"
},
{
"path": "src/CPL/NUOPC_cpl/WRFHydro_ESMF_Extensions.F90",
"chars": 120882,
"preview": "!=========================================================================================\n! WRFHYDRO ESMF Extensions Mo"
},
{
"path": "src/CPL/NUOPC_cpl/WRFHydro_NUOPC_Cap.F90",
"chars": 69116,
"preview": "!>\n!! @mainpage NCAR's WRF-Hydro NUOPC Cap\n!! @author Daniel Rosen (daniel.rosen@noaa.gov)\n!! @author ESMF Support (esmf"
},
{
"path": "src/CPL/NUOPC_cpl/WRFHydro_NUOPC_Fields.F90",
"chars": 59672,
"preview": "#define FILENAME \"WRFHydro_NUOPC_Fields.F90\"\n#define MODNAME \"wrfhydro_nuopc_fields\"\n#include \"WRFHydro_NUOPC_Macros.h\"\n"
},
{
"path": "src/CPL/NUOPC_cpl/WRFHydro_NUOPC_Flags.F90",
"chars": 9408,
"preview": "#define FILENAME \"WRFHydro_NUOPC_Flags.F90\"\n#define MODNAME \"wrfhydro_nuopc_flags\"\n#include \"WRFHydro_NUOPC_Macros.h\"\n\nm"
},
{
"path": "src/CPL/NUOPC_cpl/WRFHydro_NUOPC_Gluecode.F90",
"chars": 42400,
"preview": "#define FILENAME \"WRFHydro_NUOPC_Gluecode\"\n#define MODNAME \"WRFHydro_NUOPC_Gluecode.F90\"\n#include \"WRFHydro_NUOPC_Macros"
},
{
"path": "src/CPL/NUOPC_cpl/WRFHydro_NUOPC_Macros.h",
"chars": 1773,
"preview": "!-------------------------------------------------------------------------------\n! NUOPC CPP Macros\n!-------------------"
},
{
"path": "src/CPL/NUOPC_cpl/analysis/ferret_NUOPC_import.jnl",
"chars": 4659,
"preview": " ! FERRET v6.96 Script\n ! >ferret -gif -script ferret_NUOPC_import.jnl [Grid File] [Restart File]\n ! Author: Daniel Rose"
},
{
"path": "src/CPL/NUOPC_cpl/analysis/ferret_NUOPC_mask.jnl",
"chars": 821,
"preview": " ! FERRET v6.96 Script\n ! >ferret -gif -script ferret_NUOPC_mask.jnl [Grid File]\n ! Author: Daniel Rosen\n ! Organization"
},
{
"path": "src/CPL/NUOPC_cpl/analysis/grid_NUOPC_CONUS.ncl",
"chars": 1731,
"preview": ";--------------------------------------------------\n; Output Grid on CONUS Map\n;----------------------------------------"
},
{
"path": "src/CPL/NUOPC_cpl/analysis/grid_NUOPC_Global.ncl",
"chars": 1471,
"preview": ";--------------------------------------------------\n; Output Grid on Global Map\n;---------------------------------------"
},
{
"path": "src/CPL/NoahMP_cpl/CMakeLists.txt",
"chars": 791,
"preview": "add_library(hydro_noahmp_cpl STATIC\n module_hrldas_HYDRO.F\n hrldas_drv_HYDRO.F\n)\n\ntarget_link_libraries(hy"
},
{
"path": "src/CPL/NoahMP_cpl/Makefile",
"chars": 678,
"preview": "# Makefile \n#\n.SUFFIXES:\n.SUFFIXES: .o .F\n\n\n\ninclude ../../macros\n\nMODFLAG = -I./ -I ../../MPP -I ../../mod\n\nOBJS "
},
{
"path": "src/CPL/NoahMP_cpl/hrldas_drv_HYDRO.F",
"chars": 18203,
"preview": "\n!2345678\n\n subroutine hrldas_drv_HYDRO(STC_io,SMC_io,SH2OX_io,infxsrt,sfcheadrt,soldrain,ii,jj,kk)\n use "
},
{
"path": "src/CPL/NoahMP_cpl/module_hrldas_HYDRO.F",
"chars": 9416,
"preview": "\nmodule module_HRLDAS_HYDRO\n\n! NDHMS module\n#ifdef MPP_LAND\n use module_mpp_land, only: global_nx, global_ny, decomp"
},
{
"path": "src/CPL/Noah_cpl/Makefile",
"chars": 648,
"preview": "# Makefile \n#\n.SUFFIXES:\n.SUFFIXES: .o .F\n\n\n\ninclude ../../macros\n\nMODFLAG = -I./ -I ../../MPP -I ../../mod\n\nOBJS "
},
{
"path": "src/CPL/Noah_cpl/hrldas_drv_HYDRO.F",
"chars": 10294,
"preview": "\n!2345678\n subroutine hrldas_drv_HYDRO(STC,SMC,SH2OX,infxsrt,sfcheadrt,soldrain,ii,jj,kk, qsgw)\n use modu"
},
{
"path": "src/CPL/Noah_cpl/module_hrldas_HYDRO.F",
"chars": 9444,
"preview": "\nmodule module_HRLDAS_HYDRO\n\n! NDHMS module\n#ifdef MPP_LAND\n use module_mpp_land, only: global_nx, global_ny, decomp"
},
{
"path": "src/CPL/WRF_cpl/CMakeLists.txt",
"chars": 656,
"preview": "add_library(hydro_wrf_cpl STATIC\n wrf_drv_HYDRO.F90\n module_wrf_HYDRO.F90\n)\n\nadd_dependencies(hydro_wrf_cp"
},
{
"path": "src/CPL/WRF_cpl/Makefile",
"chars": 649,
"preview": "# Makefile \n#\n.SUFFIXES:\n.SUFFIXES: .o .F90\n\n\n\ninclude ../../macros\n\nMODFLAG = -I./ -I ../../MPP -I ../../mod \n\nWR"
},
{
"path": "src/CPL/WRF_cpl/Makefile.cpl",
"chars": 132,
"preview": "# Makefile \n\nall:\n\t(cd ../../; make -f Makefile.comm BASIC)\n\t(make)\n\nclean:\n\t(make clean)\n\t(cd ../../; make -f Makefile."
},
{
"path": "src/CPL/WRF_cpl/module_wrf_HYDRO.F90",
"chars": 12440,
"preview": "\nmodule module_WRF_HYDRO\n\n#ifdef MPP_LAND\n use mpi\n use module_mpp_land, only: global_nx, global_ny, decompose_dat"
},
{
"path": "src/CPL/WRF_cpl/module_wrf_HYDRO_downscale.F90",
"chars": 16773,
"preview": "\nmodule module_WRF_HYDRO\n\n#ifdef MPP_LAND\n use module_mpp_land, only: global_nx, global_ny, decompose_data_real, &\n "
},
{
"path": "src/CPL/WRF_cpl/wrf_drv_HYDRO.F90",
"chars": 1260,
"preview": "\n!2345678\n!ywGW subroutine wrf_drv_HYDRO(HYDRO_dt,grid, config_flags, its,ite,jts,jte)\n subroutine wrf_drv_H"
},
{
"path": "src/Data_Rec/CMakeLists.txt",
"chars": 237,
"preview": "add_library(hydro_data_rec STATIC\n module_gw_gw2d_data.F90\n module_rt_inc.F90\n module_namelist_inc."
},
{
"path": "src/Data_Rec/Makefile",
"chars": 513,
"preview": "# Makefile\n#\n.SUFFIXES:\n.SUFFIXES: .o .F90\n\ninclude ../macros\n\nOBJS = \\\n\tmodule_namelist_inc.o \\\n\tmodule_namelist.o \\\n\tm"
},
{
"path": "src/Data_Rec/module_RT_data.F90",
"chars": 264,
"preview": "Module module_RT_data\n use module_rt_inc, only: rt_field\n implicit none\n\n integer, parameter :: max_domain=5\n ! "
},
{
"path": "src/Data_Rec/module_gw_gw2d_data.F90",
"chars": 1558,
"preview": "\nmodule module_gw_gw2d_data\n implicit none\n integer, parameter :: max_domain=5\n\n type gw_field\n integer :: ix"
},
{
"path": "src/Data_Rec/module_namelist.F90",
"chars": 36935,
"preview": "module module_namelist\n\n#ifdef MPP_LAND\n USE module_mpp_land\n#endif\n\n use module_hydro_stop, only: HYDRO_sto"
},
{
"path": "src/Data_Rec/module_namelist_inc.F90",
"chars": 5073,
"preview": "module module_namelist_inc\n implicit none\n type namelist_rt_field\n integer :: nsoil, SOLVEG_INITSWC\n rea"
},
{
"path": "src/Data_Rec/module_rt_inc.F90",
"chars": 15693,
"preview": "module module_rt_inc\n use overland_data\n use module_subsurface_data\n use module_subsurface_static_data\n use modu"
},
{
"path": "src/Debug_Utilities/CMakeLists.txt",
"chars": 165,
"preview": "# build the version static library\nadd_library(hydro_debug_utils STATIC\n debug_dump_variable.F90\n)\ntarget_link_li"
},
{
"path": "src/Debug_Utilities/Makefile",
"chars": 353,
"preview": "# Makefile\n#\n.SUFFIXES:\n.SUFFIXES: .o .F90\n\ninclude ../macros\n\nOBJS = \\\n\tdebug_dump_variable.o\n\nall:\t$(OBJS)\n\n.F90.o:\n\t@"
},
{
"path": "src/Debug_Utilities/debug_dump_variable.F90",
"chars": 2966,
"preview": "module debug_dump_variable\n#ifdef MPP_LAND\n use module_mpp_land\n#endif\n\n implicit none\n\n contains\n\n ! output"
},
{
"path": "src/Doc/link_to_documentation.txt",
"chars": 98,
"preview": "A technical description and user's guide can be found at:\nhttps://ral.ucar.edu/projects/wrf_hydro\n"
},
{
"path": "src/HYDRO_drv/CMakeLists.txt",
"chars": 365,
"preview": "# build the version static library\nadd_library(hydro_driver STATIC\n module_HYDRO_drv.F90\n)\n\ntarget_link_libraries"
},
{
"path": "src/HYDRO_drv/Makefile",
"chars": 590,
"preview": "# Makefile\n#\n.SUFFIXES:\n.SUFFIXES: .o .F90\n\ninclude ../macros\n\nOBJS = \\\n\tmodule_HYDRO_drv.o\nall:\t$(OBJS)\n\n.F90.o:\n\t@echo"
},
{
"path": "src/HYDRO_drv/module_HYDRO_drv.F90",
"chars": 75517,
"preview": "module module_HYDRO_drv\n#ifdef MPP_LAND\n use module_HYDRO_io, only: output_rt, mpp_output_chrt, mpp_output_lakes, mp"
},
{
"path": "src/IO/CMakeLists.txt",
"chars": 213,
"preview": "# build the orchestrator static library\nadd_library(hydro_netcdf_layer STATIC\n netcdf_layer.F90\n)\n\ntarget_link_li"
},
{
"path": "src/IO/Makefile",
"chars": 699,
"preview": "# Makefile\n#\n.SUFFIXES:\n.SUFFIXES: .o .F90\n\ninclude ../macros\n\nOBJS = \\\n\tnetcdf_layer.o\nall:\t$(OBJS)\n\n.F90.o:\n\t@echo \"\"\n"
},
{
"path": "src/IO/netcdf_layer.F90",
"chars": 3084,
"preview": "module netcdf_layer_base\n use netcdf\n use mpi\n implicit none\n\n type, abstract :: NetCDF_layer_\n procedure (nf90_"
},
{
"path": "src/Land_models/Noah/CHANGES",
"chars": 35409,
"preview": "2007-06-05:\n * Utility_programs/gribextract.c\n - Print warnings to stderr (not stdout).\n\n2007-06-06\n * Utility"
},
{
"path": "src/Land_models/Noah/CMakeLists.txt",
"chars": 64,
"preview": "add_subdirectory(\"Noah\")\nadd_subdirectory(\"Utility_routines\")\n\n\n"
},
{
"path": "src/Land_models/Noah/GRAPHICS/HORIZ/Makefile",
"chars": 1055,
"preview": "SHELL=/bin/sh\n.SUFFIXES:\t\n.SUFFIXES:\t.F .o .exe\nOBJS=\tmodule_plot2d_graphics.o \\\n\tmodule_2ddata.o \\\n\tkwm_date_utilities."
},
{
"path": "src/Land_models/Noah/GRAPHICS/HORIZ/kwm_date_utilities.F",
"chars": 22740,
"preview": "module kwm_date_utilities\ncontains\n subroutine geth_newdate (ndate, odate, idt)\n implicit none\n\n! From old date ('Y"
},
{
"path": "src/Land_models/Noah/GRAPHICS/HORIZ/kwm_string_utilities.F",
"chars": 2631,
"preview": "module kwm_string_utilities\n\ncontains\n\n subroutine strrep(string, rep1, rep2)\n ! In string 1, replace expression rep"
},
{
"path": "src/Land_models/Noah/GRAPHICS/HORIZ/lccone.F",
"chars": 433,
"preview": "subroutine lccone (fsplat,ssplat,sign,confac)\n real, parameter :: conv=0.01745329251994\n integer :: sign\n real :: fsp"
},
{
"path": "src/Land_models/Noah/GRAPHICS/HORIZ/llxy_generic.F",
"chars": 12361,
"preview": "subroutine lltoxy_generic (xlat,xlon,x,y,&\n project,dskm,reflat,reflon,refx,refy,&\n cenlon,truelat1,truelat2)\n\n!"
},
{
"path": "src/Land_models/Noah/GRAPHICS/HORIZ/module_2ddata.F",
"chars": 6357,
"preview": "module module_2ddata\n\n interface get_field\n module procedure get_field_2d ! , get_field_3d\n end interface\n\n type "
},
{
"path": "src/Land_models/Noah/GRAPHICS/HORIZ/module_plot2d_graphics.F",
"chars": 18914,
"preview": "module module_plot2d_graphics\n use module_2ddata\n\n type plt2d_parameters_type\n real :: contour_minimum\n real :"
},
{
"path": "src/Land_models/Noah/GRAPHICS/HORIZ/namelist.plt2d",
"chars": 8729,
"preview": "#\n# Possible values for plot_type:\n#\n# plot_type = \"contour\" :: Plain contour plot\n# plot_type = \"confill\" :"
},
{
"path": "src/Land_models/Noah/GRAPHICS/HORIZ/plt2d.F",
"chars": 6072,
"preview": "!\n! ############################################################################################################\n!\n\nprog"
},
{
"path": "src/Land_models/Noah/GRAPHICS/TIME_SERIES/Makefile",
"chars": 971,
"preview": "SHELL=/bin/sh\n.SUFFIXES:\t\n.SUFFIXES:\t.F .o .exe\nOBJS=\tmodule_plotts_graphics.o \\\n\tmodule_ptdata.o \\\n\tldasout_timeseries."
},
{
"path": "src/Land_models/Noah/GRAPHICS/TIME_SERIES/kwm_date_utilities.F",
"chars": 22418,
"preview": "module kwm_date_utilities\ncontains\n subroutine geth_newdate (ndate, odate, idt)\n implicit none\n\n! From old date ('Y"
},
{
"path": "src/Land_models/Noah/GRAPHICS/TIME_SERIES/kwm_string_utilities.F",
"chars": 2622,
"preview": "module kwm_string_utilities\n\ncontains\n\n subroutine strrep(string, rep1, rep2)\n ! In string 1, replace expression rep"
},
{
"path": "src/Land_models/Noah/GRAPHICS/TIME_SERIES/lccone.F",
"chars": 433,
"preview": "subroutine lccone (fsplat,ssplat,sign,confac)\n real, parameter :: conv=0.01745329251994\n integer :: sign\n real :: fsp"
},
{
"path": "src/Land_models/Noah/GRAPHICS/TIME_SERIES/ldasout_timeseries.F",
"chars": 8694,
"preview": "program ldasout_timeseries\n use kwm_date_utilities\n use module_plotts_graphics\n use pt_data\n implicit none\n\n intege"
},
{
"path": "src/Land_models/Noah/GRAPHICS/TIME_SERIES/llxy_generic.F",
"chars": 12356,
"preview": "subroutine lltoxy_generic (xlat,xlon,x,y,&\n project,dskm,reflat,reflon,refx,refy,&\n cenlon,truelat1,truelat2)\n\n!"
},
{
"path": "src/Land_models/Noah/GRAPHICS/TIME_SERIES/module_plotts_graphics.F",
"chars": 5699,
"preview": "module module_plotts_graphics\n\n type pltts_parameter_type\n character(len=256) :: info\n character(len=256) :: fl"
},
{
"path": "src/Land_models/Noah/GRAPHICS/TIME_SERIES/module_ptdata.F",
"chars": 6367,
"preview": "module pt_data\n\ncontains\n\n subroutine get_point_data(fldname, lat, lon, flnm_template, nowdate, &\n xval, level, i"
},
{
"path": "src/Land_models/Noah/GRAPHICS/TIME_SERIES/namelist.pltts",
"chars": 1535,
"preview": "\n&file_info\n ldasout_flnm_template = \"/d5/kmanning/WORKDIR/Run/<yyyymmddhh>.LDASOUT_DOMAIN1\"\n plot_startdate = \"200206"
},
{
"path": "src/Land_models/Noah/GRAPHICS/TIME_SERIES/namelist.pltts.sample",
"chars": 2102,
"preview": "\n&file_info\n ldasout_flnm_template = \"/wig/kmanning/more_hrldas/grib2/redesign/STEP/resetNO/<yyyymmddhh>.LDASIN_DOMAIN1"
},
{
"path": "src/Land_models/Noah/HRLDAS_COLLECT_DATA/GRIB_TABLES/GRIB1_PARAMETER_TABLE",
"chars": 25427,
"preview": "001 | Pressure | Pa | PRES\n002 | Pressu"
},
{
"path": "src/Land_models/Noah/HRLDAS_COLLECT_DATA/GRIB_TABLES/GRIB2_PARAMETER_TABLE",
"chars": 31086,
"preview": "############################################################################################\n+ 0 + 0 + Temperature\n#####"
},
{
"path": "src/Land_models/Noah/HRLDAS_COLLECT_DATA/Makefile",
"chars": 638,
"preview": "SHELL=/bin/sh\n.SUFFIXES:\t\n.SUFFIXES:\t.F .c .o .exe\n\ninclude ../user_build_options\n\nOBJS=\tconsolidate_grib.o\n\nCMD=\tconsol"
},
{
"path": "src/Land_models/Noah/HRLDAS_COLLECT_DATA/consolidate_grib.F",
"chars": 85283,
"preview": "program consolidate\n use module_grib\n use module_wrfinputfile\n use module_geo_em\n use kwm_grid_utilities\n use kwm_d"
},
{
"path": "src/Land_models/Noah/HRLDAS_COLLECT_DATA/lib/Makefile",
"chars": 1392,
"preview": "SHELL=/bin/sh\n.SUFFIXES:\t\n.SUFFIXES:\t.F .c .o\n\ninclude ../../user_build_options\n\nOBJS=\tmodule_grib2.o \\\n\tmodule_grib2_ta"
},
{
"path": "src/Land_models/Noah/HRLDAS_COLLECT_DATA/lib/arguments_module.F",
"chars": 9720,
"preview": "module arguments_module\n implicit none\n private\n public :: arg\n public :: print_help\n character(len=2400), public :"
},
{
"path": "src/Land_models/Noah/HRLDAS_COLLECT_DATA/lib/cio.c",
"chars": 8476,
"preview": "/*\n Program Name:\n Author(s)/Contact(s):\n Abstract:\n History Log:\n \n Usage:\n Parameters: <Specify typical argument"
},
{
"path": "src/Land_models/Noah/HRLDAS_COLLECT_DATA/lib/decode_jpeg2000.c",
"chars": 2496,
"preview": "/*\n Program Name:\n Author(s)/Contact(s):\n Abstract:\n History Log:\n \n Usage:\n Parameters: <Specify typical argument"
},
{
"path": "src/Land_models/Noah/HRLDAS_COLLECT_DATA/lib/gbytesys.F",
"chars": 16865,
"preview": "!-----------------------------------------------------------------------\n! Choice of computers\n!------------------"
},
{
"path": "src/Land_models/Noah/HRLDAS_COLLECT_DATA/lib/get_unused_unit.F",
"chars": 359,
"preview": "integer function get_unused_unit() result(iunit)\n implicit none\n integer :: i\n logical :: used\n\n do i = 11, 255\n "
},
{
"path": "src/Land_models/Noah/HRLDAS_COLLECT_DATA/lib/io_f.c",
"chars": 5908,
"preview": "/*\n Program Name:\n Author(s)/Contact(s):\n Abstract:\n History Log:\n \n Usage:\n Parameters: <Specify typical argument"
},
{
"path": "src/Land_models/Noah/HRLDAS_COLLECT_DATA/lib/kwm_date_utilities.F",
"chars": 22450,
"preview": "module kwm_date_utilities\ncontains\n subroutine geth_newdate (ndate, odate, idt)\n implicit none\n\n! From old date ('Y"
},
{
"path": "src/Land_models/Noah/HRLDAS_COLLECT_DATA/lib/kwm_grid_utilities.F",
"chars": 16296,
"preview": "module kwm_grid_utilities\n private :: oned\ncontains\n\n real function bint(array, ix, jx, x, y) result(val)\n implicit"
},
{
"path": "src/Land_models/Noah/HRLDAS_COLLECT_DATA/lib/kwm_string_utilities.F",
"chars": 2634,
"preview": "module kwm_string_utilities\n\ncontains\n\n subroutine strrep(string, rep1, rep2)\n ! In string 1, replace expression rep"
},
{
"path": "src/Land_models/Noah/HRLDAS_COLLECT_DATA/lib/kwm_timing_utilities.F",
"chars": 979,
"preview": "module kwm_timing_utilities\n implicit none\n integer, parameter :: kwm_timing_dimension = 100\n integer, dimension(kwm_"
},
{
"path": "src/Land_models/Noah/HRLDAS_COLLECT_DATA/lib/module_geo_em.F",
"chars": 5421,
"preview": "module module_geo_em\n!-------------------------------------------------------------\n! At the moment, all that is used fr"
},
{
"path": "src/Land_models/Noah/HRLDAS_COLLECT_DATA/lib/module_grib.F",
"chars": 15552,
"preview": "module module_grib\n use module_grib1\n use module_grib2\n use module_grib_common\n implicit none\n\n! Many of these are w"
},
{
"path": "src/Land_models/Noah/HRLDAS_COLLECT_DATA/lib/module_grib1.F",
"chars": 37938,
"preview": "module module_grib1\n use module_mapinfo\n use kwm_date_utilities\n use module_grib_common\n implicit none\n\n type grib1"
},
{
"path": "src/Land_models/Noah/HRLDAS_COLLECT_DATA/lib/module_grib2.F",
"chars": 71320,
"preview": "module module_grib2\n use module_mapinfo\n use module_grib2_tables\n use kwm_date_utilities\n use module_grib_common\n i"
},
{
"path": "src/Land_models/Noah/HRLDAS_COLLECT_DATA/lib/module_grib2_tables.F",
"chars": 10359,
"preview": "module module_grib2_tables\n\n type table_entry_struct\n integer :: product_discipline\n integer "
},
{
"path": "src/Land_models/Noah/HRLDAS_COLLECT_DATA/lib/module_grib_common.F",
"chars": 11715,
"preview": "module module_grib_common\n use module_mapinfo\n ! Low-level stuff used by both module_grib1 and module_grib2\n implicit"
},
{
"path": "src/Land_models/Noah/HRLDAS_COLLECT_DATA/lib/module_input_data_structure.F",
"chars": 843,
"preview": "module module_input_data_structure\n use module_llxy\n type input_data_type\n integer :: nx "
},
{
"path": "src/Land_models/Noah/HRLDAS_COLLECT_DATA/lib/module_llxy.F",
"chars": 73720,
"preview": "MODULE module_llxy\n\n! Module that defines constants, data structures, and\n! subroutines used to convert grid indices to "
},
{
"path": "src/Land_models/Noah/HRLDAS_COLLECT_DATA/lib/module_mapinfo.F",
"chars": 2072,
"preview": "module module_mapinfo\n\n implicit none\n\n type MapInfoStruct\n character(len=2) :: hproj ! Two-character abbr"
},
{
"path": "src/Land_models/Noah/HRLDAS_COLLECT_DATA/lib/module_wrfinputfile.F",
"chars": 11548,
"preview": "module module_wrfinputfile\n use netcdf\n use module_llxy\n implicit none\n ! Define a data structure for wrfinput file\n"
},
{
"path": "src/Land_models/Noah/HRLDAS_COLLECT_DATA/lib/swap4c.c",
"chars": 808,
"preview": "/*\n Program Name:\n Author(s)/Contact(s):\n Abstract:\n History Log:\n \n Usage:\n Parameters: <Specify typical argument"
},
{
"path": "src/Land_models/Noah/HRLDAS_COLLECT_DATA/lib/swap4f.F",
"chars": 3071,
"preview": "subroutine swap4f(in,nn)\n#if defined (__alpha) || defined (__linux) || defined (__G95__)\n! swaps bytes in groups of 4 to"
},
{
"path": "src/Land_models/Noah/HRLDAS_COLLECT_DATA/lib/trig_degrees.F",
"chars": 1419,
"preview": "!\n! Trigonometric functions which deal with degrees, rather than radians:\n!\n\nreal function sind(theta)\n implicit none\n "
},
{
"path": "src/Land_models/Noah/HRLDAS_COLLECT_DATA/run/Makefile",
"chars": 53,
"preview": "all:\n\t( cd ..; make )\n\nclean:\n\t( cd ..; make clean )\n"
},
{
"path": "src/Land_models/Noah/HRLDAS_COLLECT_DATA/run/README.namelist",
"chars": 12200,
"preview": "Some brief notes on the namelist.input file. For full details (e.g.,\nfile name template replacement strings, file forma"
},
{
"path": "src/Land_models/Noah/HRLDAS_COLLECT_DATA/run/namelist.example.complex",
"chars": 9144,
"preview": "&files\n\n STARTDATE = \"2001-01-01_00\"\n ENDDATE = \"2002-07-01_00\"\n DataDir = \"/d2/hrldas/raw\"\n \n "
},
{
"path": "src/Land_models/Noah/HRLDAS_COLLECT_DATA/run/namelist.example.simple",
"chars": 5400,
"preview": "&files\n STARTDATE = \"2001-01-01_00\"\n ENDDATE = \"2002-07-01_00\"\n DataDir = \"/wig/kmanning/HRLDAS"
},
{
"path": "src/Land_models/Noah/HRLDAS_COLLECT_DATA/run/namelist.input",
"chars": 6614,
"preview": "&files\n STARTDATE = \"2001-08-01_00\"\n ENDDATE = \"2001-09-01_00\"\n DataDir = \"/scholar/kmanning/mo"
},
{
"path": "src/Land_models/Noah/IO_code/Makefile",
"chars": 925,
"preview": "# Makefile \n#\n.SUFFIXES:\n.SUFFIXES: .o .F\n\ninclude ../user_build_options\n\nOBJS = \\\n\tNoah_hrldas_driver.o \\\n\tmodule_hrlda"
},
{
"path": "src/Land_models/Noah/IO_code/Noah_hrldas_driver.F",
"chars": 138355,
"preview": "program Noah_hrldas_driver\n\n USE module_hrldas_netcdf_io\n USE module_Noahlsm_utility\n USE module_sf_noahlsm\n USE mod"
},
{
"path": "src/Land_models/Noah/IO_code/module_hrldas_netcdf_io.F",
"chars": 108265,
"preview": "module module_hrldas_netcdf_io\n use module_date_utilities\n use netcdf\n#ifdef _PARALLEL_\n use mpi\n#endif\n implicit no"
},
{
"path": "src/Land_models/Noah/Makefile",
"chars": 1297,
"preview": "\nall: user_build_options\n\t(cd Utility_routines;\t\tmake)\n\t(cd Noah;\t\t\tmake)\n\t(cd IO_code;\t\t\tmake)\n\t(cd Run;\t\t\tmake -f Make"
},
{
"path": "src/Land_models/Noah/Noah/CMakeLists.txt",
"chars": 80,
"preview": "add_library(noah STATIC\n module_sf_urban.F\n module_sf_noahlsm.F\n)\n"
},
{
"path": "src/Land_models/Noah/Noah/Makefile",
"chars": 483,
"preview": "# Makefile \n#\n.SUFFIXES:\n.SUFFIXES: .o .F\n\ninclude ../user_build_options\n\nOBJS = \\\n\tmodule_sf_noahlsm.o \\\n\tmodule_sf_urb"
},
{
"path": "src/Land_models/Noah/Noah/module_sf_noahlsm.F",
"chars": 208716,
"preview": "MODULE module_sf_noahlsm\n USE module_model_constants\n\n! REAL, PARAMETER :: CP = 1004.5\n REAL, PARAMETER :: R"
},
{
"path": "src/Land_models/Noah/Noah/module_sf_noahlsm.F.org",
"chars": 200281,
"preview": "MODULE module_sf_noahlsm\n USE module_model_constants\n\n! REAL, PARAMETER :: CP = 1004.5\n REAL, PARAMETER :: R"
},
{
"path": "src/Land_models/Noah/Noah/module_sf_urban.F",
"chars": 101758,
"preview": "MODULE module_sf_urban\n\n!===============================================================================\n! Single-La"
},
{
"path": "src/Land_models/Noah/Run/GENPARM.TBL",
"chars": 261,
"preview": "General Parameters\nSLOPE_DATA\n9\n0.1 \n0.6\n1.0\n0.35\n0.55\n0.8\n0.63\n0.0\n0.0\nSBETA_DATA\n-2.0\nFXEXP_DATA\n2.0\nCSOIL_DATA\n2.00E+"
},
{
"path": "src/Land_models/Noah/Run/LANDUSE.TBL",
"chars": 15022,
"preview": "OLD\n13,2, 'ALBD SLMO SFEM SFZ0 THERIN SCFX SFHC '\nSUMMER\n1, 18., .05, .88, 50., 3., 1.22, 18."
},
{
"path": "src/Land_models/Noah/Run/Makefile",
"chars": 783,
"preview": ".SUFFIXES:\n.SUFFIXES: .o .f\n\ninclude ../user_build_options\ninclude ../../../macros\n\nOBJS = \\\n\t../IO_code/Noah_hrldas_dri"
},
{
"path": "src/Land_models/Noah/Run/SOILPARM.TBL",
"chars": 4399,
"preview": "Soil Parameters\nSTAS\n19,1 'BB DRYSMC F11 MAXSMC REFSMC SATPSI SATDK SATDW WLTSMC QTZ '"
},
{
"path": "src/Land_models/Noah/Run/URBPARM.TBL",
"chars": 8528,
"preview": "# The parameters in this table may vary greatly from city to city.\n# The default values are probably not appropriate for"
},
{
"path": "src/Land_models/Noah/Run/VEGPARM.TBL",
"chars": 11511,
"preview": "Vegetation Parameters\nUSGS\n27,1, 'SHDFAC NROOT RS RGL HS SNUP MAXALB LAIMIN LAIMAX EMISSMIN EMISSM"
},
{
"path": "src/Land_models/Noah/Utility_programs/Makefile",
"chars": 1727,
"preview": "SHELL=/bin/sh\n.SUFFIXES:\t\n.SUFFIXES:\t.F .c .o .exe\n\ninclude ../user_build_options\n\n# OBJS=\thrldas_extract_point.o \\\n# \tm"
},
{
"path": "src/Land_models/Noah/Utility_programs/gcip_sw_to_grib/Makefile",
"chars": 1149,
"preview": ".SUFFIXES:\n.SUFFIXES: .F .c .o\n\ninclude ../../user_build_options\n\nOBJS=\tcio.o \\\n\tgbytesys.o \\\n\tmodule_date_utilities.o \\"
},
{
"path": "src/Land_models/Noah/Utility_programs/gcip_sw_to_grib/srb_daily_to_grib.F",
"chars": 66310,
"preview": "!*****************************************************************************!\n! "
},
{
"path": "src/Land_models/Noah/Utility_programs/gcip_sw_to_grib/srb_monthly_to_grib.F",
"chars": 67472,
"preview": "!*****************************************************************************!\n! "
},
{
"path": "src/Land_models/Noah/Utility_programs/geth_newdate.c",
"chars": 8203,
"preview": "/*\n Program Name:\n Author(s)/Contact(s):\n Abstract:\n History Log:\n \n Usage:\n Parameters: <Specify typical argument"
},
{
"path": "src/Land_models/Noah/Utility_programs/gribbyte.c",
"chars": 11635,
"preview": "/*\n Program Name:\n Author(s)/Contact(s):\n Abstract:\n History Log:\n \n Usage:\n Parameters: <Specify typical argument"
},
{
"path": "src/Land_models/Noah/Utility_programs/gribedition.c",
"chars": 2360,
"preview": "/*\n Program Name:\n Author(s)/Contact(s):\n Abstract:\n History Log:\n \n Usage:\n Parameters: <Specify typical argument"
},
{
"path": "src/Land_models/Noah/Utility_programs/gribextract.c",
"chars": 21424,
"preview": "/*\n Program Name:\n Author(s)/Contact(s):\n Abstract:\n History Log:\n \n Usage:\n Parameters: <Specify typical argument"
},
{
"path": "src/Land_models/Noah/Utility_programs/hrldas_extract_point.F",
"chars": 17288,
"preview": "module module_hrldas_netcdf\n use netcdf\n implicit none\n\n character(len=2), dimension(3), parameter :: projection_list"
},
{
"path": "src/Land_models/Noah/Utility_programs/lccone.F",
"chars": 433,
"preview": "subroutine lccone (fsplat,ssplat,sign,confac)\n real, parameter :: conv=0.01745329251994\n integer :: sign\n real :: fsp"
},
{
"path": "src/Land_models/Noah/Utility_programs/llxy_generic.F",
"chars": 13609,
"preview": "module module_llxy_generic\n\n real, parameter, private :: pi = 3.141592653589793 ! you know! pi = 180 degrees\n real,"
},
{
"path": "src/Land_models/Noah/Utility_programs/modify_wrfinput.F",
"chars": 17665,
"preview": "module module_modify_wrfinput\n use netcdf\n\ncontains\n\n subroutine find_dimension(ncid, name, idim)\n !\n ! Given an"
},
{
"path": "src/Land_models/Noah/Utility_programs/vectorize/check_test.ncl",
"chars": 719,
"preview": "load \"$NCARG_ROOT/lib/ncarg/nclex/gsun/gsn_code.ncl\"\n\nbegin\n\nvar2check = \"HFX\"\ntwodlist = systemfunc(\"ls /qnap/yingz/tes"
},
{
"path": "src/Land_models/Noah/Utility_programs/vectorize/check_wrfinput.ncl",
"chars": 6336,
"preview": "load \"$NCARG_ROOT/lib/ncarg/nclex/gsun/gsn_code.ncl\"\n\nbegin\n\n;;;;;;;;;;;;\n; GEO_EM check\n;;;;;;;;;;;;\nprint(\"GEO_EM che"
},
{
"path": "src/Land_models/Noah/Utility_programs/vectorize/namelist.vectorize",
"chars": 133,
"preview": "&vectorize_namelist\n full_geo_em = \"../../wps_lambert/geo_em.d01.nc\"\n vector_directory = \"./vector/\"\n keep_lu_list = 1,2"
},
{
"path": "src/Land_models/Noah/Utility_programs/vectorize/procedure.txt",
"chars": 632,
"preview": "Procedure is basically:\n\n1. vectorize_geo_em.f90 (not really necessary if you already have the\nLDASIN files, but I did i"
},
{
"path": "src/Land_models/Noah/Utility_programs/vectorize/vectorize.perl",
"chars": 1916,
"preview": "#!/usr/bin/perl\n\n# Set the number of days you want to run the system\n$day_start = 32; # 305=Nov 1\n$day_end = 273; # "
},
{
"path": "src/Land_models/Noah/Utility_programs/vectorize/vectorize_geo_em.F",
"chars": 13611,
"preview": "program vectorize_geo_em\n use netcdf\n implicit none\n\n integer :: ncid_in, ncid_out\n integer :: iret,iloc,ilat,ilon\n "
},
{
"path": "src/Land_models/Noah/Utility_programs/vectorize/vectorize_ldasin.F",
"chars": 29236,
"preview": "program vectorize_ldasin\n use netcdf\n implicit none\n\n integer :: ncid_in, ncid_out\n integer :: iret,iloc,ilat,ilon\n "
},
{
"path": "src/Land_models/Noah/Utility_programs/vectorize/vectorize_wrfinput.f90",
"chars": 8931,
"preview": "program vectorize_wrfinput\n use netcdf\n implicit none\n\n integer :: ncid_in, ncid_out\n integer :: iret,iloc,ilat,ilon"
},
{
"path": "src/Land_models/Noah/Utility_routines/CMakeLists.txt",
"chars": 188,
"preview": "add_library(noah_util STATIC\n kwm_string_utilities.F\n module_date_utilities.F\n module_model_constan"
},
{
"path": "src/Land_models/Noah/Utility_routines/Makefile",
"chars": 540,
"preview": "# Makefile \n#\n.SUFFIXES:\n.SUFFIXES: .o .F\n\ninclude ../user_build_options\n\nOBJS = \\\n\tmodule_date_utilities.o \\\n\tmodule_mo"
},
{
"path": "src/Land_models/Noah/Utility_routines/kwm_string_utilities.F",
"chars": 2634,
"preview": "module kwm_string_utilities\n\ncontains\n\n subroutine strrep(string, rep1, rep2)\n ! In string 1, replace expression rep"
},
{
"path": "src/Land_models/Noah/Utility_routines/module_Noahlsm_utility.F",
"chars": 2842,
"preview": "MODULE module_Noahlsm_utility\n\n REAL, PARAMETER :: CP = 1004.5, RD = 287.04, SIGMA = 5.67E-8, &\n "
},
{
"path": "src/Land_models/Noah/Utility_routines/module_date_utilities.F",
"chars": 26946,
"preview": "module Module_Date_utilities\ncontains\n subroutine geth_newdate (ndate, odate, idt)\n implicit none\n\n ! From old d"
},
{
"path": "src/Land_models/Noah/Utility_routines/module_model_constants.F",
"chars": 5728,
"preview": "!WRF:MODEL_LAYER:CONSTANTS\n!\n\n MODULE module_model_constants\n\n ! 2. Following are constants for use in defining real "
},
{
"path": "src/Land_models/Noah/Utility_routines/module_sfcdif_wrf.F",
"chars": 11894,
"preview": "! Note: Initialize USTAR to 0.1 at start of HRLDAS driver.\n! USTAR subsequently gets updated.\n\nmodule module_sfc"
},
{
"path": "src/Land_models/Noah/Utility_scripts/modify_wrfinput.ncl",
"chars": 713,
"preview": "\n\n; Run with, for example:\n; ncl ldasout=\\\"2003070412.LDASOUT_DOMAIN1\\\" wrfinput=\\\"wrfinput_d01\\\" modify_wrfinput.ncl"
},
{
"path": "src/Land_models/Noah/Utility_scripts/nam_3d_gribextract.csh",
"chars": 3003,
"preview": "#!/bin/tcsh -ef\n\n#\n# This script is intended primarily as an example of how to use the gribextract\n# program to extrac"
},
{
"path": "src/Land_models/Noah/Utility_scripts/ncep_rad_gribextract.csh",
"chars": 3100,
"preview": "#!/bin/tcsh -ef\n\n#\n# This script is intended primarily as an example of how to use the gribextract\n# program to extrac"
},
{
"path": "src/Land_models/Noah/Utility_scripts/ndas_surface_gribextract.csh",
"chars": 13591,
"preview": "#!/bin/tcsh -f\n\n#\n# This script is intended primarily as an example of how to use the gribextract\n# program to extrac"
},
{
"path": "src/Land_models/Noah/VERIFICATION/Fluxes_statistics/Makefile",
"chars": 970,
"preview": ".SUFFIXES:\t.F .o\n#\nOBJS=\tmodule_hd.o \\\n\tfluxes_statistics.o \\\n\tkwm_date_utilities.o \\\n\tkwm_plot_utilities.o \\\n\tkwm_grid_"
},
{
"path": "src/Land_models/Noah/VERIFICATION/Fluxes_statistics/fluxes_statistics.F",
"chars": 43997,
"preview": "program fluxes_statistics\n use kwm_date_utilities\n use kwm_grid_utilities\n use kwm_plot_utilities, only : kwm_init_nc"
},
{
"path": "src/Land_models/Noah/VERIFICATION/Fluxes_statistics/get_unused_unit.F",
"chars": 359,
"preview": "integer function get_unused_unit() result(iunit)\n implicit none\n integer :: i\n logical :: used\n\n do i = 11, 255\n "
},
{
"path": "src/Land_models/Noah/VERIFICATION/Fluxes_statistics/kwm_date_utilities.F",
"chars": 22450,
"preview": "module kwm_date_utilities\ncontains\n subroutine geth_newdate (ndate, odate, idt)\n implicit none\n\n! From old date ('Y"
},
{
"path": "src/Land_models/Noah/VERIFICATION/Fluxes_statistics/kwm_grid_utilities.F",
"chars": 18411,
"preview": "module kwm_grid_utilities\n private :: oned\ncontains\n\n real function bint(array, ix, jx, x, y) result(val)\n implicit"
}
]
// ... and 540 more files (download for full content)
About this extraction
This page contains the full source code of the NCAR/wrf_hydro_nwm_public GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 740 files (9.5 MB), approximately 2.5M tokens, and a symbol index with 104 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.