MODULE m_Arrays

USE m_Parameters
 
IMPLICIT NONE

PRIVATE

PUBLIC :: Get_Arrays, Free_Arrays

REAL (KIND=kr8), DIMENSION (:), ALLOCATABLE, PUBLIC :: glat, wglat, dn, cn, cn2, prslev, z0

REAL (KIND=kr4), DIMENSION (:), ALLOCATABLE, PUBLIC :: buff

REAL (KIND=kr4), DIMENSION (:,:), ALLOCATABLE, PUBLIC :: buf

REAL (KIND=kr8), DIMENSION (:,:), ALLOCATABLE, PUBLIC :: ect, ept, ett, fn

REAL (KIND=kr8), DIMENSION (:,:,:), ALLOCATABLE, PUBLIC :: &
                 uobs, vobs, hobs, un, vn, hn, ec, ep, et, pe


CONTAINS


SUBROUTINE Get_Arrays

  IMPLICIT NONE

  ALLOCATE (glat(Jmax))
  ALLOCATE (wglat(Jmax))
  ALLOCATE (dn(Kmax), cn(Kmax), cn2(Kmax))
  ALLOCATE (prslev(Kmax))
  ALLOCATE (z0(Kmax))
  ALLOCATE (buff(Kmax), buf(Imax,Jmax))
  ALLOCATE (ect(Imax,Jmax), ept(Imax,Jmax), ett(Imax,Jmax))
  ALLOCATE (fn(Kmax,Kmax))
  ALLOCATE (uobs(Imax,Jmax,Kmax), vobs(Imax,Jmax,Kmax), hobs(Imax,Jmax,Kmax))
  ALLOCATE (un(Imax,Jmax,Kmax), vn(Imax,Jmax,Kmax), hn(Imax,Jmax,Kmax))
  ALLOCATE (ec(Imax,Jmax,Kmax), ep(Imax,Jmax,Kmax), et(Imax,Jmax,Kmax))
  ALLOCATE (pe(Imax,Jmax,Kmax))

CALL Init_Arrays

END SUBROUTINE Get_Arrays


SUBROUTINE Free_Arrays

  IMPLICIT NONE

  DEALLOCATE (glat)
  DEALLOCATE (wglat)
  DEALLOCATE (dn, cn, cn2)
  DEALLOCATE (prslev)
  DEALLOCATE (z0)
  DEALLOCATE (buff, buf)
  DEALLOCATE (ect, ept, ett)
  DEALLOCATE (fn)
  DEALLOCATE (uobs, vobs, hobs)
  DEALLOCATE (un, vn, hn)
  DEALLOCATE (ec, ep, et)
  DEALLOCATE (pe)

END SUBROUTINE Free_Arrays


SUBROUTINE Init_Arrays

  IMPLICIT NONE

  glat=0.0
  wglat=0.0
  dn=0.0
  prslev=0.0
  z0=0.0
  buff=0.0; buf=0.0
  ect=0.0; ept=0.0; ett=0.0
  fn=0.0
  uobs=0.0; vobs=0.0; hobs=0.0
  un=0.0; vn=0.0; hn=0.0
  ec=0.0; ep=0.0; et=0.0
  pe=0.0

END SUBROUTINE Init_Arrays


END MODULE m_Arrays
