Skip to content

Physics Call Tree

David Fillmore edited this page Dec 3, 2025 · 1 revision

Physics Call Tree

Markers:

  • [STATE] subroutines directly write to the MPAS state pool.
  • [TEND] subroutines write physics tendencies (tend or tend_physics pools) that are later added to dynamics.

State and tendency writers (current code)

  • [STATE+TEND] microphysics_to_MPAS
  • [STATE] init_thompson_aerosols_forMPAS
  • [STATE] aerosol_init
  • [TEND] radiation_sw_to_MPAS
  • [TEND] radiation_lw_to_MPAS
  • [TEND] physics_get_tend and physics_get_tend_work
  • [TEND] driver_pbl
  • [TEND] update_convection_step1
  • [TEND] driver_convection
  • [TEND] update_convection_step2

Runtime (timestep) flow — mpas_atm_core: atm_do_timestep (microphysics lives in atm_time_integration: atm_srk3)

  • physics_timetracker
    • physics_update_surface (surface albedo and greenness refresh when alarmed)
    • physics_update_sst, physics_update_sstskin, physics_update_deepsoiltemp
    • o3climatology_from_MPAS (optional) and alarm maintenance (CAM, accumulated buckets, diagnostics)
  • physics_driver (non-microphysics parameterizations)
    • allocate_forall_physics → MPAS_to_physics
    • driver_cloudiness → calc_cldincidence, calc_cldfraction, cal_cldfra3
    • driver_radiation_sw → radiation_sw_from_MPAS → rrtmg_swrad or camrad → [TEND] radiation_sw_to_MPAS
    • driver_radiation_lw → radiation_lw_from_MPAS → rrtmg_lwrad or camrad → [TEND] radiation_lw_to_MPAS
    • update_radiation_diagnostics
    • driver_sfclayer
    • driver_oml1d (if config_oml1d)
    • driver_lsm (Noah) or driver_lsm_noahmp
    • driver_seaice
    • atmphys_sfc_diagnostics
    • [TEND] driver_pbl
    • driver_gwdo
    • [TEND] update_convection_step1
    • [TEND] driver_convection
      • Scheme branches: gf_driver (Grell–Freitas), kf_eta_cps, tiedtke, cu_ntiedtke_driver
      • [TEND] convection_to_MPAS
    • [TEND] update_convection_step2
    • deallocate_forall_physics
  • atm_timestep → atm_time_integration: atm_srk3
    • (dynamics sub-steps)
    • driver_microphysics
      • allocate_microphysics
      • precip_from_MPAS
      • microphysics_from_MPAS
      • Scheme branches: kessler, mp_gt_driver (Thompson and Thompson-aerosols), wsm6
      • compute_radar_reflectivity (optional) → compute_relhum
      • precip_to_MPAS
      • [STATE+TEND] microphysics_to_MPAS (updates theta_m, qv, qc, qr, qi, qs, qg, surface pressure, and microphysics tendencies in state and tend pools)
      • deallocate_microphysics

Initialization flow — physics_init

  • init_dirs_forphys and init_physics_flags (set dimension-dependent flags)
  • Optional init_o3climatology
  • init_convection
  • init_microphysics
    • thompson_init or mp_wsm6_init
    • init_thompson_clouddroplets_forMPAS
    • [STATE] init_thompson_aerosols_forMPAS (fills aerosol number concentrations in state scalars)
  • init_pbl
  • init_sfclayer
  • init_lsm (Noah) or init_lsm_noahmp
  • init_radiation_sw
    • rrtmg_initsw_forMPAS or camradinit
    • If camradinit: radini, radaeini, aer_optics_initialize, oznini, and [STATE] aerosol_init (sets background state aerosols)
  • init_radiation_lw
    • rrtmg_initlw_forMPAS or camradinit (same internal calls as above)
  • ugwpv1_ngw_init (gravity-wave drag precompute)

Clone this wiki locally