Fortran: Module Interface m2d - depth integrated hydrodynamical model (2D) (Source File: m2d.F90)

INTERFACE:

    module m2d
DESCRIPTION:

This module contains declarations for all variables related to 2D hydrodynamical calculations. Information about the calculation domain is included from the domain module. The module contains public subroutines for initialisation, integration and clean up of the 2D model component. The actual calculation routines are called in integrate_2d and are linked in from the library lib2d.a. USES:

    use exceptions
    use time, only: julianday,secondsofday
    use parameters, only: avmmol
    use domain, only: imin,imax,jmin,jmax,az,au,av,H,min_depth
    use domain, only: ilg,ihg,jlg,jhg
    use domain, only: ill,ihl,jll,jhl
    use domain, only: openbdy,have_boundaries,z0_method,z0_const,z0
    use domain, only: az,ax
  KB   use get_field, only: get_2d_field
    use advection, only: init_advection,print_adv_settings,NOADV
    use halo_zones, only: update_2d_halo,wait_halo,H_TAG
    use variables_2d
 
    IMPLICIT NONE
 
    interface
 
       subroutine uv_advect(U,V,DU,DV)
          use domain, only: imin,imax,jmin,jmax
          IMPLICIT NONE
          REALTYPE,dimension(E2DFIELD),intent(in)        :: U,V
          REALTYPE,dimension(E2DFIELD),target,intent(in) :: DU,DV
       end subroutine uv_advect
 
       subroutine uv_diffusion(An_method,U,V,D,DU,DV)
          use domain, only: imin,imax,jmin,jmax
          IMPLICIT NONE
          integer,intent(in)                      :: An_method
          REALTYPE,dimension(E2DFIELD),intent(in) :: U,V,D,DU,DV
       end subroutine uv_diffusion
 
       subroutine uv_diff_2dh(An_method,UEx,VEx,U,V,D,DU,DV,hsd_u,hsd_v)
          use domain, only: imin,imax,jmin,jmax
          IMPLICIT NONE
          integer,intent(in)                                :: An_method
          REALTYPE,dimension(E2DFIELD),intent(in),optional  :: U,V,D,DU,DV
          REALTYPE,dimension(E2DFIELD),intent(inout)        :: UEx,VEx
          REALTYPE,dimension(E2DFIELD),intent(out),optional :: hsd_u,hsd_v
       end subroutine uv_diff_2dh
 
   Temporary interface (should be read from module):
       subroutine get_2d_field(fn,varname,il,ih,jl,jh,break_on_missing,f)
          character(len=*),intent(in)   :: fn,varname
          integer, intent(in)           :: il,ih,jl,jh
          logical, intent(in)           :: break_on_missing
          REALTYPE, intent(out)         :: f(:,:)
       end subroutine get_2d_field
    end interface
PUBLIC DATA MEMBERS:
    REALTYPE                  :: dtm
    integer                   :: vel2d_adv_split=0
    integer                   :: vel2d_adv_hor=1
    REALTYPE                  :: Am=-_ONE_
    method for specifying horizontal numerical diffusion coefficient
       (0=const, 1=from named nc-file)
    integer                   :: An_method=0
    REALTYPE                  :: An_const=-_ONE_
    character(LEN = PATH_MAX) :: An_file
 
    integer                   :: MM=1,residual=-1
    integer                   :: sealevel_check=0
    logical                   :: bdy2d=.false.
    integer                   :: bdyfmt_2d,bdytype,bdy2d_ramp=-1
    character(len=PATH_MAX)   :: bdyfile_2d
    REAL_4B                   :: bdy_data(1500)
    REAL_4B                   :: bdy_data_u(1500)
    REAL_4B                   :: bdy_data_v(1500)
    REAL_4B, allocatable      :: bdy_times(:)
REVISION HISTORY:
    Original author(s): Karsten Bolding & Hans Burchard
LOCAL VARIABLES:
   integer                    :: num_neighbors
   REALTYPE                   :: An_sum



Subsections

kklingbe 2017-10-02