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