The CCPP Framework�A Tool for Unifying Physics Across Earth System Models for Operations, Research, and Development
Michael Kavulich Jr.1,2, Dom Heinzeller2,3,*, Grant Firl2,4, Ligia Bernardet2,3, Man Zhang2,3, and Steve Goldhaber1,**
1 NATIONAL CENTER FOR ATMOSPHERIC RESEARCH, BOULDER, CO, UNITED STATES
2 DEVELOPMENTAL TESTBED CENTER, BOULDER, CO, UNITED STATES
3 NOAA GLOBAL SYSTEMS LABORATORY, UNIVERSITY OF COLORADO/CIRES, BOULDER, CO, UNITED STATES
4 NOAA, OAR/GSL, BOULDER, UNITED STATES
* CURRENT AFFILIATION: UNIVERSITY CORPORATION FOR ATMOSPHERIC RESEARCH COMMUNITY PROGRAMS (UCP); JOINT CENTER FOR SATELLITE DATA ASSIMILATION
** CURRENT AFFILIATION: ESM CONSULTANTS LLC
AGU Fall Meeting; December 14, 2022
Why are we here?
“simulating aerosol particles, cloud microphysical and macrophysical properties, and gas, aerosol, and cloud chemistry…in the context of real atmospheric-scale climate and air quality applications is complicated by differences in their implementation within host models…and complexities introduced by the ongoing maintenance and development of institutional host models.”
Current development of chemistry and physics schemes comes with downsides
2
History and mission of the Common Community Physics Package (CCPP)
These problems have a large overlap with those that the CCPP was developed to address:
The first version of the CCPP was developed by the Developmental Testbed Center (NCAR/NOAA collaboration) from 2016-2017, and v1 was released in early 2018. The latest version is v6.0, released in June 2022.
3
CCPP components
CCPP Physics
CCPP Framework
4
The CCPP Framework
The main acts of the CCPP framework happen prior to model compilation:
ccpp_prebuild.py
INTEGRATING PHYSICS WITH HOST MODELS
5
The CCPP Framework
Important glue that allows physics to be independent of host models (and each other):
STANDARDS AND METADATA
6
The CCPP Framework
DEVELOPMENT TOOLS
7
Host models incorporating CCPP Framework
A number of atmospheric models make use of the CCPP Framework
Future projects to incorporate CCPP Framework into more models
8
An example of chemistry and aerosols in CCPP
9
Mostly emissions
Radiation, Land Surface may include biogenic emissions
radiation
Land Surface Model
PBL & tracer vertical diffusion
Convection & convective wet deposition
Microphysics
sea salt emission
Dust emission
fire emission and plume-rise module
DMS emission
Aerosol settling (dust, sea salt, pp25 and pp10)
dry deposition
Large-scale wet deposition
GOCART chemistry
Aerosols optical calculation
Met. Prep and anthro. emission
Tracer transport, wet deposition
chemistry is GOCART, could be GEOS-Chem, CMAQ,...
radiation
Land Surface Model
PBL & tracer vertical diffusion
Convection & convective wet deposition
Microphysics
sea salt emission
Dust emission
fire emission and plume-rise module
DMS emission
Aerosol settling (dust, sea salt, pp25 and pp10)
dry deposition
Large-scale wet deposition
GOCART chemistry
Aerosols optical calculation
Met. Prep and anthro. emission
Physics
GSDChem chemical driver
NUOPC
version
CCPP version
Figure courtesy of Kate Zhang, NOAA GSL/CSL. Full citation on final slide
Ongoing/future work in the CCPP Framework
10
Support and collaboration
Michael J. Kavulich, Jr.
kavulich@ucar.edu
NATIONAL CENTER FOR ATMOSPHERIC RESEARCH, �DEVELOPMENTAL TESTBED CENTER
11
Thank you for your attention!
Questions?
Further reading
Bonus slides
EVERYONE LOVES BONUS SLIDES RIGHT?
12
CCPP v6 supported suites
13
Type | Operational | Developmental | ||||
Suite Name | GFS_v16 | GFS_v17_p8 | HRRR | RRFS_v1beta | WoFS | RAP |
Host | SRW, SCM | SCM | SRW, SCM | SRW, SCM | SRW,SCM | SCM |
Microphysics | GFDL | Thompson | Thompson | Thompson | NSSL | Thompson |
PBL | TKE EDMF | TKE EDMF | MYNN | MYNN | MYNN | MYNN |
Surface Layer | GFS | GFS | MYNN | MYNN | MYNN | GFS |
Deep Convection | saSAS | saSAS+CA | — | — | — | Grell-Freitas |
Shallow Convection | saMF | saMF | — | — | — | Grell-Freitas |
Radiation | RRTMG | RRTMG | RRTMG | RRTMG | RRTMG | RRTMG |
Gravity Wave Drag | uGWP | GSL-Drag | GSL-Drag | uGWP | uGWP | GSL-Drag |
Land Surface | Noah | Noah-MP | RUC | Noah-MP | Noah-MP | RUC |
Ozone | NRL 2015 | NRL 2015 | NRL 2015 | NRL 2015 | NRL 2015 | NRL 2015 |
H2O | NRL | NRL | NRL | NRL | NRL | NRL |
Aerosols | GOCART | GOCART | GOCART | OPAC | OPAC | GOCART |
Basic code structure
14
module myscheme�� implicit none� contains
!> \section arg_table_myscheme_init Argument Table
!! \htmlinclude myscheme_init.html�!!
subroutine myscheme_init (errmsg, errflg)
character(len=*), intent(out) :: errmsg� integer, intent(out) :: errflg
...� end subroutine myscheme_init��!> \section arg_table_myscheme_run Argument Table
!! \htmlinclude myscheme_run.html�!!
subroutine myscheme_run(ni, psfc, errmsg, errflg)� integer, intent(in) :: ni� real, intent(inout) :: psfc(:)� character(len=*), intent(out) :: errmsg� integer, intent(out) :: errflg� ...� end subroutine myscheme_run�end module myscheme myscheme.F90
“Hook” for CCPP metadata
CCPP scheme metadata
15
[ccpp-table-properties]
name = myscheme
type = scheme
dependencies = other_file.F90
[ccpp-arg-table]� name = myscheme_run� type = scheme
[stress]
standard_name = surface_wind_stress
long_name = surface wind stress
units = m2 s-2
dimensions = (horizontal_loop_extent)
type = real
kind = kind_phys
intent = in
...
myscheme.meta
Start of new metadata “table”
type = [scheme, module, DDT, host]
name of attached subroutine/module
CCPP scheme metadata
16
the key (standard name) by which this data is known in the CCPP
more descriptive name if standard name is not sufficient
note the format; possibility of automatic unit conversion among schemes and between host
name of variable in subroutine
[ccpp-table-properties]
name = myscheme
type = scheme
dependencies = other_file.F90
[ccpp-arg-table]� name = myscheme_run� type = scheme
[stress]
standard_name = surface_wind_stress
long_name = surface wind stress
units = m2 s-2
dimensions = (horizontal_loop_extent)
type = real
kind = kind_phys
intent = in
...
myscheme.meta
CCPP scheme metadata
17
standard names of array dimensions;
() for scalar;
can specify start:end for dimension (default is 1)
FORTRAN intrinsic type or DDT name
precision or character length
FORTRAN argument intent
[ccpp-table-properties]
name = myscheme
type = scheme
dependencies = other_file.F90
[ccpp-arg-table]� name = myscheme_run� type = scheme
[stress]
standard_name = surface_wind_stress
long_name = surface wind stress
units = m2 s-2
dimensions = (horizontal_loop_extent)
type = real
kind = kind_phys
intent = in
...
myscheme.meta
CCPP scheme metadata
18
Applies to entire scheme; dependencies attribute allows compiling only those files that are necessary for a given list of suites
[ccpp-table-properties]
name = myscheme
type = scheme
dependencies = other_file.F90
[ccpp-arg-table]� name = myscheme_run� type = scheme
[stress]
standard_name = surface_wind_stress
long_name = surface wind stress
units = m2 s-2
dimensions = (horizontal_loop_extent)
type = real
kind = kind_phys
intent = in
...
myscheme.meta
CCPP Host metadata
19
CCPP API calls
20
Autogenerated in ccpp_static_api.F90