SURFEX v7.3
General documentation of Surfex
|
00001 ! ######### 00002 SUBROUTINE DSLT_VELGRAV1D(PSIG, PRG, PTA, PRHODREF, PRHOP, & 00003 PMU, PVGK, PDPK, PVGG, PDPG ) 00004 !! ####################################### 00005 !! 00006 !! PURPOSE 00007 !! ------- 00008 !! 00009 !! REFERENCE 00010 !! --------- 00011 !! none 00012 !! 00013 !! AUTHOR 00014 !! ------ 00015 !! P. Tulet (meteo france) 00016 !! 00017 !! MODIFICATIONS 00018 !! ------------- 00019 !! 00020 ! Entry variables: 00021 ! 00022 ! PM(IN) -Array of moments 00023 ! 00024 !************************************************************* 00025 ! Exit variables: 00026 ! 00027 ! PFSED(IN) -Array of moment variation due to dry deposition 00028 ! 00029 !************************************************************* 00030 ! Variables used during the deposition velocity calculation 00031 ! 00032 ! PDPK -Polydisperse diffusivity (m2/s) 00033 ! PVGK -Polydisperse settling velocity of the kth moment (m/s) 00034 !************************************************************ 00035 !! 00036 !! IMPLICIT ARGUMENTS 00037 ! 00038 USE MODD_CSTS ,ONLY : XPI, XG, XBOLTZ 00039 ! 00040 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK 00041 USE PARKIND1 ,ONLY : JPRB 00042 ! 00043 IMPLICIT NONE 00044 00045 !! Declarations d'arguments 00046 ! 00047 REAL, DIMENSION(:,:), INTENT(IN) :: PSIG, PRG 00048 REAL, DIMENSION(:), INTENT(IN) :: PTA, PRHODREF 00049 REAL, INTENT(IN) :: PRHOP 00050 REAL, DIMENSION(:), INTENT(OUT) :: PMU 00051 REAL, DIMENSION(:,:), INTENT(OUT) :: PVGK, PDPK 00052 REAL, DIMENSION(:,:), INTENT(OUT) :: PVGG, PDPG 00053 ! 00054 !!!! Declarations de variables internes 00055 ! 00056 REAL, DIMENSION(SIZE(PTA)) :: ZLAMBDA 00057 REAL, DIMENSION(SIZE(PTA)) :: ZRG, ZLN2S 00058 REAL, DIMENSION(SIZE(PTA)) :: ZKNG 00059 ! 00060 REAL, PARAMETER :: ZGASMW = 28.9644d0 00061 REAL :: ZK 00062 INTEGER :: IJ, II 00063 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00064 00065 IF (LHOOK) CALL DR_HOOK('DSLT_VELGRAV1D',0,ZHOOK_HANDLE) 00066 00067 ! Sutherland's equation for viscosity 00068 PMU(:)=1.8325d-5 * 416.16/(PTA(:)+120.) * (PTA(:)/296.16) * SQRT(PTA(:)/296.16) 00069 00070 ! Mean free path (Seinfeld and Pandis p455) 00071 ZLAMBDA(:)=PMU(:)/PRHODREF(:) * SQRT(1.89d-4*ZGASMW/PTA(:))*1.e6 00072 00073 DO II = 1,SIZE(PRG,2) 00074 00075 ZRG (:) = PRG(:,II) * 1E-6 00076 ZLN2S(:) = LOG(PSIG(:,II))**2 00077 ! 00078 ZKNG (:) = ZLAMBDA(:) / PRG(:,II) 00079 ! 00080 PVGG(:,II) = 2. * XG * PRHOP * ZRG(:)**2 / (9.*PMU(:)) 00081 PDPG(:,II) = XBOLTZ * PTA(:)/(6.*XPI*ZRG(:)*PMU(:)) 00082 00083 DO IJ = 0,2 00084 ! 00085 ZK = REAL(3*IJ) 00086 00087 PDPK(:,3*II+IJ-2) = PDPG(:,II) * & 00088 (EXP((-2.*ZK+1.)/2.*ZLN2S(:)) + & 00089 1.246*ZKNG(:) * EXP((-4.*ZK+4)/2.*ZLN2S(:))) 00090 00091 PVGK(:,3*II+IJ-2) = PVGG(:,II) * & 00092 (EXP((4.*ZK+4.)/2.*ZLN2S(:)) + & 00093 1.246*ZKNG(:)* EXP((2.*ZK+1.)/2.*ZLN2S(:))) 00094 ENDDO 00095 00096 ENDDO 00097 IF (LHOOK) CALL DR_HOOK('DSLT_VELGRAV1D',1,ZHOOK_HANDLE) 00098 00099 00100 END SUBROUTINE DSLT_VELGRAV1D