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

ZM convective mass flux (atmosphere_convective_mass_flux_due_to_deep_convection) units inconsistent with snapshot #197

Open
jimmielin opened this issue Jan 30, 2025 · 0 comments
Assignees
Labels
enhancement New feature or request

Comments

@jimmielin
Copy link
Member

Currently, the units for the deep convective mass flux in ZM is hPa s-1 as output in zm_convr CCPPized scheme:

[ mcon ]
  standard_name = atmosphere_convective_mass_flux_due_to_deep_convection
  units = hPa s-1
  type = real | kind = kind_phys
  dimensions = (horizontal_loop_extent,vertical_interface_dimension)
  intent = out

In current CAM, the deep convective mass flux (saved in the snapshot as CMFMC) is in the units of kg m-2 s-1. This is because:

  1. The atmosphere_convective_mass_flux_due_to_deep_convection, or mcon or cmfmc is first computed in zm_convr_run with the units of hPa s-1.
  2. In zm_conv_intr.F90, it is converted to kg m-2 s-1:
!
! Convert mass flux from reported mb/s to kg/m^2/s
!
   mcon(:ncol,:pverp) = mcon(:ncol,:pverp) * 100._r8/gravit
   mconzm(:ncol,:pverp) = mcon(:ncol,:pverp)

this is the output argument for zm_conv_tend

subroutine zm_conv_tend(pblh    ,mcon    ,cme     , &
  1. mcon is the output argument used in convect_deep_tend in convect_deep.F90
  case('ZM') !    1 ==> Zhang-McFarlane (default)
     call pbuf_get_field(pbuf, pblh_idx,  pblh)
     call pbuf_get_field(pbuf, tpert_idx, tpert)

     call zm_conv_tend( pblh    ,mcon    ,cme     , &

which is the output argument for convect_deep_tend

subroutine convect_deep_tend( &
     mcon    ,cme     ,          &
  1. This output argument is saved in the snapshot as cmfmc
    if (trim(cam_take_snapshot_before) == "convect_deep_tend") then
       call cam_snapshot_all_outfld_tphysbc(cam_snapshot_before_num, state, tend, cam_in, cam_out, pbuf, &
           flx_heat, cmfmc, cmfcme, zdu, rliq, rice, dlf, dlf2, rliq2, det_s, det_ice, net_flx)
    end if

    call convect_deep_tend(  &
         cmfmc,      cmfcme,             &

and thus the units for cmfmc in the snapshot are kg m-2 s-1.

In CCPPized ZM, the unit conversion is only done at the diagnostic output time in the zm_diagnostics scheme.

However, matching the output with the snapshots or for deep convection to work together with shallow convection requires that atmosphere_convective_mass_flux_due_to_deep_convection is in consistent units with the snapshot (kg m-2 s-1) and the shallow convective mass flux (also in kg m-2 s-1).

Thus, the unit conversion for atmosphere_convective_mass_flux_due_to_deep_convection should be moved from zm_diagnostics.F90 to zm_convr.F90 so that the units are passed consistently across schemes (CCPP cannot convert from hPa s-1 to kg m-2 s-1 on its own)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
Status: To Do
Development

No branches or pull requests

1 participant