!WRF:PACKAGE:NODM
!

MODULE  module_dm (docs)   103

  CONTAINS

   SUBROUTINE  init_module_dm (docs)   1,3
   END SUBROUTINE init_module_dm


   REAL FUNCTION  wrf_dm_max_real (docs)   ( inval )
      IMPLICIT NONE
      REAL inval
      wrf_dm_max_real = inval
   END FUNCTION wrf_dm_max_real


   REAL FUNCTION  wrf_dm_min_real (docs)   ( inval ) 7
      IMPLICIT NONE
      REAL inval
      wrf_dm_min_real = inval
   END FUNCTION wrf_dm_min_real


   SUBROUTINE  wrf_dm_min_reals (docs)   ( inval, retval, n ) 15
      IMPLICIT NONE
      INTEGER, INTENT(IN) :: n
      REAL, INTENT(IN) :: inval(:)
      REAL, INTENT(OUT) :: retval(:)
      retval(:) = inval(:)
   END SUBROUTINE wrf_dm_min_reals


   REAL FUNCTION  wrf_dm_sum_real (docs)   ( inval )
      IMPLICIT NONE
      REAL inval
      wrf_dm_sum_real = inval
   END FUNCTION wrf_dm_sum_real


   SUBROUTINE  wrf_dm_sum_reals (docs)   ( inval, retval )
      IMPLICIT NONE
      REAL, INTENT(IN) :: inval(:)
      REAL, INTENT(OUT) :: retval(:)
      retval(:) = inval(:)
   END SUBROUTINE wrf_dm_sum_reals


   INTEGER FUNCTION  wrf_dm_sum_integer (docs)   ( inval )
      IMPLICIT NONE
      INTEGER inval
      wrf_dm_sum_integer = inval
   END FUNCTION wrf_dm_sum_integer


   SUBROUTINE  wrf_dm_maxval (docs)   ( val, idex, jdex ) 9
      IMPLICIT NONE
      REAL val
      INTEGER idex, jdex
      RETURN
   END SUBROUTINE wrf_dm_maxval


  SUBROUTINE  wrf_dm_minval (docs)   ( val, idex, jdex )
     IMPLICIT NONE
     REAL val
     INTEGER idex, jdex
     RETURN
  END SUBROUTINE wrf_dm_minval

! stub

   SUBROUTINE  wrf_dm_move_nest (docs)   ( parent, nest, dx, dy ) 2,2
      USE module_domain
      TYPE (domain), INTENT(INOUT) :: parent, nest
      INTEGER, INTENT(IN)          :: dx,dy
      RETURN
   END SUBROUTINE wrf_dm_move_nest

END MODULE module_dm

!=========================================================================

! These are stub functions that do the right thing (usually nothing)
! in case DM_PARALLEL is not compiled for.
! This file, src/module_dm_stubs.F is copied to src/module_dm.F  when
! the code is built.
! If, on the other hand, a DM package is specified, the module_dm.F 
! provided with that package (e.g. RSL) is copied from /external/RSL/module_dm.F
! into src/module_dm.F.
! It is important to recognize this, because changes directly to src/module_dm.F
! will be lost!


LOGICAL FUNCTION  wrf_dm_on_monitor (docs)  (),1
  wrf_dm_on_monitor = .true.
END FUNCTION wrf_dm_on_monitor


INTEGER FUNCTION  wrf_dm_monitor_rank (docs)  () 2
  wrf_dm_monitor_rank = 0
END FUNCTION wrf_dm_monitor_rank


SUBROUTINE  wrf_get_myproc (docs)  ( myproc ) 22,1
  IMPLICIT NONE
  INTEGER myproc
  myproc = 0
  RETURN
END SUBROUTINE wrf_get_myproc


SUBROUTINE  wrf_get_nproc (docs)  ( nprocs ) 11,1
  IMPLICIT NONE
  INTEGER nprocs
  nprocs = 1
  RETURN
END SUBROUTINE wrf_get_nproc


SUBROUTINE  wrf_get_nprocx (docs)  ( nprocs ),1
  IMPLICIT NONE
  INTEGER nprocs
  nprocs = 1
  RETURN
END SUBROUTINE wrf_get_nprocx


SUBROUTINE  wrf_get_nprocy (docs)  ( nprocs ),1
  IMPLICIT NONE
  INTEGER nprocs
  nprocs = 1
  RETURN
END SUBROUTINE wrf_get_nprocy


SUBROUTINE  wrf_dm_bcast_string (docs)   ( buf , size ) 17,2
  IMPLICIT NONE
  INTEGER size
  INTEGER BUF(*)
  RETURN
END SUBROUTINE wrf_dm_bcast_string


