SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/circumsolar_rad.F90
Go to the documentation of this file.
00001 !     ###############################################################################
00002 SUBROUTINE CIRCUMSOLAR_RAD(PDIR_SW, PSCA_SW, PZENITH, PF1_o_B)
00003 !     ###############################################################################
00004 !
00005 !!****  *CIRCUMSOLAR_RAD * 
00006 !!
00007 !!    PURPOSE
00008 !!    -------
00009 !!
00010 ! compute the fraction of the scattered solar radiation that has a
00011 ! directionnal behaviour, it is from the circumsolar region
00012 ! for an horizontal surface
00013 !!
00014 !!**  METHOD
00015 !!    ------
00016 !!
00017 !!    REFERENCE
00018 !!    ---------
00019 !!      
00020 ! Engeneering Reference, EnergyPlus DOE, 2012
00021 ! Perez, 1990 
00022 !!
00023 !!    AUTHOR
00024 !!    ------
00025 !!     G. Pigeon 
00026 !!
00027 !!    MODIFICATIONS
00028 !!    -------------
00029 !!      Original    27/11/2012
00030 !!---------------------------------------------------------------
00031 !
00032 !
00033 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00034 USE PARKIND1  ,ONLY : JPRB      
00035 USE MODD_CSTS ,ONLY : XPI
00036 
00037 IMPLICIT NONE
00038 !
00039 !*      0.1    declarations of arguments
00040 !
00041 REAL, DIMENSION(:), INTENT(IN) :: PDIR_SW ! direct radiation
00042 REAL, DIMENSION(:), INTENT(IN) :: PSCA_SW ! scattered radiation
00043 REAL, DIMENSION(:), INTENT(IN) :: PZENITH ! solar zenith angle
00044 REAL, DIMENSION(:), INTENT(OUT) :: PF1_o_B ! coef
00045 !
00046 !*      0.2    declarations of local variables
00047 !
00048 REAL, DIMENSION(SIZE(PZENITH)) :: ZE !sky clearness factor
00049 REAL, DIMENSION(SIZE(PZENITH)) :: ZB ! b coef
00050 REAL, DIMENSION(SIZE(PZENITH)) :: ZF1 !factors depending on ZE and Z
00051 REAL, DIMENSION(SIZE(PZENITH)) :: ZF11, ZF13 !factors depending on ZE
00052 REAL, PARAMETER :: ZK = 1.041 !coef. from EP Engineering Reference 
00053 REAL, PARAMETER :: ZBMIN = 0.087 !coef. from EP Engineering Reference 
00054 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00055 REAL, DIMENSION(SIZE(PZENITH)) :: ZELEV
00056 INTEGER :: JJ
00057 !-------------------------------------------------------------------------------
00058 IF (LHOOK) CALL DR_HOOK('MODE_CONV_DOE:CHTC_VERT_DOE',0,ZHOOK_HANDLE)
00059 
00060 ZELEV = XPI/2. - PZENITH
00061 
00062 PF1_o_B = 0.
00063 WHERE(PSCA_SW > 0)
00064    ZE = ((PSCA_SW + PDIR_SW) / PSCA_SW + ZK * ZELEV**3) / (1 + ZK * ZELEV**3)
00065 ELSEWHERE
00066    ZE = -1
00067 ENDWHERE
00068 
00069 DO JJ=1,SIZE(ZELEV)
00070    ZB(JJ) = MAX(ZBMIN, cos(ZELEV(JJ)))
00071 ENDDO
00072 
00073  CALL FIJ(ZE, ZF11, ZF13)
00074 ZF1 = ZF11 + ZF13 * ZELEV
00075    
00076 PF1_o_B = ZF1 / ZB
00077 DO JJ=1,SIZE(PF1_o_B)
00078    PF1_o_B(JJ) = MIN(PF1_o_B(JJ), 1.)
00079    PF1_o_B(JJ) = MAX(PF1_o_B(JJ), 0.)
00080 ENDDO
00081 
00082 IF (LHOOK) CALL DR_HOOK('MODE_CONV_DOE:CHTC_VERT_DOE',1,ZHOOK_HANDLE)
00083 !-------------------------------------------------------------------------------
00084 CONTAINS
00085 SUBROUTINE FIJ(PE, PF11, PF13)
00086 REAL, DIMENSION(:), INTENT(IN) :: PE !sky clearness factor
00087 REAL, DIMENSION(:), INTENT(OUT):: PF11
00088 REAL, DIMENSION(:), INTENT(OUT):: PF13
00089 
00090 WHERE(PE < 0 )
00091    PF11 = 0
00092    PF13 = 0
00093 ELSEWHERE(PE < 1.065)
00094    PF11 = -0.0083117
00095    PF13 = -0.0620636
00096 ELSEWHERE(PE >= 1.065 .AND. PE < 1.230 )
00097    PF11 = 0.1299457
00098    PF13 = -0.1513752
00099 ELSEWHERE(PE >= 1.230 .AND. PE < 1.500 )
00100    PF11 = 0.3296958
00101    PF13 = -0.2210958
00102 ELSEWHERE(PE >= 1.500 .AND. PE < 1.950)
00103    PF11 = 0.5682053
00104    PF13 =  -0.2951290
00105 ELSEWHERE(PE >= 1.950 .AND. PE < 2.800 )
00106    PF11 = 0.8730280
00107    PF13 = -0.3616149
00108 ELSEWHERE(PE >= 2.800 .AND. PE < 4.500)
00109    PF11 = 1.1326077
00110    PF13 = -0.4118494
00111 ELSEWHERE(PE >= 4.500 .AND. PE < 6.200)
00112    PF11 = 1.0601591
00113    PF13 = -0.3589221
00114 ELSEWHERE
00115    PF11 = 0.6777470
00116    PF13 = -0.2504286
00117 ENDWHERE
00118 
00119 END SUBROUTINE FIJ
00120 
00121 END SUBROUTINE CIRCUMSOLAR_RAD