#include "rundeck_opts.h"

      subroutine alloc_drv() 8,32
c Driver to allocate arrays that become dynamic as a result of
c set-up for MPI implementation
      USE DOMAIN_DECOMP, ONLY : grid
      IMPLICIT NONE

      call alloc_dynamics(grid)
      call alloc_model_com(grid)
      call alloc_fluxes(grid)
      call alloc_clouds_com(grid)
      call alloc_ghy_com(grid)
      call alloc_pbl_com(grid)
      call alloc_icedyn(grid)
      call alloc_icedyn_com(grid)
      call alloc_diag_com(grid)
      call alloc_diag_loc(grid)
      call alloc_smomtq(grid)
      call alloc_strat_com(grid)
      call alloc_seaice_com(grid)
      call alloc_rad_com(grid)
      call alloc_lakes(grid)
      call alloc_lakes_com(grid)
      call alloc_landice_com(grid)
#if (defined TRACERS_ON) || (defined TRACERS_OCEAN)
      call alloc_tracer_com(grid)
#ifdef TRACERS_DRYDEP
      call alloc_trdrydep(grid)
#endif
#ifdef TRACERS_SPECIAL_Lerner
      call alloc_tracer_special_lerner_com(grid)
      call alloc_linoz_chem_com(grid)
#endif
#ifdef TRACERS_SPECIAL_Shindell
      call alloc_trchem_shindell_com(grid)
      call alloc_tracer_sources(grid)
      call alloc_lightning(grid)
#endif
#if (defined TRACERS_AEROSOLS_Koch) || (defined TRACERS_AMP)
      call alloc_aerosol_sources(grid)
#endif
#ifdef TRACERS_AMP
      call alloc_tracer_amp_com(grid)
#endif
#if (defined TRACERS_DUST) || (defined TRACERS_MINERALS) ||\
    (defined TRACERS_QUARZHEM) || (defined TRACERS_AMP)
      CALL alloc_dust(grid)
#endif
#endif
      call alloc_tracer_adv(grid)
#ifdef USE_ENT
!!! should be done in init_module_ent
      call alloc_ent_com(grid)
#else
      call alloc_veg_com(grid)
#endif
      call alloc_ocean(grid)
#ifdef TRACERS_ON
      call alloc_trdiag_com
#endif

      end subroutine alloc_drv