# Presentation: 404125

## Progress Report on the Implementation of NOAH LSM Into NCEP GFS Model

- Jan 13, 2003

## GBPHYS routine (Opr.)

- Approximate diurnal cycle
- progtm - surface energy balance
- Vertical diffusion
- Gravity wave drag
- Deep convection
- Shallow convection
- Non-convective precipitation
- RAIN=RAINL + RAINC
- Snow-rain detection
- progt2 - surface water balance

**snowmt**

**rainc**

**rainl**

**snowmt**
**rain**

- 1-step LSM

## Code Revision #1  Change precip, tmp850 from local variables to state variables

- Approximate diurnal cycle
- Surface energy balance
- Vertical diffusion
- Gravity wave drag
- Deep convection
- Shallow convection
- Non-convective precipitation
- RAIN=RAINL + RAINC
- Snow-rain detection
- Surface water balance

- Approximate diurnal cycle
- Surface energy balance
- Vertical diffusion
- Gravity wave drag
- Deep convection
- Shallow convection
- Non-convective precipitation
- RAIN=RAINL + RAINC
- Snow-rain detection
- Save TPRCP, TMP850
- Surface water balance

- 1-step LSM

## Code Revision #2  Merge progtm and progt2

- Approximate diurnal cycle
- Surface energy balance
- Vertical diffusion
- Gravity wave drag
- Deep convection
- Shallow convection
- Non-convective precipitation
- RAIN=RAINL + RAINC
- Snow-rain detection
- Save TPRCP, TMP850
- Surface water balance

- Approximate diurnal cycle
- Surface energy balance
- Surface water balance
- Vertical diffusion
- Gravity wave drag
- Deep convection
- Shallow convection
- Non-convective precipitation
- RAIN=RAINL + RAINC
- Snow-rain detection
- Save TPRCP, TMP850

- 1-step LSM

## Code Revision #3  Remove the calculations of surface exchange coefficients and update of surface layer properties from progtm routine

- Approximate diurnal cycle
- Surface energy balance
- Surface water balance
- Vertical diffusion
- Gravity wave drag
- Deep convection
- Shallow convection
- Non-convective precipitation
- RAIN=RAINL + RAINC
- Snow-rain detection
- Save TPRCP, TMP850

- Approximate diurnal cycle
- Surface exchange coefficients
- Surface energy balance
- Surface water balance
- Update surface layer properties
- Vertical diffusion
- Gravity wave drag
- Deep convection
- Shallow convection
- Non-convective precipitation
- RAIN=RAINL + RAINC
- Snow-rain detection
- Save TPRCP, TMP850

- 1-step LSM

## Code Revision #4 Handling of surface energy/water balance is consolidated

- Approximate diurnal cycle
- Surface exchange coefficients
- Surface energy balance
- Surface water balance
- Update surface layer properties
- Vertical diffusion
- Gravity wave drag
- Deep convection
- Shallow convection
- Non-convective precipitation
- RAIN=RAINL + RAINC
- Snow-rain detection
- Save TPRCP, TMP850

- Approximate diurnal cycle
- Surface exchange coefficients
- Surface energy/water balance
- Update surface layer properties
- Vertical diffusion
- Gravity wave drag
- Deep convection
- Shallow convection
- Non-convective precipitation
- RAIN=RAINL + RAINC
- Snow-rain detection
- Save TPRCP, TMP850

- 1-step LSM

## Code Revision #5 Computations over land, sea ice, ocean are separated

- Approximate diurnal cycle
- Surface exchange coefficients
- Surface energy/water balance
- Update surface layer properties
- Vertical diffusion
- Gravity wave drag
- Deep convection
- Shallow convection
- Non-convective precipitation
- RAIN=RAINL + RAINC
- Snow-rain detection
- Save TPRCP, TMP850

- IF SLMASK = 0. call sfc_ocean
- IF SLMASK = 1. call sfc_mrfx
- IF SLMASK = 2. call sfc_mrfx

- 1-step LSM

## Summary - major changes made on MRF

- I.	Changes needed for 1step LSM
- Precip and T850 become state variables
- Two step land models (progtm, progt2) are merged
- Computation of surface exchange coefficients and update of surface layer properties are moved outside land package
- Calculations of surface energy/water balance over land, sea, and sea ice are separated

- 1-step LSM

## 2-step LSM versus 1-step LSM

- Approximate diurnal cycle
- Surface exchange coefficients
- Surface energy/water balance
- Update surface layer properties
- Vertical diffusion
- Gravity wave drag
- Deep convection
- Shallow convection
- Non-convective precipitation
- RAIN=RAINL + RAINC
- Snow-rain detection
- Save TPRCP/T850

