SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/diag_sean.F90
Go to the documentation of this file.
00001 !     #########
00002 SUBROUTINE DIAG_SEA_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, PSWBD, PSWBU, PLWD, PLWU, 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_SEA_n * - Chooses the surface schemes for sea diagnostics
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_SURF_ATM_n, ONLY : CSEA
00038 !
00039 USE MODI_DIAG_SEAFLUX_n
00040 USE MODI_DIAG_IDEAL_n
00041 !
00042 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00043 USE PARKIND1  ,ONLY : JPRB
00044 !
00045 IMPLICIT NONE
00046 !
00047 !*      0.1    declarations of arguments
00048 !
00049  CHARACTER(LEN=6),   INTENT(IN)  :: HPROGRAM ! program calling surf. schemes
00050 !
00051 REAL, DIMENSION(:), INTENT(OUT) :: PRN      ! Net radiation       (W/m2)
00052 REAL, DIMENSION(:), INTENT(OUT) :: PH       ! Sensible heat flux  (W/m2)
00053 REAL, DIMENSION(:), INTENT(OUT) :: PLE      ! Total latent heat flux       (W/m2)
00054 REAL, DIMENSION(:), INTENT(OUT) :: PLEI     ! Sublimation latent heat flux (W/m2)
00055 REAL, DIMENSION(:), INTENT(OUT) :: PGFLUX   ! Storage flux        (W/m2)
00056 REAL, DIMENSION(:), INTENT(OUT) :: PRI      ! Richardson number   (-)
00057 REAL, DIMENSION(:), INTENT(OUT) :: PCD      ! drag coefficient    (W/s2)
00058 REAL, DIMENSION(:), INTENT(OUT) :: PCH      ! transf. coef heat   (W/s)
00059 REAL, DIMENSION(:), INTENT(OUT) :: PCE      ! transf. coef vapor  (W/s/K)
00060 REAL, DIMENSION(:), INTENT(OUT) :: PQS
00061 REAL, DIMENSION(:), INTENT(OUT) :: PZ0      ! rough. length wind  (m)
00062 REAL, DIMENSION(:), INTENT(OUT) :: PZ0H     ! rough. length heat  (m)
00063 REAL, DIMENSION(:), INTENT(OUT) :: PTS      ! surface temperature (K)
00064 REAL, DIMENSION(:), INTENT(OUT) :: PT2M     ! temperature at 2m   (K)
00065 REAL, DIMENSION(:), INTENT(OUT) :: PQ2M     ! humidity at 2m      (kg/kg)
00066 REAL, DIMENSION(:), INTENT(OUT) :: PHU2M    ! relative humidity at 2m (-)
00067 REAL, DIMENSION(:), INTENT(OUT) :: PZON10M  ! zonal wind at 10m   (m/s)
00068 REAL, DIMENSION(:), INTENT(OUT) :: PMER10M  ! meridian wind at 10m(m/s)
00069 REAL, DIMENSION(:), INTENT(OUT) :: PSWD     ! incoming short wave radiation (W/m2)
00070 REAL, DIMENSION(:), INTENT(OUT) :: PSWU     ! outgoing short wave radiation (W/m2)
00071 REAL, DIMENSION(:,:), INTENT(OUT) :: PSWBD  ! incoming short wave radiation by spectral band(W/m2)
00072 REAL, DIMENSION(:,:), INTENT(OUT) :: PSWBU  ! outgoing short wave radiation by spectral band(W/m2)
00073 REAL, DIMENSION(:), INTENT(OUT) :: PLWD     ! incoming long wave radiation (W/m2)
00074 REAL, DIMENSION(:), INTENT(OUT) :: PLWU     ! outgoing long wave radiation (W/m2)
00075 REAL, DIMENSION(:), INTENT(OUT) :: PFMU     ! zonal friction
00076 REAL, DIMENSION(:), INTENT(OUT) :: PFMV     ! meridian friction 
00077 REAL, DIMENSION(:), INTENT(OUT) :: PRNC     ! Net radiation       (J/m2)
00078 REAL, DIMENSION(:), INTENT(OUT) :: PHC      ! Sensible heat flux  (J/m2)
00079 REAL, DIMENSION(:), INTENT(OUT) :: PLEC     ! Total latent heat flux    (J/m2)
00080 REAL, DIMENSION(:), INTENT(OUT) :: PLEIC    ! Sublimation latent heat flux    (J/m2)
00081 REAL, DIMENSION(:), INTENT(OUT) :: PGFLUXC  ! Storage flux        (J/m2)
00082 REAL, DIMENSION(:), INTENT(OUT) :: PSWDC    ! incoming short wave radiation (J/m2)
00083 REAL, DIMENSION(:), INTENT(OUT) :: PSWUC    ! outgoing short wave radiation (J/m2)
00084 REAL, DIMENSION(:), INTENT(OUT) :: PLWDC    ! incoming long wave radiation (J/m2)
00085 REAL, DIMENSION(:), INTENT(OUT) :: PLWUC    ! outgoing long wave radiation (J/m2)
00086 REAL, DIMENSION(:), INTENT(OUT) :: PFMUC    ! zonal friction
00087 REAL, DIMENSION(:), INTENT(OUT) :: PFMVC    ! meridian friction 
00088 REAL, DIMENSION(:), INTENT(OUT) :: PT2M_MIN ! Minimum temperature at 2m   (K)
00089 REAL, DIMENSION(:), INTENT(OUT) :: PT2M_MAX ! Maximum temperature at 2m   (K)
00090 REAL, DIMENSION(:), INTENT(OUT) :: PHU2M_MIN! Minimum relative humidity at 2m (-)
00091 REAL, DIMENSION(:), INTENT(OUT) :: PHU2M_MAX! Maximum relative humidity at 2m (-)
00092 REAL, DIMENSION(:), INTENT(OUT) :: PWIND10M ! wind at 10m (m/s)
00093 REAL, DIMENSION(:), INTENT(OUT) :: PWIND10M_MAX! Maximum wind at 10m (m/s)
00094 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00095 !
00096 !
00097 !*      0.2    declarations of local variables
00098 !
00099 !-------------------------------------------------------------------------------------
00100 !
00101 IF (LHOOK) CALL DR_HOOK('DIAG_SEA_N',0,ZHOOK_HANDLE)
00102 IF (CSEA=='SEAFLX') THEN
00103   CALL DIAG_SEAFLUX_n(HPROGRAM,                                           &
00104                         PRN, PH, PLE, PLEI, PGFLUX, PRI, PCD, PCH, PCE, PQS,&
00105                         PZ0, PZ0H, PT2M, PTS, PQ2M, PHU2M, PZON10M, PMER10M,&
00106                         PSWD, PSWU, PLWD, PLWU, PSWBD, PSWBU, PFMU, PFMV,   &
00107                         PRNC, PHC, PLEC, PGFLUXC, PSWDC, PSWUC, PLWDC,      &
00108                         PLWUC, PFMUC, PFMVC, PT2M_MIN, PT2M_MAX, PLEIC,     &
00109                         PHU2M_MIN, PHU2M_MAX, PWIND10M, PWIND10M_MAX        )
00110 ELSEIF (CSEA=='FLUX') THEN
00111   CALL DIAG_IDEAL_n(HPROGRAM, PQS, PZ0, PZ0H, PH, PLE, PRN, PGFLUX)
00112   PLEI     = XUNDEF
00113   PRI      = XUNDEF
00114   PCD      = XUNDEF
00115   PCH      = XUNDEF
00116   PCE      = XUNDEF
00117   PTS      = XUNDEF
00118   PT2M     = XUNDEF
00119   PQ2M     = XUNDEF
00120   PHU2M    = XUNDEF
00121   PZON10M  = XUNDEF
00122   PMER10M  = XUNDEF
00123   PSWD     = XUNDEF
00124   PSWU     = XUNDEF
00125   PSWBD    = XUNDEF
00126   PSWBU    = XUNDEF
00127   PLWD     = XUNDEF
00128   PLWU     = XUNDEF
00129   PFMU     = XUNDEF
00130   PFMV     = XUNDEF
00131   PRNC     = XUNDEF
00132   PHC      = XUNDEF
00133   PLEC     = XUNDEF
00134   PLEIC    = XUNDEF
00135   PGFLUXC  = XUNDEF
00136   PSWDC    = XUNDEF
00137   PSWUC    = XUNDEF
00138   PLWDC    = XUNDEF
00139   PLWUC    = XUNDEF
00140   PFMUC    = XUNDEF
00141   PFMVC    = XUNDEF
00142   PT2M_MIN = XUNDEF
00143   PT2M_MAX = XUNDEF 
00144   PHU2M_MIN= XUNDEF
00145   PHU2M_MAX= XUNDEF  
00146   PWIND10M = XUNDEF
00147   PWIND10M_MAX = XUNDEF      
00148 ELSE IF (CSEA=='NONE  ') THEN
00149   PRN      = XUNDEF
00150   PH       = XUNDEF
00151   PLE      = XUNDEF
00152   PLEI     = XUNDEF
00153   PGFLUX   = XUNDEF
00154   PRI      = XUNDEF
00155   PCD      = XUNDEF
00156   PCH      = XUNDEF
00157   PCE      = XUNDEF
00158   PQS      = XUNDEF
00159   PZ0      = XUNDEF
00160   PZ0H     = XUNDEF
00161   PTS      = XUNDEF
00162   PT2M     = XUNDEF
00163   PQ2M     = XUNDEF
00164   PHU2M    = XUNDEF
00165   PZON10M  = XUNDEF
00166   PMER10M  = XUNDEF
00167   PSWD     = XUNDEF
00168   PSWU     = XUNDEF
00169   PSWBD    = XUNDEF
00170   PSWBU    = XUNDEF
00171   PLWD     = XUNDEF
00172   PLWU     = XUNDEF
00173   PFMU     = XUNDEF
00174   PFMV     = XUNDEF
00175   PRNC     = XUNDEF
00176   PHC      = XUNDEF
00177   PLEC     = XUNDEF
00178   PLEIC    = XUNDEF
00179   PGFLUXC  = XUNDEF
00180   PSWDC    = XUNDEF
00181   PSWUC    = XUNDEF
00182   PLWDC    = XUNDEF
00183   PLWUC    = XUNDEF
00184   PFMUC    = XUNDEF
00185   PFMVC    = XUNDEF
00186   PT2M_MIN = XUNDEF
00187   PT2M_MAX = XUNDEF 
00188   PHU2M_MIN= XUNDEF
00189   PHU2M_MAX= XUNDEF  
00190   PWIND10M = XUNDEF
00191   PWIND10M_MAX = XUNDEF  
00192 END IF
00193 IF (LHOOK) CALL DR_HOOK('DIAG_SEA_N',1,ZHOOK_HANDLE)
00194 !
00195 !-------------------------------------------------------------------------------------
00196 !
00197 END SUBROUTINE DIAG_SEA_n