SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/get_fluxn.F90
Go to the documentation of this file.
00001 !     #########
00002       SUBROUTINE GET_FLUX_n(HPROGRAM,KI,PRN,PH,PLE,PLEI,PGFLUX,PT2M,PQ2M,   &
00003                             PHU2M,PZON10M,PMER10M,PSURFLWNET,PSURFSWNET     )  
00004 !     ########################################
00005 !
00006 !!****  *GET_FLUX_n* - routine to get some surface fields
00007 !!
00008 !!    PURPOSE
00009 !!    -------
00010 !!
00011 !!**  METHOD
00012 !!    ------
00013 !!
00014 !!    EXTERNAL
00015 !!    --------
00016 !!
00017 !!
00018 !!    IMPLICIT ARGUMENTS
00019 !!    ------------------
00020 !!
00021 !!    REFERENCE
00022 !!    ---------
00023 !!
00024 !!
00025 !!    AUTHOR
00026 !!    ------
00027 !!      V. Masson   *Meteo France*      
00028 !!
00029 !!    MODIFICATIONS
00030 !!    -------------
00031 !!      Original    01/2004
00032 !-------------------------------------------------------------------------------
00033 !
00034 !*       0.    DECLARATIONS
00035 !              ------------
00036 !
00037 USE MODI_GET_LUOUT
00038 USE MODD_SURF_PAR,        ONLY   : XUNDEF
00039 !
00040 USE MODD_DIAG_SURF_ATM_n, ONLY   : XAVG_RN, XAVG_H, XAVG_LE, XAVG_GFLUX,   &
00041                                      XAVG_T2M, XAVG_Q2M, XAVG_HU2M,        &
00042                                      XAVG_ZON10M, XAVG_MER10M,             &
00043                                      LSURF_BUDGET, N2M, XAVG_LEI,          &
00044                                      XAVG_LWD, XAVG_LWU, XAVG_SWD, XAVG_SWU  
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 !
00055  CHARACTER(LEN=6),    INTENT(IN)     :: HPROGRAM
00056 INTEGER,             INTENT(IN)     :: KI        ! Number of points
00057 REAL, DIMENSION(KI),  INTENT(OUT)    :: PRN       ! Net radiation at surface    (W/m2)
00058 REAL, DIMENSION(KI),  INTENT(OUT)    :: PH        ! Sensible heat flux          (W/m2)
00059 REAL, DIMENSION(KI),  INTENT(OUT)    :: PLE       ! Total Latent heat flux      (W/m2)
00060 REAL, DIMENSION(KI),  INTENT(OUT)    :: PLEI      ! Solid Latent heat flux      (W/m2)
00061 REAL, DIMENSION(KI),  INTENT(OUT)    :: PGFLUX    ! Net soil-vegetation flux    (W/m2)
00062 REAL, DIMENSION(KI),  INTENT(OUT)    :: PT2M      ! Air temperature at 2 meters (K)
00063 REAL, DIMENSION(KI),  INTENT(OUT)    :: PQ2M      ! Air humidity at 2 meters    (kg/kg)
00064 REAL, DIMENSION(KI),  INTENT(OUT)    :: PHU2M     ! Air relative humidity at 2 meters (-)
00065 REAL, DIMENSION(KI),  INTENT(OUT)    :: PZON10M   ! zonal Wind at 10 meters     (m/s)
00066 REAL, DIMENSION(KI),  INTENT(OUT)    :: PMER10M   ! meridian Wind at 10 meters  (m/s)
00067 !
00068 REAL, DIMENSION(KI),  INTENT(OUT) :: PSURFLWNET   ! LW net at the surface
00069 REAL, DIMENSION(KI),  INTENT(OUT) :: PSURFSWNET   ! SW net at the surface
00070 !
00071 !
00072 !*       0.2   Declarations of local variables
00073 !              -------------------------------
00074 !
00075 INTEGER :: ILUOUT
00076 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00077 !
00078 !-------------------------------------------------------------------------------
00079 IF (LHOOK) CALL DR_HOOK('GET_FLUX_N',0,ZHOOK_HANDLE)
00080  CALL GET_LUOUT(HPROGRAM,ILUOUT)
00081 !-------------------------------------------------------------------------------
00082 !
00083 IF (LSURF_BUDGET)      THEN 
00084         PRN       = XAVG_RN      
00085         PH        = XAVG_H  
00086         PLE       = XAVG_LE 
00087         PLEI      = XAVG_LEI 
00088         PGFLUX    = XAVG_GFLUX 
00089         PSURFLWNET=XAVG_LWD-XAVG_LWU
00090         PSURFSWNET=XAVG_SWD-XAVG_SWU
00091    ELSE 
00092         PRN      = XUNDEF
00093         PH       = XUNDEF
00094         PLE      = XUNDEF
00095         PLEI     = XUNDEF
00096         PGFLUX   = XUNDEF
00097         PSURFLWNET=XUNDEF
00098         PSURFSWNET=XUNDEF   
00099 ENDIF           
00100 !
00101 IF (N2M>0)      THEN 
00102         PT2M      = XAVG_T2M
00103         PQ2M      = XAVG_Q2M
00104         PHU2M     = XAVG_HU2M
00105         PZON10M   = XAVG_ZON10M
00106         PMER10M   = XAVG_MER10M
00107    ELSE 
00108         PT2M     = XUNDEF
00109         PQ2M     = XUNDEF
00110         PHU2M    = XUNDEF
00111         PZON10M  = XUNDEF
00112         PMER10M  = XUNDEF
00113 ENDIF           
00114 IF (LHOOK) CALL DR_HOOK('GET_FLUX_N',1,ZHOOK_HANDLE)
00115 !==============================================================================
00116 !
00117 END SUBROUTINE GET_FLUX_n