- Approximate diurnal cycle
- Surface energy balance
- Vertical diffusion
- Gravity wave drag
- Deep convection
- Shallow convection
- Non-convective precipitation
- RAIN=RAINL + RAINC
- Snow-rain detection
- Save TPRCP/T850
- Surface water balance

- SNOWMT(T)
- TPRCP(T)

- SNOWMT(T)
- TPRCP(T-1)

- 1-step LSM

## Code Revision #6 Plug in NOAH LSM

- Approximate diurnal cycle
- Surface exchange coefficients
- Surface energy/water balance
- Update surface layer properties
- Vertical diffusion
- Gravity wave drag
- Deep convection
- Shallow convection
- Non-convective precipitation
- RAIN=RAINL + RAINC
- Snow-rain detection
- Save TPRCP, TMP850

- IF SLMASK = 0. call sfc_ocean
- IF SLMASK = 1. call sfc_noah
- IF SLMASK = 2. call sfc_mrfx

- Move to land package

- Noah LSM

## Soil state variables

- Configuration of soil layers
- 	OSU		ZSOIL(1:2) = -0.1, -2.0 meter
- 			ZSOIL(1:4) = -0.1, -0.73, -1.36, -2.0 meter
- 	NOAH	ZSOIL(1:4) = -0.1, -0.4, -1.0, -2.0 meter
- Code Modification
- Change the number of soil layers (from 2 to 4)
- Modify soil layer configuration
- New state variable, SLC (Liquid soil moisture), is computed
- Initialization from ‘cold start’ (i.e., 2 soil layers, no SLC)
- SMC(1) = SMCI(1) and SMC(2:4) = SMCI(2)
- STC(1) = STCI(1) and STC(2:4) = STCI(2)
- Estimate SLC from SMC, STC

- Noah LSM

## Snow-rain detection

- OSU LSM
- Computes water equivalent snow depth (SHELEG) only
- Compute snow melt only (Snow accumulation is computed at the end of atmosphere module using **TMP850**)
- NOAH LSM :
- Computes both water equivalent snow depth (SHELEG) and actual snow depth (SNWDPH)
- Computes both snow accumulation (using** TSFC**) and snow melt
- Code Modification for gbphys
- 	OLD: progtm -> atm -> TPRCP/T850 -> detection -> progt2
- 	NEW: detection -> [progtm/progt2] -> atm -> TPRCP/T850
- Code Modification for LSM
- 	OSU: conduct snow-rain detection before calling progtm
- 	NOAH: use TMP850 for snow-rain detection

- Noah LSM

## Summary - major changes made on MRF

- II.  Changes needed for NOAH LSM
- Change soil layer configuration
- Conduct snow-rain detection in land module
- Convert sfc files to NOAH-ready format

- Noah LSM

## Surface energy/water balance over land and sea ice

- Initialization
- Interface (parent model – LSM)
- Snow-rain detection
- Call progtm
- Call progt2
- Compute Qsurf, DM

- Initialization
- Interface (parent model – LSM)
- Interface (MRF to NOAH)
- Call sflx
- Interface (NOAH to MRF)
- Compute Qsurf, DM

- sfc_mrfx

- Sfc_noah

-   sfc_mrfx and sfc_noah have _identical_ calling arguments
-   Interface (parent model-LSM): compute variables needed by
-    OSU and NOAH LSM (e.g., Zsoil(LSOIL), Theta1)
-   Interface (MRF -NOAH): unit conversion, derivation (e.g., ICE
-    from SLMASK)

- Noah LSM

## MRFX vs OPR

- MRFX – modified from **/nwprod/sorc/global_fcst.fd**
- Modification
- mpi_para routine: correct MPI_BCAST in skip routine
- 	para_fixio_r can read in or skip data records in sfc files
- mpi_io routine: zerout tmp0 before local transpose in split2d
- 	checksum can be used to track I/O of selected fields
- wrtsfc, wrtsfc_comm routines: set iord for SMC2 to 2
- 	to be consistent with all other fields in flx files
- progtmr: exclude ocean grids in the evap re-evaluation step
- 	SHELEG is not zero over some ocean grid cells and thus evap has been computed twice at these grid cells

- OPR-MRFX

## checksum

- checksum are used at the following:
- _main_: P(getini); _dotstep_: P(wrtout); wrtout: P(wrt_restart)
- do I = 1, lonl2
- do j = 1, nlats
- checksum = checksum + TPRCP(I,J)
- enddo
- enddo

- 1			lonl2

**J**

**I**

- nlat2
-     1

- OPR-MRFX

## opr: iord = 1

