modd_flaken.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_FLAKE_n
!     ####################
!
!!****  *MODD_FLAKE_n - declaration of surface parameters for the FLake model 
!!                      for inland water surfaces
!!
!!    PURPOSE
!!    -------
!     Declaration of surface parameters
!
!!
!!**  IMPLICIT ARGUMENTS
!!    ------------------
!!      None 
!!
!!    REFERENCE
!!    ---------
!!
!!    AUTHOR
!!    ------
!!      V. Masson  *Meteo France*
!!
!!    MODIFICATIONS
!!    -------------
!!      Original       01/2004
!
!*       0.   DECLARATIONS
!             ------------
!
USE MODD_TYPE_DATE_SURF
!
USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
USE PARKIND1  ,ONLY : JPRB
!
IMPLICIT NONE
!
TYPE FLAKE_t 
!
!-------------------------------------------------------------------------------------
! General surface: 
!-------------------------------------------------------------------------------------
!
  REAL, POINTER, DIMENSION(:) :: XZS       ! orography                     (m)
  REAL, POINTER, DIMENSION(:) :: XZ0       ! roughness length              (m)
  REAL, POINTER, DIMENSION(:) :: XUSTAR    ! air friction velocity         (m/s)
  REAL, POINTER, DIMENSION(:) :: XEMIS     ! water surface emissivity (NOT USED BY FLAKE)
!
  REAL, POINTER, DIMENSION(:,:) :: XCOVER  ! fraction of each ecosystem    (-)
!                                          ! F: no atmospheric layers below forcing level  
!
  LOGICAL, POINTER, DIMENSION(:) :: LCOVER ! GCOVER(i)=T --> ith cover field is not 0.
  LOGICAL                        :: LSBL   ! T: SBL scheme within the Surface Boundary Layer
!
!-------------------------------------------------------------------------------------
! Date and time:
!-------------------------------------------------------------------------------------
!
  TYPE (DATE_TIME)                  :: TTIME         ! current date and time
!
  REAL                              :: XTSTEP        ! time step
!
  REAL                              :: XOUT_TSTEP    ! output writing time step
!
!-------------------------------------------------------------------------------------
! FLake switches
!-------------------------------------------------------------------------------------
!
  LOGICAL            :: LSEDIMENTS  ! flag to use or not the bottom sediments
  LOGICAL            :: LSKINTEMP   ! flag to use or not the skin temperature computation
  CHARACTER(LEN=3)   :: CSNOW_FLK   ! FLake snow scheme
  CHARACTER(LEN=5)   :: CFLK_FLUX   ! Type of flux computation
  CHARACTER(LEN=4)   :: CFLK_ALB    ! Type of albedo
!
!-------------------------------------------------------------------------------------
! FLake parameters and variables
!-------------------------------------------------------------------------------------
!
  REAL, POINTER, DIMENSION(:) :: XWATER_DEPTH  ! Lake depth (m)
  REAL, POINTER, DIMENSION(:) :: XWATER_FETCH  ! Lake fetch (m)
  REAL, POINTER, DIMENSION(:) :: XT_BS         ! Temperature at the outer edge of the thermally 
                                               !       active layer of the bottom sediments [K]
  REAL, POINTER, DIMENSION(:) :: XDEPTH_BS     ! Depth of the thermally active layer of the
                                               !       bottom sediments [m]
  REAL, POINTER, DIMENSION(:) :: XCORIO        ! The Coriolis parameter [s^{-1}]
  REAL, POINTER, DIMENSION(:) :: XDIR_ALB      ! Water surface direct albedo
  REAL, POINTER, DIMENSION(:) :: XSCA_ALB      ! Water surface diffuse albedo
  REAL, POINTER, DIMENSION(:) :: XICE_ALB      ! Ice surface albedo (for ESM coupling)
  REAL, POINTER, DIMENSION(:) :: XSNOW_ALB     ! Snow surface albedo
  REAL, POINTER, DIMENSION(:) :: XEXTCOEF_WATER ! Extinction coefficient for the water [m^{-1}]
  REAL, POINTER, DIMENSION(:) :: XEXTCOEF_ICE   ! Extinction coefficient for the ice [m^{-1}]
  REAL, POINTER, DIMENSION(:) :: XEXTCOEF_SNOW  ! Extinction coefficient for the snow [m^{-1}] 
  REAL, POINTER, DIMENSION(:) :: XT_SNOW       ! Temperature at the air-snow interface [K]    
  REAL, POINTER, DIMENSION(:) :: XT_ICE        ! Temperature at the snow-ice or air-ice 
                                               !        interface [K]
  REAL, POINTER, DIMENSION(:) :: XT_MNW        ! Mean temperature of the water column [K]
  REAL, POINTER, DIMENSION(:) :: XT_WML        ! Mixed-layer temperature [K]
  REAL, POINTER, DIMENSION(:) :: XT_BOT        ! Temperature at the water-bottom sediment 
                                               !        interface [K]
  REAL, POINTER, DIMENSION(:) :: XT_B1         ! Temperature at the bottom of the upper 
                                               !        layer of the sediments [K]
  REAL, POINTER, DIMENSION(:) :: XCT           ! Shape factor (thermocline)
  REAL, POINTER, DIMENSION(:) :: XH_SNOW       ! Snow thickness [m]
  REAL, POINTER, DIMENSION(:) :: XH_ICE        ! Ice thickness [m]
  REAL, POINTER, DIMENSION(:) :: XH_ML         ! Thickness of the mixed-layer [m]
  REAL, POINTER, DIMENSION(:) :: XH_B1         ! Thickness of the upper layer of bottom sediments [m]                                    
