subroutine advnce(phys_state, cam_out, pbuf) 1,36 !----------------------------------------------------------------------------------- ! ! Purpose: The place for parameterizations to call per timestep initializations. ! Generally this is used to update time interpolated fields from boundary ! datasets. ! !----------------------------------------------------------------------------------- use shr_kind_mod, only: r8 => shr_kind_r8 use chemistry, only: chem_timestep_init use chem_surfvals, only: chem_surfvals_set use ppgrid, only: begchunk, endchunk use physics_types, only: physics_state use phys_buffer, only: pbuf_size_max, pbuf_fld use ghg_data, only: ghg_data_timestep_init use cam3_aero_data, only: cam3_aero_data_on, cam3_aero_data_timestep_init use cam3_ozone_data, only: cam3_ozone_data_on, cam3_ozone_data_timestep_init use radiation, only: radiation_do use tracers, only: tracers_timestep_init use aoa_tracers, only: aoa_tracers_timestep_init use vertical_diffusion, only: vertical_diffusion_ts_init use radheat, only: radheat_timestep_init use solar_data, only: solar_data_advance #if ( defined WACCM_PHYS ) use efield, only: get_efield use iondrag, only: do_waccm_ions use qbo, only: qbo_timestep_init #endif use perf_mod use prescribed_ozone, only: prescribed_ozone_adv use prescribed_ghg, only: prescribed_ghg_adv use prescribed_aero, only: prescribed_aero_adv use aerodep_flx, only: aerodep_flx_adv use prescribed_volcaero, only: prescribed_volcaero_adv use camsrfexch_types, only: surface_state implicit none type(physics_state), intent(inout), dimension(begchunk:endchunk) :: phys_state type(surface_state), intent(inout), dimension(begchunk:endchunk) :: cam_out type(pbuf_fld), intent(inout), dimension(pbuf_size_max) :: pbuf ! physics buffer !----------------------------------------------------------------------------- ! Chemistry surface values call chem_surfvals_set(phys_state) ! Solar irradiance call solar_data_advance() ! Time interpolate for chemistry. call chem_timestep_init(phys_state) ! Prescribed tracers call prescribed_ozone_adv(phys_state) call prescribed_ghg_adv(phys_state) call prescribed_aero_adv(phys_state) call prescribed_volcaero_adv(phys_state) ! prescribed aerosol deposition fluxes call aerodep_flx_adv(phys_state, cam_out) ! CAM3 prescribed aerosol masses if (cam3_aero_data_on) call cam3_aero_data_timestep_init(pbuf, phys_state) ! CAM3 prescribed ozone data if (cam3_ozone_data_on) call cam3_ozone_data_timestep_init(pbuf, phys_state) ! Time interpolate data models of gasses in pbuf call ghg_data_timestep_init(pbuf, phys_state) ! Upper atmosphere radiative processes call radheat_timestep_init ! Time interpolate for vertical diffusion upper boundary condition call vertical_diffusion_ts_init(phys_state) #if ( defined WACCM_PHYS ) if (do_waccm_ions) then ! Compute the electric field call t_startf ('efield') call get_efield call t_stopf ('efield') endif !---------------------------------------------------------------------- ! update QBO data for this time step !---------------------------------------------------------------------- call qbo_timestep_init #endif ! Time interpolate for tracers, if appropriate call tracers_timestep_init(phys_state) ! age of air tracers call aoa_tracers_timestep_init(phys_state) end subroutine advnce