modd_sfx_gridn.F90 Source File


Contents

Source Code


Source Code

!SFX_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
!SFX_LIC This is part of the SURFEX software governed by the CeCILL version 2.1
!SFX_LIC version 1. See LICENSE, Licence_CeCILL_V2.1-en.txt and Licence_CeCILL_V2.1-fr.txt  
!SFX_LIC for details. version 1.
!     ##################
      MODULE MODD_SFX_GRID_n
!     ##################
!
!!****  *MODD_ISBA - declaration of grid for ISBA scheme
!!
!!    PURPOSE
!!    -------
!
!!
!!**  IMPLICIT ARGUMENTS
!!    ------------------
!!      None 
!!
!!    REFERENCE
!!    ---------
!!
!!    AUTHOR
!!    ------
!!      V. Masson   *Meteo France*
!!
!!    MODIFICATIONS
!!    -------------
!!      Original       01/2004
!
!*       0.   DECLARATIONS
!             ------------
!
!
USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
USE PARKIND1  ,ONLY : JPRB
!
IMPLICIT NONE

TYPE GRID_t
!-------------------------------------------------------------------------------
!
! Grid definition
!
  INTEGER                         :: NDIM        ! number of points
  CHARACTER(LEN=10)               :: CGRID       ! grid type
!                                              ! "NONE        " : no grid computations
!                                              ! "CONF PROJ   " : conformal projection
!                                              ! "SURF ATM    " : nature points of surf. atm. grid
!
  INTEGER                         :: NGRID_PAR   ! size of XGRID_PAR
  REAL, POINTER,     DIMENSION(:) :: XGRID_PAR   ! lits of parameters used to define the grid
!                                              ! (depends on value of CGRID)
!
!-------------------------------------------------------------------------------
!
! General surface parameters:
!
  REAL, POINTER, DIMENSION(:) :: XLAT        ! latitude (degrees +North)               (-)
  REAL, POINTER, DIMENSION(:) :: XLON        ! longitude (degrees +East)               (-)
  REAL, POINTER, DIMENSION(:) :: XMESH_SIZE  ! mesh size                               (m2)
!-------------------------------------------------------------------------------
!
END TYPE GRID_t
!
TYPE GRID_NP_t
!
TYPE(GRID_t), DIMENSION(:), POINTER :: AL=>NULL()
!
END TYPE GRID_NP_t
!
CONTAINS
!
SUBROUTINE GRID_INIT(G)
TYPE(GRID_t), INTENT(INOUT) :: G
REAL(KIND=JPRB) :: ZHOOK_HANDLE
IF (LHOOK) CALL DR_HOOK("MODD_SFX_GRID_N:IGRID_INIT",0,ZHOOK_HANDLE)
  NULLIFY(G%XGRID_PAR)
  NULLIFY(G%XLAT)
  NULLIFY(G%XLON)
  NULLIFY(G%XMESH_SIZE)
G%NDIM=0
G%CGRID=' '
IF (LHOOK) CALL DR_HOOK("MODD_SFX_GRID_N:GRID_INIT",1,ZHOOK_HANDLE)
END SUBROUTINE GRID_INIT
!
SUBROUTINE GRID_NP_INIT(GP,KPATCH)
TYPE(GRID_NP_t), INTENT(INOUT) :: GP
INTEGER, INTENT(IN) :: KPATCH
INTEGER :: JP
REAL(KIND=JPRB) :: ZHOOK_HANDLE
IF (LHOOK) CALL DR_HOOK("MODD_SFX_GRID_N:GRID_NP_INIT",0,ZHOOK_HANDLE)

IF (ASSOCIATED(GP%AL)) THEN
  DO JP=1,KPATCH
    CALL GRID_INIT(GP%AL(JP))
  ENDDO  
  DEALLOCATE(GP%AL)
ELSE
  ALLOCATE(GP%AL(KPATCH))
  DO JP=1,KPATCH
    CALL GRID_INIT(GP%AL(JP))
  ENDDO
ENDIF  
!
IF (LHOOK) CALL DR_HOOK("MODD_SFX_GRID_N:GRID_NP_INIT",1,ZHOOK_HANDLE)
END SUBROUTINE GRID_NP_INIT
!
END MODULE MODD_SFX_GRID_n