SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/coupling_inland_watern.F90
Go to the documentation of this file.
00001 !     ###############################################################################
00002 SUBROUTINE COUPLING_INLAND_WATER_n(HPROGRAM, HCOUPLING, PTIMEC,                              &
00003                  PTSTEP, KYEAR, KMONTH, KDAY, PTIME, KI, KSV, KSW, PTSUN, PZENITH, PZENITH2, &
00004                  PAZIM, PZREF, PUREF, PZS, PU, PV, PQA, PTA, PRHOA, PSV, PCO2, HSV,          &
00005                  PRAIN, PSNOW, PLW, PDIR_SW, PSCA_SW, PSW_BANDS, PPS, PPA,                   &
00006                  PSFTQ, PSFTH, PSFTS, PSFCO2, PSFU, PSFV,                                    &
00007                  PTRAD, PDIR_ALB, PSCA_ALB, PEMIS,                                           &
00008                  PPEW_A_COEF, PPEW_B_COEF,                                                   &
00009                  PPET_A_COEF, PPEQ_A_COEF, PPET_B_COEF, PPEQ_B_COEF,                         &
00010                  HTEST                                                                       )  
00011 !     ###############################################################################
00012 !
00013 !!****  *COUPLING_INLAND_WATER_n * - Chooses the surface schemes for lakes   
00014 !!
00015 !!    PURPOSE
00016 !!    -------
00017 !
00018 !!**  METHOD
00019 !!    ------
00020 !!
00021 !!    REFERENCE
00022 !!    ---------
00023 !!      
00024 !!
00025 !!    AUTHOR
00026 !!    ------
00027 !!     V. Masson 
00028 !!
00029 !!    MODIFICATIONS
00030 !!    -------------
00031 !!      Original    01/2004
00032 !----------------------------------------------------------------
00033 !
00034 USE MODD_SURF_ATM_n, ONLY : CWATER
00035 USE MODD_CSTS,       ONLY : XTT
00036 !
00037 ! 
00038 !
00039 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00040 USE PARKIND1  ,ONLY : JPRB
00041 !
00042 USE MODI_COUPLING_FLAKE_OROGRAPHY_n
00043 !
00044 USE MODI_COUPLING_IDEAL_FLUX
00045 !
00046 USE MODI_COUPLING_WATFLUX_OROG_n
00047 !
00048 IMPLICIT NONE
00049 !
00050 !*      0.1    declarations of arguments
00051 !
00052  CHARACTER(LEN=6),    INTENT(IN)  :: HPROGRAM  ! program calling surf. schemes
00053  CHARACTER(LEN=1),    INTENT(IN)  :: HCOUPLING ! type of coupling
00054                                               ! 'E' : explicit
00055                                               ! 'I' : implicit
00056 REAL,                INTENT(IN)  :: PTIMEC    ! cumulated time since beginning of simulation
00057 INTEGER,             INTENT(IN)  :: KYEAR     ! current year (UTC)
00058 INTEGER,             INTENT(IN)  :: KMONTH    ! current month (UTC)
00059 INTEGER,             INTENT(IN)  :: KDAY      ! current day (UTC)
00060 REAL,                INTENT(IN)  :: PTIME     ! current time since midnight (UTC, s)
00061 INTEGER,             INTENT(IN)  :: KI        ! number of points
00062 INTEGER,             INTENT(IN)  :: KSV       ! number of scalars
00063 INTEGER,             INTENT(IN)  :: KSW       ! number of short-wave spectral bands
00064 REAL, DIMENSION(KI), INTENT(IN)  :: PTSUN     ! solar time                    (s from midnight)
00065 REAL,                INTENT(IN)  :: PTSTEP    ! atmospheric time-step                 (s)
00066 REAL, DIMENSION(KI), INTENT(IN)  :: PZREF     ! height of T,q forcing                 (m)
00067 REAL, DIMENSION(KI), INTENT(IN)  :: PUREF     ! height of wind forcing                (m)
00068 !
00069 REAL, DIMENSION(KI), INTENT(IN)  :: PTA       ! air temperature forcing               (K)
00070 REAL, DIMENSION(KI), INTENT(IN)  :: PQA       ! air humidity forcing                  (kg/m3)
00071 REAL, DIMENSION(KI), INTENT(IN)  :: PRHOA     ! air density                           (kg/m3)
00072 REAL, DIMENSION(KI,KSV),INTENT(IN) :: PSV     ! scalar variables
00073 !                                             ! chemistry:   first char. in HSV: '#'  (molecule/m3)
00074 !                                             !
00075  CHARACTER(LEN=6), DIMENSION(KSV),INTENT(IN):: HSV  ! name of all scalar variables
00076 REAL, DIMENSION(KI), INTENT(IN)  :: PU        ! zonal wind                            (m/s)
00077 REAL, DIMENSION(KI), INTENT(IN)  :: PV        ! meridian wind                         (m/s)
00078 REAL, DIMENSION(KI,KSW),INTENT(IN) :: PDIR_SW ! direct  solar radiation (on horizontal surf.)
00079 !                                             !                                       (W/m2)
00080 REAL, DIMENSION(KI,KSW),INTENT(IN) :: PSCA_SW ! diffuse solar radiation (on horizontal surf.)
00081 !                                             !                                       (W/m2)
00082 REAL, DIMENSION(KSW),INTENT(IN)  :: PSW_BANDS ! mean wavelength of each shortwave band (m)
00083 REAL, DIMENSION(KI), INTENT(IN)  :: PZENITH   ! zenithal angle at t      (radian from the vertical)
00084 REAL, DIMENSION(KI), INTENT(IN)  :: PZENITH2  ! zenithal angle at t+1      (radian from the vertical)
00085 REAL, DIMENSION(KI), INTENT(IN)  :: PAZIM     ! azimuthal angle      (radian from North, clockwise)
00086 REAL, DIMENSION(KI), INTENT(IN)  :: PLW       ! longwave radiation (on horizontal surf.)
00087 !                                             !                                       (W/m2)
00088 REAL, DIMENSION(KI), INTENT(IN)  :: PPS       ! pressure at atmospheric model surface (Pa)
00089 REAL, DIMENSION(KI), INTENT(IN)  :: PPA       ! pressure at forcing level             (Pa)
00090 REAL, DIMENSION(KI), INTENT(IN)  :: PZS       ! atmospheric model orography           (m)
00091 REAL, DIMENSION(KI), INTENT(IN)  :: PCO2      ! CO2 concentration in the air          (kg/m3)
00092 REAL, DIMENSION(KI), INTENT(IN)  :: PSNOW     ! snow precipitation                    (kg/m2/s)
00093 REAL, DIMENSION(KI), INTENT(IN)  :: PRAIN     ! liquid precipitation                  (kg/m2/s)
00094 !
00095 !
00096 REAL, DIMENSION(KI), INTENT(OUT) :: PSFTH     ! flux of heat                          (W/m2)
00097 REAL, DIMENSION(KI), INTENT(OUT) :: PSFTQ     ! flux of water vapor                   (kg/m2/s)
00098 REAL, DIMENSION(KI), INTENT(OUT) :: PSFU      ! zonal momentum flux                   (Pa)
00099 REAL, DIMENSION(KI), INTENT(OUT) :: PSFV      ! meridian momentum flux                (Pa)
00100 REAL, DIMENSION(KI), INTENT(OUT) :: PSFCO2    ! flux of CO2                           (kg/m2/s)
00101 REAL, DIMENSION(KI,KSV),INTENT(OUT):: PSFTS   ! flux of scalar var.                   (kg/m2/s)
00102 !
00103 REAL, DIMENSION(KI), INTENT(OUT) :: PTRAD     ! radiative temperature                 (K)
00104 REAL, DIMENSION(KI,KSW),INTENT(OUT):: PDIR_ALB! direct albedo for each spectral band  (-)
00105 REAL, DIMENSION(KI,KSW),INTENT(OUT):: PSCA_ALB! diffuse albedo for each spectral band (-)
00106 REAL, DIMENSION(KI), INTENT(OUT) :: PEMIS     ! emissivity                            (-)
00107 !
00108 REAL, DIMENSION(KI), INTENT(IN) :: PPEW_A_COEF! implicit coefficients
00109 REAL, DIMENSION(KI), INTENT(IN) :: PPEW_B_COEF! needed if HCOUPLING='I'
00110 REAL, DIMENSION(KI), INTENT(IN) :: PPET_A_COEF
00111 REAL, DIMENSION(KI), INTENT(IN) :: PPEQ_A_COEF
00112 REAL, DIMENSION(KI), INTENT(IN) :: PPET_B_COEF
00113 REAL, DIMENSION(KI), INTENT(IN) :: PPEQ_B_COEF
00114  CHARACTER(LEN=2),    INTENT(IN) :: HTEST ! must be equal to 'OK'
00115 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00116 !
00117 !*      0.2    declarations of local variables
00118 !
00119 !-------------------------------------------------------------------------------------
00120 !
00121 IF (LHOOK) CALL DR_HOOK('COUPLING_INLAND_WATER_N',0,ZHOOK_HANDLE)
00122 IF (CWATER=='WATFLX') THEN
00123   CALL COUPLING_WATFLUX_OROG_n(HPROGRAM, HCOUPLING,                                         &
00124                  PTSTEP, KYEAR, KMONTH, KDAY, PTIME,                                        &
00125                  KI, KSV, KSW,                                                              &
00126                  PTSUN, PZENITH, PZENITH2, PAZIM,                                           &
00127                  PZREF, PUREF, PZS, PU, PV, PQA, PTA, PRHOA, PSV, PCO2, HSV,                &
00128                  PRAIN, PSNOW, PLW, PDIR_SW, PSCA_SW, PSW_BANDS, PPS, PPA,                  &
00129                  PSFTQ, PSFTH, PSFTS, PSFCO2, PSFU, PSFV,                                   &
00130                  PTRAD, PDIR_ALB, PSCA_ALB, PEMIS,                                          &
00131                  PPEW_A_COEF, PPEW_B_COEF,                                                  &
00132                  PPET_A_COEF, PPEQ_A_COEF, PPET_B_COEF, PPEQ_B_COEF,                        &
00133                  'OK'                                                                       )  
00134 ELSE IF (CWATER=='FLUX  ') THEN
00135   CALL COUPLING_IDEAL_FLUX(HPROGRAM, HCOUPLING, PTIMEC,                                     &
00136                  PTSTEP, KYEAR, KMONTH, KDAY, PTIME,                                        &
00137                  KI, KSV, KSW,                                                              &
00138                  PTSUN, PZENITH, PAZIM,                                                     &
00139                  PZREF, PUREF, PZS, PU, PV, PQA, PTA, PRHOA, PSV, PCO2, HSV,                &
00140                  PRAIN, PSNOW, PLW, PDIR_SW, PSCA_SW, PSW_BANDS, PPS, PPA,                  &
00141                  PSFTQ, PSFTH, PSFTS, PSFCO2, PSFU, PSFV,                                   &
00142                  PTRAD, PDIR_ALB, PSCA_ALB, PEMIS,                                          &
00143                  PPEW_A_COEF, PPEW_B_COEF,                                                  &
00144                  PPET_A_COEF, PPEQ_A_COEF, PPET_B_COEF, PPEQ_B_COEF,                        &
00145                  'OK'                                                                       )  
00146 ELSE IF (CWATER=='FLAKE ') THEN
00147   CALL COUPLING_FLAKE_OROGRAPHY_n(HPROGRAM, HCOUPLING,                                    &
00148                  PTSTEP, KYEAR, KMONTH, KDAY, PTIME,                                        &
00149                  KI, KSV, KSW,                                                              &
00150                  PTSUN, PZENITH, PAZIM,                                                     &
00151                  PZREF, PUREF, PZS, PU, PV, PQA, PTA, PRHOA, PSV, PCO2, HSV,                &
00152                  PRAIN, PSNOW, PLW, PDIR_SW, PSCA_SW, PSW_BANDS, PPS, PPA,                  &
00153                  PSFTQ, PSFTH, PSFTS, PSFCO2, PSFU, PSFV,                                   &
00154                  PTRAD, PDIR_ALB, PSCA_ALB, PEMIS,                                          &
00155                  PPEW_A_COEF, PPEW_B_COEF,                                                  &
00156                  PPET_A_COEF, PPEQ_A_COEF, PPET_B_COEF, PPEQ_B_COEF,                        &
00157                  'OK'                                                                       )  
00158 ELSE IF (CWATER=='NONE  ') THEN
00159   PSFTH = 0.
00160   PSFTQ = 0.
00161   PSFTS = 0.
00162   PSFU  = 0.
00163   PSFV  = 0.
00164   PSFCO2= 0.
00165 !
00166   PTRAD = XTT
00167   PDIR_ALB = 0.
00168   PSCA_ALB = 0.
00169   PEMIS   = 1.
00170 END IF
00171 IF (LHOOK) CALL DR_HOOK('COUPLING_INLAND_WATER_N',1,ZHOOK_HANDLE)
00172 !
00173 !-------------------------------------------------------------------------------------
00174 !
00175 END SUBROUTINE COUPLING_INLAND_WATER_n