!
  REAL, POINTER, DIMENSION(:) :: XTS  ! surface temperature  (K)
                                      ! (water or ice or snow)
!
!-------------------------------------------------------------------------------------
! Coupling field for Earth system model
!-------------------------------------------------------------------------------------
!
  REAL, POINTER, DIMENSION(:) :: XCPL_FLAKE_EVAP ! Evaporation for ESM coupling
  REAL, POINTER, DIMENSION(:) :: XCPL_FLAKE_RAIN ! Rainfall for ESM coupling
  REAL, POINTER, DIMENSION(:) :: XCPL_FLAKE_SNOW ! Snowfall for ESM coupling
!
END TYPE FLAKE_t
!
!-------------------------------------------------------------------------------------
!


CONTAINS
!
!-------------------------------------------------------------------------------------
!
!
!


!
!
!-------------------------------------------------------------------------------------
!
SUBROUTINE FLAKE_INIT(YFLAKE)
TYPE(FLAKE_t), INTENT(INOUT) :: YFLAKE
REAL(KIND=JPRB) :: ZHOOK_HANDLE
IF (LHOOK) CALL DR_HOOK("MODD_FLAKE_N:FLAKE_INIT",0,ZHOOK_HANDLE)
  NULLIFY(YFLAKE%XZS)
  NULLIFY(YFLAKE%XZ0)
  NULLIFY(YFLAKE%XUSTAR)
  NULLIFY(YFLAKE%XCOVER)
  NULLIFY(YFLAKE%LCOVER)
  NULLIFY(YFLAKE%XEMIS)
  NULLIFY(YFLAKE%XWATER_DEPTH)
  NULLIFY(YFLAKE%XWATER_FETCH)
  NULLIFY(YFLAKE%XT_BS)
  NULLIFY(YFLAKE%XDEPTH_BS)
  NULLIFY(YFLAKE%XCORIO)
  NULLIFY(YFLAKE%XDIR_ALB)
  NULLIFY(YFLAKE%XSCA_ALB)
  NULLIFY(YFLAKE%XICE_ALB)
  NULLIFY(YFLAKE%XSNOW_ALB)
  NULLIFY(YFLAKE%XEXTCOEF_WATER)
  NULLIFY(YFLAKE%XEXTCOEF_ICE)
  NULLIFY(YFLAKE%XEXTCOEF_SNOW)
  NULLIFY(YFLAKE%XT_SNOW)
  NULLIFY(YFLAKE%XT_ICE)
  NULLIFY(YFLAKE%XT_MNW)
  NULLIFY(YFLAKE%XT_WML)
  NULLIFY(YFLAKE%XT_BOT)
  NULLIFY(YFLAKE%XT_B1)
  NULLIFY(YFLAKE%XCT)
  NULLIFY(YFLAKE%XH_SNOW)
  NULLIFY(YFLAKE%XH_ICE)
  NULLIFY(YFLAKE%XH_ML)
  NULLIFY(YFLAKE%XH_B1)
  NULLIFY(YFLAKE%XTS)
  NULLIFY(YFLAKE%XCPL_FLAKE_EVAP)
  NULLIFY(YFLAKE%XCPL_FLAKE_RAIN)
  NULLIFY(YFLAKE%XCPL_FLAKE_SNOW)
YFLAKE%LSBL=.FALSE.
YFLAKE%XTSTEP=0.
YFLAKE%XOUT_TSTEP=0.
YFLAKE%LSEDIMENTS=.FALSE.
YFLAKE%LSKINTEMP=.FALSE.
YFLAKE%CSNOW_FLK='   '
YFLAKE%CFLK_ALB='    '
YFLAKE%CFLK_FLUX='     '
IF (LHOOK) CALL DR_HOOK("MODD_FLAKE_N:FLAKE_INIT",1,ZHOOK_HANDLE)
END SUBROUTINE FLAKE_INIT
!
!-------------------------------------------------------------------------------------
!
!
!-------------------------------------------------------------------------------------
!
END MODULE MODD_FLAKE_n