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