-
Notifications
You must be signed in to change notification settings - Fork 64
CCPP Framework Meeting Minutes 2022 01 04
Dom Heinzeller edited this page Jan 4, 2022
·
8 revisions
- capgen unification
- CCPP Visioning Workshop
- Dictionary of standard names
- CCPP requirements document
- Other business
- We merged one PR! https://github.com/NCAR/ccpp-framework/pull/424
- ...
- Convenience units, etc (all triggered by https://github.com/ufs-community/ufs-weather-model/pull/907 and associated PRs)
- If we do want to pass
log(pressure)
orpressure**kappa
, then is there a way to know whether we need to do unit conversions- For example, if only diffs of log are used, or ratios of Pa**kappa are used --> no need to do conversions
- Could use unit
ln(Pa)
if it matters, and1
if it doesn't - Use case
pressure**kappa
in UFS (NCAR ccpp-physicsphysics/gfdl_fv_sat_adj.{F90,meta}
):
- If we do want to pass
### physics/gfdl_fv_sat_adj.meta
[pkz]
standard_name = finite_volume_mean_edge_pressure_raised_to_the_power_of_kappa
long_name = finite-volume mean edge pressure in Pa raised to the power of kappa
units = 1
dimensions = (starting_x_direction_index:ending_x_direction_index,starting_y_direction_index:ending_y_direction_index,1:vertical_dimension_for_fast_physics)
type = real
kind = kind_dyn
intent = inout
### physics/gfdl_fv_sat_adj.F90
#ifdef MOIST_CAPPA
pkz(i,j,k) = exp(cappa(i,j,k)*log(rrg*delp(i,j,k)/delz(i,j,k)*pt(i,j,k)))
#else
#ifdef MULTI_GASES
pkz(i,j,k) = exp(akap*(virqd(q(i,j,k,1:num_gas))/vicpqd(q(i,j,k,1:num_gas))*log(rrg*delp(i,j,k)/delz(i,j,k)*pt(i,j,k)))
#else
pkz(i,j,k) = exp(akap*log(rrg*delp(i,j,k)/delz(i,j,k)*pt(i,j,k)))
#endif
#endif
- Use case
log(pressure)
in UFS (NCAR ccpp-physicsphysics/ozphys_2015.{F90,meta}
):
### physics/ozphys_2015.meta
[po3]
standard_name = natural_log_of_ozone_forcing_data_pressure_levels
long_name = natural log of ozone forcing data pressure levels
units = 1
dimensions = (vertical_dimension_of_ozone_forcing_data)
type = real
kind = kind_phys
intent = in
### physics/ozphys_2015.f
do i=1,im
wk1(i) = log(prsl(i,l))
pmin = min(wk1(i), pmin)
pmax = max(wk1(i), pmax)
prod(i,:) = 0.0
enddo
kmax = 1
kmin = 1
do k=1,ko3-1
if (pmin < po3(k)) kmax = k
if (pmax < po3(k)) kmin = k
enddo
!
do k=kmin,kmax
temp = 1.0 / (po3(k) - po3(k+1))
do i=1,im
flg(i) = .false.
if (wk1(i) < po3(k) .and. wk1(i) >= po3(k+1)) then
flg(i) = .true.
wk2(i) = (wk1(i) - po3(k+1)) * temp
wk3(i) = 1.0 - wk2(i)
endif
enddo
-
In
ccpp_prebuild
, there is no syntax checker - it checks if the units are the same and if not, if there is a conversion registered -
In
capgen
, there is a syntax checker - but we need to know what exceptions/extensions to udunits are acceptable/should be ignored- Solution: extend syntax checker to allow for a log of a unit and an exponential of a unit (need to create issue to do this)
-
Is specific humidity the mass mixing ratio of vapor with respect to moist air or with respect to total mass (rule 5)?
- Correct would be w.r.t. total mass, but UFS / ccpp-physics are using it incorrectly as w.r.t. moist air
- AMS glossary says specific humidity is w.r.t. total mass, but there are other definitions in the literature
- Outlow use of specific humidity, and always use
mixing_ratio_of_vapor_wrt_xyz
? - UFS: Fanglin ok with always using
mixing_ratio_of_vapor_wrt_moist_air
- Need to create an issue in ccpp-physics and the dictionary of standard names
-
Is there a standard name for "pi"?
-
Move
gravitational_acceleration
to the "constants" section? Currently in "dimensions"
- Historical document created?
- ...