- mrfx: iord = 2
- Sdate = 2002051600
- 24 hr integration
- NOTE:
- Model results (opr vs mrfx) are identical except SMC(2) from flx files

- OPR-MRFX

## Evap over ocean grids

- Derive SNOWD from SHELEG
- 	SNOWD=SHELEG/1000.
- Initialize SNOWMT (= 0.)
- Compute EVAP/QSURF/DM over ocean
- Compute surface energy balance
-   over land/seaice
- .........
- Determine SNOWMT
- Update SNOWD and TSURF
- Re-evaluate EVAP if SNOWD > 0.
- .......

- Does not exclude ocean grids

- MRFX: Move to sfc_ocean

- MRFX: Move to sfc_mrfx

- EXP -- Run MRFX (T62L28) for 24 hr starting from 2002051600
- After calling getini, there are 59 ocean grids with sheleg > 0.
- At the end of simulation, there are 174 ocean grids with sheleg > 0.

- OPR-MRFX

## Sdate = 2002051600

- 24 hr integration

- OPR-MRFX

## GFS Exp

- a.mrfx: GFS executable using MRFX code
- a.mrfy: GFS executable using MRFY (MRFX + NOAH) code
- sfc.cycle: preprocessor
- Procedure:
- (1)	Cold start run using a.mrfx
- 	Run sfc.cycle (TPRCP, TMP850 records exist)
- 	Restart run using a.mrfy
- Run sfc.cycle (TPRCP=0, TMP850=TSFC)
- 	Cold start run using a.mrfy

- Exp and I/O

## Preprocessor

- Modified from **/nwprod/sorc/global_cycle.fd**
- Convert gdas type sfcs file to NOAH ready sfc files
- Perform the following tasks
- Read in fixed fields needed by NOAH LSM, including
- 		SLOPETYP – Class of surface slope
- 		SHDMIN – Minimum vegetation cover
- 		SHDMIN – Maximum vegetation cover
- 		SNOALB – Maximum Albedo over deep snow
- Initialize 4-layer SMC/STC from 2-layer SMCI/STCI
- Initialize 4-layer SLC from 4-layer SMC/STC
- Initialize SNWDPH from SHELEG (using solid to liquid ratio of 5.)

- Exp and I/O

## I/O changes – flx files

**Rec 1. UFLX**
**Rec 2. VFLX**
**...**
**Rec 6:7  SMC(1:2)**
**Rec 8:9  STC(1:2)**
**...**
**Rec 53:  TCDC**

**SMC(1:4)**
**STC(1:4)**

**9 NOAH records: **
**SHDMIN, SHDMAX, SLOPE, SNOALB, SNWDPH, SLC(1:4)**

**13 LSM diag. records: **
**SMCI(1:4), STCI(1:4), EC, EDIR, ETT, HFLX, EVAP**

- Exp and I/O

## I/O changes – sfc files

**Rec.1 LABEL**
**Rec.2 DATE RECORD**
**Rec.3 TSF**
**Rec 4. SMC (2 layers) **
**Rec 5. SNOW**
**Rec 6. STC (2 layers)**
**Rec 7. TG3**
**Rec 8. ZOR**
**Rec 9. CV**
**Rec 10. CVB**
**Rec 11. CVT**
**Rec 12. ALBEDO (4 types)**
**Rec 13. SLIMSK**
**Rec 14. VFRAC**
**Rec 15. CANOPY**
**Rec 16. F10M**

**Rec.17 VTYPE**
**Rec.18 STYPE**
**Rec.19 ALF (2 types)**
**Rec 20. USTAR**
**Rec 21. FFMM**
**Rec 22. FFHH****	****	****1.87 MB**

**Rec 23. TPRCP**
**Rec 24. TMP850****	****2.02 MB**

**Rec 25. SNWDPH**
**Rec 26. SLC (4 layers)**
**Rec 27. SHDMIN**
**Rec 28. SHDMAX**
**Rec 29. SLOPE**
**Rec 30. SNOALB****	****2.96 MB**

**SMC (4 layers)**
**STC (4 layers)**

- Exp and I/O

- Sfccycle modification
- Increase the dimension size for GRIB files from (2048x1024) to (2500x1250)
- Modify FIXRDC (read SLOPE by nearest points)
- Blending forecast and analysis for added fields (i.e., SLOPE, SHDMIN, SHDMAX, SNOALB, SLC, SNWDPH)?
- Sfc and flx files
- NOAH fields and 4-layer SMC, STC, SLC are added
- Add LSM diag. fields?
- post modification to include added fields in PGB files?
- cycle modification to include added fields?

- Exp and I/O