Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

202411 Release of SHiELD_physics #58

Merged
merged 14 commits into from
Dec 18, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
477 changes: 345 additions & 132 deletions FV3GFS/FV3GFS_io.F90

Large diffs are not rendered by default.

12 changes: 8 additions & 4 deletions GFS_layer/GFS_driver.F90
Original file line number Diff line number Diff line change
Expand Up @@ -206,7 +206,7 @@ subroutine GFS_initialize (Model, Statein, Stateout, Sfcprop, &
si = (Init_parm%ak + Init_parm%bk * p_ref - Init_parm%ak(Model%levr+1)) &
/ (p_ref - Init_parm%ak(Model%levr+1))
call rad_initialize (si, Model%levr, Model%ictm, Model%isol, &
Model%ico2, Model%iaer, Model%ialb, &
Model%ico2, Model%fco2_scaling , Model%iaer, Model%ialb, &
Model%disable_radiation_quasi_sea_ice, Model%iems, &
Model%ntcw, Model%num_p2d, Model%num_p3d, &
Model%npdf3d, Model%ntoz, &
Expand Down Expand Up @@ -266,9 +266,10 @@ subroutine GFS_initialize (Model, Statein, Stateout, Sfcprop, &
!-----------------------------------------------------------------------

if (Model%do_cosp) then
do nb = 1, nblks
call cosp2_init (size(Grid(nb)%xlon,1), Model%levs)
enddo
!ONLY call with the first block, which will be equal to the blocksize.
! this will (should?) allocate the right amount of data. Then calls to
! COSP will have the right data set up.
call cosp2_init (size(Grid(1)%xlon,1), Model%levs)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please make sure this works when non-uniform blocks are created (e.g. [mod (nx, blocksize) != 0]

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This does not work with nonuniform blocksizes, to the best of my knowledge. This was a quick 'hack' I put in to get COSP to work in X-SHiELD without running out of memory. This is a limitation of the method at this time.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

My original code requires the block size to be the same as the layout size, making it much less efficient. Lucas's simple fix resolves this issue, although I haven't tested it in non-uniform blocks.

endif
#endif

Expand Down Expand Up @@ -645,6 +646,9 @@ subroutine GFS_rad_time_vary (Model, Statein, Tbd, sec)
!--- for testing purposes, replace numrdm with '100'
Tbd(nb)%icsdsw(ix) = numrdm(i+Model%isc-1 + (j+Model%jsc-2)*Model%cnx)
Tbd(nb)%icsdlw(ix) = numrdm(i+Model%isc-1 + (j+Model%jsc-2)*Model%cnx + Model%cnx*Model%cny)
#if defined (USE_COSP)
!add random seeds for COSP here
#endif
enddo
enddo
endif ! isubc_lw and isubc_sw
Expand Down
127 changes: 96 additions & 31 deletions GFS_layer/GFS_physics_driver.F90

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions GFS_layer/GFS_radiation_driver.F90
Original file line number Diff line number Diff line change
Expand Up @@ -552,7 +552,7 @@ subroutine radinit( si, NLAY, me )
& ' May 01 2007'
print *, VTAGRAD !print out version tag
print *,' - Selected Control Flag settings: ICTMflg=',ictmflg, &
& ' ISOLar =',isolar, ' ICO2flg=',ico2flg,' IAERflg=',iaerflg, &
& ' ISOLar =',isolar, ' ICO2flg=',ico2flg,' CO2_scaling=',co2_scaling, ' IAERflg=',iaerflg, &
& ' IALBflg=',ialbflg,' IEMSflg=',iemsflg,' ICLDflg=',icldflg, &
& ' ICMPHYS=',icmphys,' IOZNflg=',ioznflg
print *,' IVFLIP=',ivflip,' IOVRSW=',iovrsw,' IOVRLW=',iovrlw, &
Expand Down Expand Up @@ -1627,7 +1627,7 @@ subroutine GFS_radiation_driver &
tracer1(:,1:lmk,Model%ntiw), &
tracer1(:,1:lmk,Model%ntsw), &
tracer1(:,1:lmk,Model%ntgl), qa, &
Sfcprop%slmsk, Sfcprop%snowd, &
Sfcprop%slmsk, &
tracer1(:,1:lmk,Model%ntclamt),&
im, lmk, lmp, clouds, cldsa, mtopa, mbota) ! --- outputs
endif
Expand Down
105 changes: 97 additions & 8 deletions GFS_layer/GFS_typedefs.F90

Large diffs are not rendered by default.

6 changes: 2 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# SHiELD_physics

The source contained herein reflects the 202305 release of the SHiELD_physics from GFDL.
The source contained herein reflects the 202411 release of the SHiELD_physics from GFDL.

SHiELD_physics contains the infrastructure and physical parameterizations used within the SHiELD atmosphere model.

Expand All @@ -12,9 +12,7 @@ More information is available on the [GFDL SHiELD page](https://www.gfdl.noaa.go

```IPD_layer``` was developed by GFDL personnel, with community input, under funding from NWS Office of Science and Technology Integration.

```atmos_drivers``` is derivative code from the NOAA-GFDL [Atmospheric Drivers project](https://github.com/NOAA-GFDL/atmos_drivers). This will be removed in a future release.

```simple_coupler``` is derivative code from the NOAA-GFDL [FMS Coupler project](https://github.com/NOAA-GFDL/FMSCoupler). This will be removed in a future release.
```atmos_shared``` contains files needed to compile SHiELD with the full FMS coupler.

# Disclaimer

Expand Down
56 changes: 56 additions & 0 deletions RELEASE.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,59 @@
# RELEASE NOTES for FV3 202411: Summary
FV3-202411-public --- November 2024
Lucas Harris, GFDL lucas.harris@noaa.gov

This version has been tested with:
FV3 Dynamical Core release FV3-202411-public from https://github.com/NOAA-GFDL/GFDL_atmos_cubed_sphere
FMS release 2024.03 from https://github.com/NOAA-GFDL/FMS
FMS Coupler release 2024.03.01 from https://github.com/NOAA-GFDL/FMScoupler
Atmos Drivers release FV3-202411-public from https://github.com/NOAA-GFDL/atmos_drivers

This release includes the following:
- Support for running SHiELD in the full FMSCoupler (Joseph)
- GFDL Microphysics (Linjiong)
- Replaced the hardcoded qa with aerosol data
- Replaced the hardcoded hydrostatic with the input hydrostatic variable
- Added two namelist options (fast_fr_mlt and fast_dep_sub) to control freezing/melting and deposition/sublimation in the fast microphysics.
- Included a missing term in the energy conservation formula (credit: Tristan Abbott). May affect prediction of processes depending strongly on microphysics. Compile the model with -DENG_CNV_OLD to revert this change.
- Added diagnostic cloud content and cloud effective radii of all cloud hydrometeors (qc*, re*).
- Added diagnostic microphysical process rate (mpp*).
- Removed unused Keihl et al. (1994) cloud water effective radius diagnosis.
- A new COSP output variable named clisccp was added.
- Surface processes and PBL (Kun, Linjiong, Kai, Spencer)
- Brought EMC updates from dev/emc branch related to TKE-EDMF, deep and shallow convection schemes
- Added a constraint to the PBL bottom layer to prevent negative water vapor.
- Revise the surface process to prevent excessive downward latent heat transfer
- Exposed additional tunable parameters in TKE-EDMF PBL scheme
- Fix miscalculated albedo over the ocean when ialb = 2
- Slab ocean bug fixes and enhancements
- Upgraded land-ice related processes in Noah-MP based on version 4.5 of the official Noah-MP repository and some updates from NCAR/ccpp-physics, mostly from EMC.
- Computing the snow height within the snowwater_glacier and snowwater subroutines
- Limiting the compaction of snow in various places
- Calculating the equilibrium state of snow only if snow exists. The maximum water depth becomes a tunable parameter and its default value remains 5 m.
- Prescribed soil color capability
- Prescribed snow albedo capability
- Convection schemes (Kun, Linjiong)
- Brought EMC updates from dev/emc branch
- Merged samfshalcnv_gfdl.f and samfshalcnv.f. Use gfs_physics_nml::limit_shal_conv = .true. to recover samfshalcnv_gfdl.
- Created the shallow convection option 5 based on option 3, to turn off the shallow convection scheme if the diagnosed cloud depth or cloud top exceeds certain critical values (set by cthk_shal and top_shal, respectively)
- Added a parameter dxcrtas to the deep convection; for grid-spacing less than this (default 8000 m) the AS's quasi-equilibrium assumption is considered invalid.
- Radiation (Kai)
- Added a namelist option, gfs_physics_nml::fco2_scaling to uniformly scale CO2
- Diagnostics (Spencer)
- Added pressure_level_extrapolate, blended-area-weighted, and simplest model_level_area_weighted coarse-graining strategies.
- Implemented area-weighted mean over the dominant surface type for the snoalb, shdmin, and shdmax surface fields.
- Fixed a bug that affected coarse-graining the soil type field and some other soil properties downstream.
- Additional CO2 and surface-type fraction diagnostics.
- Software updates (Spencer, Lucas, Joseph)
- Updates for running SHiELD in the FV3net Python wrapper
- Bugfix in ozphys.F for ldiag3d = .true..
- Cleaned up obscure diagnostics in radiation_astronomy.f.
- Namelist option gfs_physics_nml::landseaprt to allow turning off land/sea partitioned global intervals in stdout.
- Added variable-by-variable defined missing_value to gfdl_diag_type.
- Add additional atmos driver files to run SHiELD and SHiEMOM with the full FMScoupler, mimicking the structure of AM4 atmos_phys.
- Several diagnostic bug fixes.


# RELEASE NOTES for FV3 202305: Summary
FV3-202305-public --- May 2023
Lucas Harris, GFDL lucas.harris@noaa.gov
Expand Down
3 changes: 2 additions & 1 deletion gsmphys/gcycle.F90
Original file line number Diff line number Diff line change
Expand Up @@ -191,7 +191,8 @@ SUBROUTINE GCYCLE (nblks, Model, Grid, Sfcprop, Cldprop)
size(Model%input_nml_file), &
Model%input_nml_file, &
Model%ialb, Model%isot, Model%ivegsrc, &
trim(tile_num_ch), i_index, j_index)
trim(tile_num_ch), i_index, j_index, &
Model%sst_perturbation)
#ifndef INTERNAL_FILE_NML
close (Model%nlunit)
#endif
Expand Down
Loading