SUBROUTINE  wrf_dm_bcast_bytes (docs)   ( buf , size ) 201,1
  IMPLICIT NONE
  INTEGER size
  INTEGER BUF(*)
  RETURN
END SUBROUTINE wrf_dm_bcast_bytes


SUBROUTINE  wrf_dm_bcast_integer (docs)  ( BUF, N1 ) 43,1
   IMPLICIT NONE
   INTEGER n1
   INTEGER  buf(*)
   RETURN
END SUBROUTINE wrf_dm_bcast_integer


SUBROUTINE  wrf_dm_bcast_real (docs)  ( BUF, N1 ) 143,1
   IMPLICIT NONE
   INTEGER n1
   REAL  buf(*)
   RETURN
END SUBROUTINE wrf_dm_bcast_real


SUBROUTINE  wrf_dm_bcast_logical (docs)  ( BUF, N1 ),1
   IMPLICIT NONE
   INTEGER n1
   LOGICAL  buf(*)
   RETURN
END SUBROUTINE wrf_dm_bcast_logical


SUBROUTINE  wrf_dm_halo (docs)   ( domdesc , comms , stencil_id )
   IMPLICIT NONE
   INTEGER domdesc , comms(*) , stencil_id
   RETURN
END SUBROUTINE wrf_dm_halo


SUBROUTINE  wrf_dm_boundary (docs)   ( domdesc , comms , period_id , &
                             periodic_x , periodic_y )
   IMPLICIT NONE
   INTEGER domdesc , comms(*) , period_id
   LOGICAL , INTENT(IN)      :: periodic_x, periodic_y
   RETURN
END SUBROUTINE wrf_dm_boundary


SUBROUTINE  wrf_dm_xpose_z2x (docs)   ( domdesc , comms , xpose_id  )
   IMPLICIT NONE
   INTEGER domdesc , comms(*), xpose_id
   RETURN
END SUBROUTINE wrf_dm_xpose_z2x

SUBROUTINE  wrf_dm_xpose_x2y (docs)   ( domdesc , comms , xpose_id  )
   IMPLICIT NONE
   INTEGER domdesc , comms(*), xpose_id
   RETURN
END SUBROUTINE wrf_dm_xpose_x2y

SUBROUTINE  wrf_dm_xpose_y2z (docs)   ( domdesc , comms , xpose_id  )
   IMPLICIT NONE
   INTEGER domdesc , comms(*), xpose_id
   RETURN
END SUBROUTINE wrf_dm_xpose_y2z


SUBROUTINE  wrf_dm_define_comms (docs)   ( grid ) 1,2
   USE module_domain
   IMPLICIT NONE
   TYPE(domain) , INTENT (INOUT) :: grid
   RETURN
END SUBROUTINE wrf_dm_define_comms


SUBROUTINE  wrf_get_dm_communicator (docs)   ( communicator ) 24,1
   IMPLICIT NONE
   INTEGER , INTENT(OUT) :: communicator
   communicator = 0
   RETURN
END SUBROUTINE wrf_get_dm_communicator


SUBROUTINE  wrf_get_dm_iocommunicator (docs)   ( iocommunicator ),1
   IMPLICIT NONE
   INTEGER , INTENT(OUT) :: iocommunicator
   iocommunicator = 0
   RETURN
END SUBROUTINE wrf_get_dm_iocommunicator


SUBROUTINE  wrf_dm_shutdown (docs)   2
      RETURN
END SUBROUTINE wrf_dm_shutdown

SUBROUTINE  wrf_abort (docs)   1
      STOP 'wrf_abort'
END SUBROUTINE wrf_abort


SUBROUTINE  wrf_patch_to_global_real (docs)   (buf,globbuf,domdesc,ndim,& 12,1
                                       ids,ide,jds,jde,kds,kde,&
                                       ims,ime,jms,jme,kms,kme,&
                                       ips,ipe,jps,jpe,kps,kpe )
   IMPLICIT NONE
   INTEGER                             ids,ide,jds,jde,kds,kde,&
                                       ims,ime,jms,jme,kms,kme,&
                                       ips,ipe,jps,jpe,kps,kpe
   INTEGER fid,domdesc,ndim,glen(3),llen(3)
   REAL globbuf(*)
   REAL buf(*)
   RETURN
END SUBROUTINE wrf_patch_to_global_real


SUBROUTINE  wrf_global_to_patch_real (docs)   (globbuf,buf,domdesc,ndim,& 3,1
                                       ids,ide,jds,jde,kds,kde,&
                                       ims,ime,jms,jme,kms,kme,&
                                       ips,ipe,jps,jpe,kps,kpe )
   IMPLICIT NONE
   INTEGER                             ids,ide,jds,jde,kds,kde,&
                                       ims,ime,jms,jme,kms,kme,&
                                       ips,ipe,jps,jpe,kps,kpe
   INTEGER fid,domdesc,ndim,glen(3),llen(3)
   REAL globbuf(*)
   REAL buf(*)
   RETURN
