150 likes | 519 Views
Unified Noah LSM Code at NCAR. Kevin W. Manning Fei Chen National Center for Atmospheric Research Boulder, CO. Goals. Enhance communication and coordination between NCEP and NCAR LSM groups Better serve the community of users Developmental code base(s) maintained via CVS
E N D
Unified Noah LSM Code at NCAR Kevin W. Manning Fei Chen National Center for Atmospheric Research Boulder, CO
Goals • Enhance communication and coordination between NCEP and NCAR LSM groups • Better serve the community of users • Developmental code base(s) maintained via CVS • Documented developmental effort • Maintain compatibility between coupled and uncoupled applications of Noah LSM
CVS Repository • Allow NCEP and NCAR easy access to each other’s development code • Currently limited to NCAR and NCEP groups • Not a public CVS repository • Regularly-updated repository to be made available to the community via web site or ftp site • Simple repository structure • CVS can get complicated • Regular backup and archival of CVS repository
CVS Repository • NCAR development tree • NOAHLSM_NCARDEV • HRLDAS • HRLDAS_COLLECT_DATA • NCEP development tree • NOAHLSM_NCEPDEV • Other? • Official release • NOAHLSM_x. x. x
NCAR development efforts • Code organization • Fortran modules • Noah LSM in WRF-ARW (NCAR’s coupled implementation) • Noah LSM in HRLDAS (NCAR’s uncoupled implementation)
module_sf_noahlsm_param_init call soil_veg_gen_parm subroutine soil_veg_gen_parm read VEGPARM, SOILPARM, and GENPARM Assign table array of soil, vegetation, and general parameters Noah LSM code organization module_sf_noahlsm.F module_noahlsm_globals use module_model_constants (WRF module) declare soil, veg, general parameters define constants module_sfc_noahlsm use module_noahlsm_globals subroutine lsm used exclusively in WRF call redprm call sflx Vegetation parameters: ALB Z0BRD SHDFAC NROOT RSMIN RGL HS SNUP XLAI SNOALB_NOAH EMISSI TOPT CMCMAX CFACTR RSMAX RTDIS Soil parameters BEXP SMCDRY F1 SMCMAX SMCREF PSISAT DKSAT DWSAT SMCWLT QUARTZ “General” parameters SLOPE SBETA FXEXP CSOIL SALP REFDK REFKDT ZBOT CZIL PTU KDT FRZFACT subroutine lsminit used exclusively in WRF use module_sf_noahlsm_param_init call soil_veg_gen_parm call frh2o subroutine redprm use module_sf_noahlsm_param_init assign point soil, vegetation, and general parameters subroutine sfcdif_off used exclusively in uncoupled mode (HRLDAS) subroutine SFLX Noah LSM core physics calls many subroutines see the SFLX calling tree
Fortran modules • Why? • Organized related tasks and routines • Wider scope for widely-used variables • Simplify subroutine argument lists • Modules already used extensively in WRF • Difficulties? • Wider scope of variables is not obvious in the code • Compile-time dependencies
Module variables • Vegetation parameters • Soil parameters • “General” parameters • Physical constants • Many inherited from WRF module module_model_constants • “Other”
CALL REDPRM SFLX -- Noah LSM Noah LSM subroutine SFLX and sub-routines CSNOW – Compute snow thermal conductivity SNOW_NEW – Compute snow depth and density to account for new snowfall SNFRAC – Compute the snow fraction (0-1) ALCALC – compute albedo including snow effect TDFCND – Compute soil thermal diffusivity and conductivity SNOWZ0 – Compute total roughness length over snow PENMAN – Compute potential evaporation and “various partial sums” CANRES – compute the canopy resistance, F(SW,T,Q,SMC) NOPAC/SNOPAC – Compute soil moisture and heat fluxes and update SMC and STC SMFLX Calculate soil moisture flux. Update SMC, CMC, SH2O SHFLX Update soil T based on thermal diffusion eqn, and update frozen SMC based on T TDFCND (NOPAC only) Compute thermal diffusivity and conductivity of soil EVAPO Calculate evapotranspiration SNOWPACK (SNOPAC only) Compute compaction of snow SRT RHS of time tendency term for soil water diffusion equation DEVAP Calculate direct soil evaporation HRTICE RHS of time dend. term of soil thermal diffusion eqn in the case of sea ice HRT RHS of time tendency term of the soil thermal diffusion equation HSTEP Update the soil temperature field WDFCND Compute soil water diffusivity and soil hydraulic conductivity TBND Compute T on the boundary of a layer by interp. from layer T's TRANSP Compute transpiration according to vegetation class ROSR12 Solve a tri-diagonal matrix problem (to what end?) TMPAVG Compute soil-layer avg T in a freezing or thawing layer SSTEP Update SMC and CMC TDFCND Compute thermal diffusivity and conductivity of soil ROSR12 Solve a tri-diagonal matrix problem (to what end?) SNKSRC compute sink/source term of thermal diffusion eqn FRH20 Compute liquid SMC in ground colder than 273.15 K
Call REDPRM • Formerly inside SFLX, moved to before call to SFLX • Easier for use in uncoupled applications • Easier for user to override default values of soil and vegetation parameters with values from a 2D “map”
Uncoupled implementation example, as in NCAR HRLDAS Noah_hrldas_driver.F Main routine WRF-ARW subroutine LSM READFORC_HRLDAS (IO_code/module_hrldas_netcdf_io.F) MODULE module_hrldas_netcdf_io reads the forcing fields P,T,Q,U,V,LW,SW,PCP,LAI,FPAR READLAND_HRLDAS (IO_code/module_hrldas_netcdf_io.F) MODULE module_hrldas_netcdf_io reads geographic information: Terrain, lat/lon, veg/soil maps READINIT_HRLDAS (IO_code/module_hrldas_netcdf_io.F) MODULE module_hrldas_netcdf_io read initial soil conditions: Soil moisture, Soil T, Canopy water, Snow depth, Skin T CALTMP (Noah_code/module_Noahlsm_utility.F) MODULE module_Noahlsm_utility compute some termerature variables for use in CALHUM and SFLX READVEG_HRLDAS (IO_code/module_hrldas_netcdf_io.F) MODULE module_hrldas_netcdf_io read vegetation conditions: FPAR, LAI CALHUM (Noah_code/module_Noahlsm_utility.F) MODULE module_Noahlsm_utility compute saturation mixing ratio Qsat and d/dT of Qsat SFCDIF_OFF (Noah_code/module_Noahlsm.F) MODULE module_sf_Noahlsm Calculate surface exchange coefficients CM and CH HRLDAS I/O tasks OUTPUT_HRLDAS (IO_code/module_hrldas_netcdf_io.F) MODULE module_hrldas_netcdf_io write out LSM output Special offline computations Coupled implementation example, as in WRF-ARW WRF-ARW subroutine LSM Initialization tasks Time Loop LSM_PARM_INIT (Noah_code/module_Noahlsm_param_init.F) MODULE module_sf_Noahlsm_param_init reads tables GENPARM SOILPARM, and VEGPARM I,J Loop REDPRM (Noah_code/module_Noahlsm.F) MODULE module_sf_Noahlsm Assign values of soil/veg parameters from the tables according to soil/veg categories of this particular (I,J) point Key: <SUBROUTINE NAME> (<source code file>) MODULE <F90 module name> <description> SFLX (Noah_code/module_Noahlsm.F) MODULE module_sf_noahlsm Noah LSM code WRF Noah LSM code
New • Improved urban treatment • 2-season tables • Date or season information needed in Noah LSM code • In progress • Water routing