SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/diag_watfluxn.F90
Go to the documentation of this file.
00001 !     #########
00002 SUBROUTINE DIAG_WATFLUX_n(HPROGRAM,                                               &
00003                             PRN, PH, PLE, PLEI, PGFLUX, PRI, PCD, PCH, PCE, PQS,    &
00004                             PZ0, PZ0H, PT2M, PTS, PQ2M, PHU2M, PZON10M, PMER10M,    &
00005                             PSWD, PSWU, PLWD, PLWU, PSWBD, PSWBU, PFMU, PFMV,       &
00006                             PRNC, PHC, PLEC, PGFLUXC, PSWDC, PSWUC, PLWDC,          &
00007                             PLWUC, PFMUC, PFMVC, PT2M_MIN, PT2M_MAX, PLEIC,         &
00008                             PHU2M_MIN, PHU2M_MAX, PWIND10M, PWIND10M_MAX            )  
00009 !     ###############################################################################
00010 !
00011 !!****  *DIAG_WATFLUX_n * - diagnostics for lakes
00012 !!
00013 !!    PURPOSE
00014 !!    -------
00015 !
00016 !!**  METHOD
00017 !!    ------
00018 !!
00019 !!    REFERENCE
00020 !!    ---------
00021 !!      
00022 !!
00023 !!    AUTHOR
00024 !!    ------
00025 !!     V. Masson 
00026 !!
00027 !!    MODIFICATIONS
00028 !!    -------------
00029 !!      Original    01/2004
00030 !!      Modified    08/2009 : cumulated diag & t2m min/max
00031 !!------------------------------------------------------------------
00032 !
00033 
00034 !
00035 USE MODD_SURF_PAR,       ONLY : XUNDEF
00036 USE MODD_WATFLUX_n,      ONLY : TTIME
00037 USE MODD_DIAG_WATFLUX_n, ONLY : N2M, LSURF_BUDGET, LCOEF, LSURF_BUDGETC, LSURF_VARS, &
00038                                   XRN, XH, XLE, XLEI, XGFLUX, XRI, XCD, XCH, XCE,  &
00039                                   XQS, XZ0, XZ0H, XT2M, XQ2M, XHU2M, XZON10M, XMER10M,  &
00040                                   XSWD, XSWU, XSWBD, XSWBU, XLWD, XLWU, XFMU, XFMV,&
00041                                   XRNC, XHC, XLEC, XGFLUXC, XSWDC, XSWUC, XLWDC,   &
00042                                   XLWUC, XFMUC, XFMVC, XT2M_MIN, XT2M_MAX, XLEIC,  &
00043                                   XDIAG_TS, XHU2M_MIN, XHU2M_MAX, XWIND10M, XWIND10M_MAX  
00044 !                                
00045 !
00046 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00047 USE PARKIND1  ,ONLY : JPRB
00048 !
00049 IMPLICIT NONE
00050 !
00051 !*      0.1    declarations of arguments
00052 !
00053  CHARACTER(LEN=6),   INTENT(IN)  :: HPROGRAM ! program calling surf. schemes
00054 !
00055 REAL, DIMENSION(:), INTENT(OUT) :: PRN      ! Net radiation       (W/m2)
00056 REAL, DIMENSION(:), INTENT(OUT) :: PH       ! Sensible heat flux  (W/m2)
00057 REAL, DIMENSION(:), INTENT(OUT) :: PLE      ! Total latent heat flux    (W/m2)
00058 REAL, DIMENSION(:), INTENT(OUT) :: PLEI     ! Sublimation latent heat flux    (W/m2)
00059 REAL, DIMENSION(:), INTENT(OUT) :: PGFLUX   ! Storage flux        (W/m2)
00060 REAL, DIMENSION(:), INTENT(OUT) :: PRI      ! Richardson number   (-)
00061 REAL, DIMENSION(:), INTENT(OUT) :: PCD      ! drag coefficient    (W/s2)
00062 REAL, DIMENSION(:), INTENT(OUT) :: PCH      ! transf. coef heat   (W/s)
00063 REAL, DIMENSION(:), INTENT(OUT) :: PCE      ! transf. coef vapor  (W/s/K)
00064 REAL, DIMENSION(:), INTENT(OUT) :: PQS
00065 REAL, DIMENSION(:), INTENT(OUT) :: PZ0      ! rough. length wind  (m)
00066 REAL, DIMENSION(:), INTENT(OUT) :: PZ0H     ! rough. length heat  (m)
00067 REAL, DIMENSION(:), INTENT(OUT) :: PTS      ! surface temperature (K)
00068 REAL, DIMENSION(:), INTENT(OUT) :: PT2M     ! temperature at 2m   (K)
00069 REAL, DIMENSION(:), INTENT(OUT) :: PQ2M     ! humidity at 2m      (kg/kg)
00070 REAL, DIMENSION(:), INTENT(OUT) :: PHU2M    ! relative humidity at 2m (-)
00071 REAL, DIMENSION(:), INTENT(OUT) :: PZON10M  ! zonal wind at 10m   (m/s)
00072 REAL, DIMENSION(:), INTENT(OUT) :: PMER10M  ! meridian wind at 10m(m/s)
00073 REAL, DIMENSION(:), INTENT(OUT) :: PSWD     ! incoming short-wave radiation (W/m2)
00074 REAL, DIMENSION(:), INTENT(OUT) :: PSWU     ! upward short-wave radiation (W/m2)
00075 REAL, DIMENSION(:), INTENT(OUT) :: PLWD     ! incoming long-wave radiation (W/m2)
00076 REAL, DIMENSION(:), INTENT(OUT) :: PLWU     ! upward long-wave radiation (W/m2)
00077 REAL, DIMENSION(:,:), INTENT(OUT) :: PSWBD  ! incoming short-wave radiation by spectral band (W/m2)
00078 REAL, DIMENSION(:,:), INTENT(OUT) :: PSWBU  ! upward short-wave radiation by spectral band (W/m2)
00079 REAL, DIMENSION(:), INTENT(OUT) :: PFMU     ! zonal momentum flux (Pa)
00080 REAL, DIMENSION(:), INTENT(OUT) :: PFMV     ! meridian momentum flux (Pa)
00081 REAL, DIMENSION(:), INTENT(OUT) :: PRNC     ! Net radiation       (J/m2)
00082 REAL, DIMENSION(:), INTENT(OUT) :: PHC      ! Sensible heat flux  (J/m2)
00083 REAL, DIMENSION(:), INTENT(OUT) :: PLEC     ! Total latent heat flux    (J/m2)
00084 REAL, DIMENSION(:), INTENT(OUT) :: PLEIC    ! Sublimation latent heat flux    (J/m2)
00085 REAL, DIMENSION(:), INTENT(OUT) :: PGFLUXC  ! Storage flux        (J/m2)
00086 REAL, DIMENSION(:), INTENT(OUT) :: PSWDC    ! incoming short wave radiation (J/m2)
00087 REAL, DIMENSION(:), INTENT(OUT) :: PSWUC    ! outgoing short wave radiation (J/m2)
00088 REAL, DIMENSION(:), INTENT(OUT) :: PLWDC    ! incoming long wave radiation (J/m2)
00089 REAL, DIMENSION(:), INTENT(OUT) :: PLWUC    ! outgoing long wave radiation (J/m2)
00090 REAL, DIMENSION(:), INTENT(OUT) :: PFMUC    ! zonal friction
00091 REAL, DIMENSION(:), INTENT(OUT) :: PFMVC    ! meridian friction
00092 REAL, DIMENSION(:), INTENT(OUT) :: PT2M_MIN ! Minimum temperature at 2m   (K)
00093 REAL, DIMENSION(:), INTENT(OUT) :: PT2M_MAX ! Maximum temperature at 2m   (K)
00094 REAL, DIMENSION(:), INTENT(OUT) :: PHU2M_MIN! Minimum relative humidity at 2m (-)
00095 REAL, DIMENSION(:), INTENT(OUT) :: PHU2M_MAX! Maximum relative humidity at 2m (-)
00096 REAL, DIMENSION(:), INTENT(OUT) :: PWIND10M ! wind at 10m (m/s)
00097 REAL, DIMENSION(:), INTENT(OUT) :: PWIND10M_MAX! Maximum wind at 10m (m/s)
00098 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00099 !
00100 !
00101 !*      0.2    declarations of local variables
00102 !
00103 !-------------------------------------------------------------------------------------
00104 !
00105 IF (LHOOK) CALL DR_HOOK('DIAG_WATFLUX_N',0,ZHOOK_HANDLE)
00106 IF (LSURF_BUDGET) THEN
00107   PRN      = XRN
00108   PH       = XH
00109   PLE      = XLE
00110   PLEI     = XLEI
00111   PGFLUX   = XGFLUX
00112   PSWD     = XSWD
00113   PSWU     = XSWU
00114   PLWD     = XLWD
00115   PLWU     = XLWU
00116   PSWBD    = XSWBD
00117   PSWBU    = XSWBU
00118   PFMU     = XFMU
00119   PFMV     = XFMV
00120 END IF
00121 !
00122 IF (LSURF_BUDGETC) THEN
00123   PRNC      = XRNC
00124   PHC       = XHC
00125   PLEC      = XLEC
00126   PLEIC     = XLEIC
00127   PGFLUXC   = XGFLUXC
00128   PSWDC     = XSWDC
00129   PSWUC     = XSWUC
00130   PLWDC     = XLWDC
00131   PLWUC     = XLWUC
00132   PFMUC     = XFMUC
00133   PFMVC     = XFMVC
00134 END IF
00135 !
00136 IF (N2M>=1 .OR. LSURF_BUDGET .OR. LSURF_BUDGETC) PTS = XDIAG_TS
00137 !
00138 IF (N2M>=1) THEN
00139   PRI      = XRI
00140   PT2M     = XT2M
00141   PT2M_MIN = XT2M_MIN
00142   PT2M_MAX = XT2M_MAX  
00143   PQ2M     = XQ2M
00144   PHU2M    = XHU2M
00145   PHU2M_MIN= XHU2M_MIN
00146   PHU2M_MAX= XHU2M_MAX
00147   PZON10M  = XZON10M
00148   PMER10M  = XMER10M
00149   PWIND10M = XWIND10M
00150   PWIND10M_MAX = XWIND10M_MAX
00151 END IF
00152 !
00153 IF (LCOEF) THEN
00154   PCD      = XCD
00155   PCH      = XCH
00156   PCE      = XCE
00157   PZ0      = XZ0
00158   PZ0H     = XZ0H
00159 END IF
00160 !
00161 IF (LSURF_VARS) THEN
00162   PQS = XQS
00163 ENDIF
00164 !
00165 IF (LHOOK) CALL DR_HOOK('DIAG_WATFLUX_N',1,ZHOOK_HANDLE)
00166 !
00167 !-------------------------------------------------------------------------------------
00168 !
00169 END SUBROUTINE DIAG_WATFLUX_n