|
SURFEX v7.3
General documentation of Surfex
|
00001 ! ######### 00002 SUBROUTINE DIAG_SURF_BUDGET_ISBA (PDIR_SW, PSCA_SW, PDIR_ALB, PSCA_ALB, & 00003 PLW, PRN, & 00004 PSWD, PSWU, PSWBD, PSWBU, PLWD, PLWU ) 00005 ! ############################################################################### 00006 ! 00007 !!**** *DIAG_SURF_BUDGET_ISBA * - Computes diagnostics over ISBA 00008 !! 00009 !! PURPOSE 00010 !! ------- 00011 ! 00012 !!** METHOD 00013 !! ------ 00014 !! 00015 !! REFERENCE 00016 !! --------- 00017 !! 00018 !! 00019 !! AUTHOR 00020 !! ------ 00021 !! P. Le Moigne 00022 !! 00023 !! MODIFICATIONS 00024 !! ------------- 00025 !! Original 04/2006 00026 !! Modified 08/2008 (B. Decharme) LWU diag 00027 !!------------------------------------------------------------------ 00028 ! 00029 USE MODD_CSTS, ONLY : XSTEFAN 00030 ! 00031 ! 00032 ! 00033 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK 00034 USE PARKIND1 ,ONLY : JPRB 00035 ! 00036 IMPLICIT NONE 00037 ! 00038 !* 0.1 declarations of arguments 00039 ! 00040 REAL, DIMENSION(:,:),INTENT(IN) :: PDIR_SW ! direct solar radiation (on horizontal surf.) 00041 ! ! (W/m2) 00042 REAL, DIMENSION(:,:),INTENT(IN) :: PSCA_SW ! diffuse solar radiation (on horizontal surf.) 00043 ! ! (W/m2) 00044 REAL, DIMENSION(:), INTENT(IN) :: PLW ! longwave radiation (on horizontal surf.) 00045 REAL, DIMENSION(:,:),INTENT(IN) :: PDIR_ALB ! direct albedo for each spectral band (-) 00046 REAL, DIMENSION(:,:),INTENT(IN) :: PSCA_ALB ! diffuse albedo for each spectral band (-) 00047 REAL, DIMENSION(:), INTENT(IN) :: PRN ! Surface net radiation 00048 ! 00049 REAL, DIMENSION(:,:), INTENT(OUT):: PSWBD ! incoming short wave radiation by spectral band (W/m2) 00050 REAL, DIMENSION(:,:), INTENT(OUT):: PSWBU ! upward short wave radiation by spectral band (W/m2) 00051 REAL, DIMENSION(:), INTENT(OUT) :: PSWD ! total incoming short wave radiation (W/m2) 00052 REAL, DIMENSION(:), INTENT(OUT) :: PSWU ! total upward short wave radiation (W/m2) 00053 REAL, DIMENSION(:), INTENT(OUT) :: PLWD ! Downward long wave radiation (W/m2) 00054 REAL, DIMENSION(:), INTENT(OUT) :: PLWU ! upward long wave radiation (W/m2) 00055 ! 00056 ! 00057 !* 0.2 declarations of local variables 00058 ! 00059 INTEGER :: ISWB ! number of SW bands 00060 INTEGER :: JSWB ! loop counter on number of SW bands 00061 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00062 !------------------------------------------------------------------------------------- 00063 ! 00064 ! 00065 IF (LHOOK) CALL DR_HOOK('DIAG_SURF_BUDGET_ISBA',0,ZHOOK_HANDLE) 00066 ISWB = SIZE(PDIR_SW,2) 00067 ! 00068 !* total incoming and outgoing SW 00069 ! 00070 DO JSWB=1,ISWB 00071 PSWBD(:,JSWB) = PDIR_SW(:,JSWB) + PSCA_SW(:,JSWB) 00072 PSWBU(:,JSWB) = PDIR_SW(:,JSWB) * PDIR_ALB(:,JSWB) + PSCA_SW(:,JSWB) * PSCA_ALB(:,JSWB) 00073 ENDDO 00074 ! 00075 PSWD(:) = 0. 00076 PSWU(:) = 0. 00077 DO JSWB=1,ISWB 00078 PSWD(:)=PSWD(:)+PSWBD(:,JSWB) 00079 PSWU(:)=PSWU(:)+PSWBU(:,JSWB) 00080 ENDDO 00081 ! 00082 !*incoming outgoing LW 00083 ! 00084 !Wrong old diag : LWU=EMIS*STEFAN*Ts**4 + (1.-EMIS)*LW 00085 !Due to e_budget.f90 linearization, LWU can not be calculated using actual Ts 00086 ! 00087 PLWD(:)=PLW(:) 00088 PLWU(:)=PSWD(:)-PSWU(:)+PLWD(:)-PRN(:) 00089 IF (LHOOK) CALL DR_HOOK('DIAG_SURF_BUDGET_ISBA',1,ZHOOK_HANDLE) 00090 ! 00091 !------------------------------------------------------------------------------------- 00092 ! 00093 END SUBROUTINE DIAG_SURF_BUDGET_ISBA
1.8.0