subroutine initindx 1,55
!-----------------------------------------------------------------------
!
! Purpose: Register constituents and physics buffer fields.
!
! Author: CSM Contact: M. Vertenstein, Aug. 1997
! B.A. Boville, Oct 2001
!
!-----------------------------------------------------------------------
use shr_kind_mod
, only: r8 => shr_kind_r8
use spmd_utils
, only: masterproc
use constituents
, only: pcnst, cnst_add, cnst_chk_dim, cnst_name
use phys_buffer
, only: pbuf_init, pbuf_print
use cam_control_mod
, only: moist_physics
use phys_control
, only: phys_do_flux_avg
use chemistry
, only: chem_register
use stratiform
, only: stratiform_register
use physconst
, only: mwdry, cpair, mwh2o, cpwv
use tracers
, only: tracers_register
use check_energy
, only: check_energy_register
use aerosol_intr
, only: aerosol_register_cnst
use cam3_aero_data
, only: cam3_aero_data_on, cam3_aero_data_register
use cam3_ozone_data
, only: cam3_ozone_data_on, cam3_ozone_data_register
use ghg_data
, only: ghg_data_register
use vertical_diffusion
, only: vd_register
use convect_deep
, only: convect_deep_register
use convect_shallow
, only: convect_shallow_register
use radiation
, only: radiation_register
use co2_cycle
, only: co2_register
use flux_avg
, only: flux_avg_register
#if ( defined WACCM_PHYS )
use exbdrift, only: exbdrift_register
use gw_drag
, only: gw_drag_register
#endif
use string_utils
, only: to_lower
use prescribed_ozone
, only: prescribed_ozone_register
use prescribed_volcaero
,only: prescribed_volcaero_register
use prescribed_aero
, only: prescribed_aero_register
use prescribed_ghg
, only: prescribed_ghg_register
use sslt_rebin
, only: sslt_rebin_register
use aoa_tracers
, only: aoa_tracers_register
implicit none
!---------------------------Local variables-----------------------------
!
integer :: m ! loop index
integer :: mm ! constituent index
!-----------------------------------------------------------------------
! Initialize physics buffer
call pbuf_init
()
! Register water vapor.
! ***** N.B. ***** This must be the first call to cnst_add so that
! water vapor is constituent 1.
if (moist_physics) then
call cnst_add
('Q', mwh2o, cpwv, 1.E-12_r8, mm, &
longname='Specific humidity', readiv=.true.)
else
call cnst_add
('Q', mwh2o, cpwv, 0.0_r8, mm, &
longname='Specific humidity', readiv=.false.)
end if
! check energy package
call check_energy_register
! If using an ideal/adiabatic physics option, the CAM physics parameterizations
! aren't called.
if (moist_physics) then
! register fluxes for saving across time
if (phys_do_flux_avg
()) call flux_avg_register
()
! cloud water
call stratiform_register
()
! chemical constituents
call chem_register
()
! co2 constituents
call co2_register
()
! register data model ozone with pbuf
if (cam3_ozone_data_on) then
call cam3_ozone_data_register
()
end if
call prescribed_volcaero_register
()
call prescribed_ozone_register
()
call prescribed_aero_register
()
call prescribed_ghg_register
()
call sslt_rebin_register
! CAM3 prescribed aerosols
if (cam3_aero_data_on) then
call cam3_aero_data_register
()
end if
! register various data model gasses with pbuf
call ghg_data_register
()
#if ( defined WACCM_PHYS )
! Initialize e and b fields
call exbdrift_register()
! waccm gravity wave drag
call gw_drag_register()
#endif
! aerosols
call aerosol_register_cnst
()
! deep convection
call convect_deep_register
! shallow convection
call convect_shallow_register
! radiation
call radiation_register
! vertical diffusion
call vd_register
()
end if
! Register age of air tracers
call aoa_tracers_register
()
! Register test tracers
! ***** N.B. ***** This is the last call to register constituents because
! the test tracers fill the remaining available slots up
! to constituent number PCNST -- regardless of what PCNST is set to.
call tracers_register
()
! All tracers registered, check that the dimensions are correct
call cnst_chk_dim
()
! ***NOTE*** No registering constituents after the call to cnst_chk_dim.
! Registration of physics buffer fields is also complete.
if (masterproc) call pbuf_print
()
end subroutine initindx