SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/diag_misc_flaken.F90
Go to the documentation of this file.
00001 !     #########
00002        SUBROUTINE DIAG_MISC_FLAKE_n(PT_WML,PT_BOT,PH_ML,PCT,PWATER_DEPTH)
00003 !     ###############################################################################
00004 !
00005 !!****  *DIAG_MISC-FLAKE_n * - additional diagnostics for FLake
00006 !!
00007 !!    PURPOSE
00008 !!    -------
00009 !
00010 !!**  METHOD
00011 !!    ------
00012 !!
00013 !!    REFERENCE
00014 !!    ---------
00015 !!      
00016 !!
00017 !!    AUTHOR
00018 !!    ------
00019 !!     P. Le Moigne 
00020 !!
00021 !!    MODIFICATIONS
00022 !!    -------------
00023 !!      Original    10/2005
00024 !!------------------------------------------------------------------
00025 !
00026 !
00027 !
00028 USE MODD_DIAG_MISC_FLAKE_n,    ONLY : LWATER_PROFILE, XZW_PROFILE, XTW_PROFILE
00029 USE MODD_SURF_PAR,           ONLY : XUNDEF
00030 !
00031 !
00032 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00033 USE PARKIND1  ,ONLY : JPRB
00034 !
00035 IMPLICIT NONE
00036 !
00037 !*      0.1    declarations of arguments
00038 !
00039        REAL, DIMENSION(:), INTENT(IN) :: PT_WML       ! Mixed-layer temperature [K]
00040        REAL, DIMENSION(:), INTENT(IN) :: PT_BOT       ! Temperature at the water-bottom sediment 
00041        REAL, DIMENSION(:), INTENT(IN) :: PH_ML        ! Thickness of the mixed-layer [m]
00042        REAL, DIMENSION(:), INTENT(IN) :: PCT          ! Shape factor (thermocline)
00043        REAL, DIMENSION(:), INTENT(IN) :: PWATER_DEPTH ! Lake depth 
00044 !
00045 !*      0.2    declarations of local variables
00046 !
00047        REAL, DIMENSION(SIZE(XZW_PROFILE),SIZE(PT_WML)) :: ZCSI      ! Vertical normalized coordinate
00048        REAL, DIMENSION(SIZE(XZW_PROFILE),SIZE(PT_WML)) :: ZSHAPE    ! Shape function 
00049        INTEGER ::                           IZW
00050        REAL(KIND=JPRB) :: ZHOOK_HANDLE
00051 
00052 !
00053 !-------------------------------------------------------------------------------------
00054 !
00055 IF (LHOOK) CALL DR_HOOK('DIAG_MISC_FLAKE_N',0,ZHOOK_HANDLE)
00056 XTW_PROFILE = XUNDEF
00057 IF (LWATER_PROFILE) THEN
00058    DO IZW=1,SIZE(XZW_PROFILE)
00059       WHERE (PWATER_DEPTH(:)==PH_ML(:))
00060          ZCSI(IZW,:) = 0.
00061       ELSEWHERE
00062          ZCSI(IZW,:) = (XZW_PROFILE(IZW) - PH_ML(:))/(PWATER_DEPTH(:) - PH_ML(:))
00063       END WHERE
00064       ZSHAPE(IZW,:) = (40./3.*PCT-20./3.)*ZCSI(IZW,:)+(18-30*PCT)*ZCSI(IZW,:)**2 &
00065                         +(20*PCT-12)*ZCSI(IZW,:)**3+(5./3.-10./3.*PCT)*ZCSI(IZW,:)**4  
00066    END DO
00067    DO IZW=1,SIZE(XZW_PROFILE)
00068       WHERE (PH_ML(:) >= XZW_PROFILE(IZW))
00069          XTW_PROFILE(IZW,:) =  PT_WML(:) 
00070       ELSEWHERE (PWATER_DEPTH(:) >= XZW_PROFILE(IZW)) 
00071          XTW_PROFILE(IZW,:) = PT_WML(:) - (PT_WML(:) - PT_BOT(:)) * ZSHAPE(IZW,:)
00072       END WHERE
00073    END DO
00074 END IF
00075 IF (LHOOK) CALL DR_HOOK('DIAG_MISC_FLAKE_N',1,ZHOOK_HANDLE)
00076 !
00077 !-------------------------------------------------------------------------------------
00078 !
00079 END SUBROUTINE DIAG_MISC_FLAKE_n