!WRF:MEDIATION_LAYER:ADT_BARRIER
!


SUBROUTINE start_domain ( grid ) 4,5

   USE module_domain

   IMPLICIT NONE

   !  Input data.
   TYPE (domain)          :: grid
   !  Local data.
   INTEGER                :: dyn_opt
   INTEGER :: idum1, idum2

#ifdef DEREF_KLUDGE
   INTEGER     :: sm31 , em31 , sm32 , em32 , sm33 , em33
   INTEGER     :: sm31x, em31x, sm32x, em32x, sm33x, em33x
   INTEGER     :: sm31y, em31y, sm32y, em32y, sm33y, em33y
#endif

#ifdef DEREF_KLUDGE
   sm31             = grid%sm31
   em31             = grid%em31
   sm32             = grid%sm32
   em32             = grid%em32
   sm33             = grid%sm33
   em33             = grid%em33
   sm31x            = grid%sm31x
   em31x            = grid%em31x
   sm32x            = grid%sm32x
   em32x            = grid%em32x
   sm33x            = grid%sm33x
   em33x            = grid%em33x
   sm31y            = grid%sm31y
   em31y            = grid%em31y
   sm32y            = grid%sm32y
   em32y            = grid%em32y
   sm33y            = grid%sm33y
   em33y            = grid%em33y
#endif

   CALL get_dyn_opt( dyn_opt )
  
   CALL set_scalar_indices_from_config ( head_grid%id , idum1, idum2 )

   IF ( .FALSE.                  ) THEN

#if (EM_CORE == 1)
   ELSE IF (      dyn_opt .eq. DYN_EM ) THEN
     CALL start_domain_em( grid, &
!
# include <em_actual_args.inc>
!
                         )
#endif
#if (NMM_CORE == 1)
   ELSE IF (      dyn_opt .eq. DYN_NMM ) THEN
     CALL start_domain_nmm( grid, &
!
# include <nmm_actual_args.inc>
!
                         )
#endif
#if (COAMPS_CORE == 1)
   ELSE IF (      dyn_opt .eq. DYN_COAMPS ) THEN
     CALL start_domain_coamps( grid, &
!
# include <coamps_actual_args.inc>
!
                         )
#endif
#if (GRAPS_CORE == 1)
   ELSE IF (      dyn_opt .eq. DYN_GRAPS ) THEN
     CALL start_domain_graps( grid, &
!
# include <graps_actual_args.inc>
!
                         )
#endif

!### 4a. edit share/start_domain.F to call domain inits for core if any

#if (EXP_CORE == 1)
   ELSE IF (      dyn_opt .eq. DYN_EXP ) THEN
#endif

   ELSE

     WRITE(0,*)' start_domain: unknown or unimplemented dyn_opt = ',dyn_opt
     STOP
   ENDIF


END SUBROUTINE start_domain