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