!WRF:MEDIATION_LAYER:ADT_BARRIER
!


SUBROUTINE start_domain ( grid ) 2,5
!   USE module_start_em
!   USE module_start_eh

   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 (      dyn_opt .eq. DYN_EH ) THEN

     CALL start_domain_eh( grid, &
!
#include <eh_actual_args.inc>
!
                         )
   ELSE IF (      dyn_opt .eq. DYN_EM ) THEN

     CALL start_domain_em( grid, &
!
#include <em_actual_args.inc>
!
                         )

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

   ELSE IF (      dyn_opt .eq. DYN_EXP ) THEN


   ELSE

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


END SUBROUTINE start_domain