END SUBROUTINE wrf_global_to_patch_real



SUBROUTINE  wrf_patch_to_global_double (docs)   (buf,globbuf,domdesc,ndim,& 2,1
                                       ids,ide,jds,jde,kds,kde,&
                                       ims,ime,jms,jme,kms,kme,&
                                       ips,ipe,jps,jpe,kps,kpe )
   IMPLICIT NONE
   INTEGER                             ids,ide,jds,jde,kds,kde,&
                                       ims,ime,jms,jme,kms,kme,&
                                       ips,ipe,jps,jpe,kps,kpe
   INTEGER fid,domdesc,ndim,glen(3),llen(3)
   DOUBLE PRECISION globbuf(*)
   DOUBLE PRECISION buf(*)
   RETURN
END SUBROUTINE wrf_patch_to_global_double


SUBROUTINE  wrf_global_to_patch_double (docs)   (globbuf,buf,domdesc,ndim,& 2,1
                                       ids,ide,jds,jde,kds,kde,&
                                       ims,ime,jms,jme,kms,kme,&
                                       ips,ipe,jps,jpe,kps,kpe )
   IMPLICIT NONE
   INTEGER                             ids,ide,jds,jde,kds,kde,&
                                       ims,ime,jms,jme,kms,kme,&
                                       ips,ipe,jps,jpe,kps,kpe
   INTEGER fid,domdesc,ndim,glen(3),llen(3)
   DOUBLE PRECISION globbuf(*)
   DOUBLE PRECISION buf(*)
   RETURN
END SUBROUTINE wrf_global_to_patch_double


SUBROUTINE  wrf_patch_to_global_integer (docs)   (buf,globbuf,domdesc,ndim,& 2,1
                                       ids,ide,jds,jde,kds,kde,&
                                       ims,ime,jms,jme,kms,kme,&
                                       ips,ipe,jps,jpe,kps,kpe )
   IMPLICIT NONE
   INTEGER                             ids,ide,jds,jde,kds,kde,&
                                       ims,ime,jms,jme,kms,kme,&
                                       ips,ipe,jps,jpe,kps,kpe
   INTEGER fid,domdesc,ndim,glen(3),llen(3)
   INTEGER globbuf(*)
   INTEGER buf(*)
   RETURN
END SUBROUTINE wrf_patch_to_global_integer


SUBROUTINE  wrf_global_to_patch_integer (docs)   (globbuf,buf,domdesc,ndim,& 2,1
                                       ids,ide,jds,jde,kds,kde,&
                                       ims,ime,jms,jme,kms,kme,&
                                       ips,ipe,jps,jpe,kps,kpe )
   IMPLICIT NONE
   INTEGER                             ids,ide,jds,jde,kds,kde,&
                                       ims,ime,jms,jme,kms,kme,&
                                       ips,ipe,jps,jpe,kps,kpe
   INTEGER fid,domdesc,ndim,glen(3),llen(3)
   INTEGER globbuf(*)
   INTEGER buf(*)
   RETURN
END SUBROUTINE wrf_global_to_patch_integer


SUBROUTINE  wrf_patch_to_global_logical (docs)   (buf,globbuf,domdesc,ndim,& 2,1
                                       ids,ide,jds,jde,kds,kde,&
                                       ims,ime,jms,jme,kms,kme,&
                                       ips,ipe,jps,jpe,kps,kpe )
   IMPLICIT NONE
   INTEGER                             ids,ide,jds,jde,kds,kde,&
                                       ims,ime,jms,jme,kms,kme,&
                                       ips,ipe,jps,jpe,kps,kpe
   INTEGER fid,domdesc,ndim,glen(3),llen(3)
   LOGICAL globbuf(*)
   LOGICAL buf(*)
   RETURN
END SUBROUTINE wrf_patch_to_global_logical


SUBROUTINE  wrf_global_to_patch_LOGICAL (docs)   (globbuf,buf,domdesc,ndim,& 2,1
                                       ids,ide,jds,jde,kds,kde,&
                                       ims,ime,jms,jme,kms,kme,&
                                       ips,ipe,jps,jpe,kps,kpe )
   IMPLICIT NONE
   INTEGER                             ids,ide,jds,jde,kds,kde,&
                                       ims,ime,jms,jme,kms,kme,&
                                       ips,ipe,jps,jpe,kps,kpe
   INTEGER fid,domdesc,ndim,glen(3),llen(3)
   LOGICAL globbuf(*)
   LOGICAL buf(*)
   RETURN
END SUBROUTINE wrf_global_to_patch_LOGICAL