Forked from
Méso-NH / Méso-NH code
4389 commits behind the upstream repository.
aero_velgrav.f90 4.71 KiB
!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
!MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
!MNH_LIC for details. version 1.
!-----------------------------------------------------------------
!--------------- special set of characters for RCS information
!-----------------------------------------------------------------
! $Source$ $Revision$
! MASDEV4_7 newsrc 2006/05/18 13:07:25
!-----------------------------------------------------------------
!! ##############################
MODULE MODI_AERO_VELGRAV
!! ##############################
!!
INTERFACE
!!
SUBROUTINE AERO_VELGRAV(PSIG, PRG, PTHT, PABST,PRHODREF, PRHOP,&
PMU, PVGK,PDPK, PVGG, PDPG, PCOR, PTEMP)
IMPLICIT NONE
REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PSIG, PRG
REAL, DIMENSION(:,:,:), INTENT(IN) :: PTHT, PABST, PRHODREF
REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PRHOP
REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PMU
REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PVGK,PDPK
REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PVGG
REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PDPG
REAL, DIMENSION(:,:,:,:), OPTIONAL, INTENT(INOUT) :: PCOR
REAL, DIMENSION(:,:,:), OPTIONAL, INTENT(INOUT) :: PTEMP
END SUBROUTINE AERO_VELGRAV
!!
END INTERFACE
!!
END MODULE MODI_AERO_VELGRAV
!!
!! #######################################
SUBROUTINE AERO_VELGRAV(PSIG, PRG, PTHT, PABST,PRHODREF, PRHOP,&
PMU, PVGK,PDPK, PVGG, PDPG, PCOR, PTEMP)
!! #######################################
!!
!! PURPOSE
!! -------
!!
!! REFERENCE
!! ---------
!! none
!!
!! AUTHOR
!! ------
!! P. Tulet (CNRM/GMEI)
!!
!! MODIFICATIONS
!! -------------
!!
! Entry variables:
!
! PM(IN) -Array of moments
!
!*************************************************************
! Exit variables:
!
! PFSED(IN) -Array of moment variation due to dry deposition
!
!*************************************************************
! Variables used during the deposition velocity calculation
!
! PDPK -Polydisperse diffusivity (m2/s)
! PVGK -Polydisperse settling velocity of the kth moment (m/s)
!************************************************************
!!
!-----------------------------------------------------------------
!
!* 0. DECLARATIONS
! ------------
!
!USE MODD_DUST
!USE MODD_CSTS_DUST
USE MODD_CST
USE MODD_CH_AEROSOL
!
IMPLICIT NONE
!
!* 0.1 declarations of arguments
!
REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PSIG, PRG
REAL, DIMENSION(:,:,:), INTENT(IN) :: PTHT, PABST, PRHODREF
REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PRHOP
REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PMU
REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PVGK,PDPK
REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PVGG
REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PDPG
REAL, DIMENSION(:,:,:,:), OPTIONAL, INTENT(INOUT) :: PCOR
REAL, DIMENSION(:,:,:), OPTIONAL, INTENT(INOUT) :: PTEMP
!
!* 0.2 declaration of local variables
!
REAL, DIMENSION(SIZE(PSIG,1),SIZE(PSIG,2),SIZE(PSIG,3)) :: ZLAMBDA, ZTEMP
!
REAL, DIMENSION(SIZE(PSIG,1),SIZE(PSIG,2),SIZE(PSIG,3)) :: ZRG,ZLN2S
!
REAL, DIMENSION(SIZE(PSIG,1),SIZE(PSIG,2),SIZE(PSIG,3)) :: ZKNG
REAL, DIMENSION(SIZE(PSIG,1),SIZE(PSIG,2),SIZE(PSIG,3),SIZE(PSIG,4)) :: ZCOR
!
!
REAL, PARAMETER :: gasmw=28.9644E-3
REAL, PARAMETER :: gasr=8.3143
REAL :: ZK
!
INTEGER :: JI,JJ
!
!-----------------------------------------------------------------
!temperature
ZTEMP(:,:,:)=PTHT(:,:,:)*(PABST(:,:,:)/XP00)**(XRD/XCPD)
!
! Sutherland's equation for viscosity
PMU(:,:,:)=1.8325d-5*416.16/(ZTEMP(:,:,:)+120)*(ZTEMP(:,:,:)/296.16)*SQRT(ZTEMP(:,:,:)/296.16)
!
! Mean free path (Seinfeld and Pandis p455)
ZLAMBDA(:,:,:)=2*PMU(:,:,:)/(PABST(:,:,:)*SQRT(8*gasmw/(XPI*gasr*ZTEMP(:,:,:))))
!
!
DO JI=1,JPMODE
ZRG(:,:,:)=PRG(:,:,:,JI) * 1E-6
ZLN2S(:,:,:)=LOG(PSIG(:,:,:,JI))**2
!
ZKNG(:,:,:)=ZLAMBDA(:,:,:) / PRG(:,:,:,JI)
!
!Slip Correction Factor
ZCOR(:,:,:,JI)=1+ZLAMBDA(:,:,:)/ZRG(:,:,:)*(1.257+ &
0.4*exp(-1.1*ZRG(:,:,:)/ZLAMBDA(:,:,:)))
ZCOR(:,:,:,JI)=MAX(ZCOR(:,:,:,JI),1.0)
PVGG(:,:,:,JI)= 2.*XG*PRHOP(:,:,:,JI)*ZRG(:,:,:)**2 /(9.*PMU(:,:,:))*ZCOR(:,:,:,JI)
PDPG(:,:,:,JI)=XBOLTZ*ZTEMP(:,:,:)/ (6.*XPI* ZRG(:,:,:)*PMU(:,:,:))
!
IF(PRESENT(PCOR)) PCOR(:,:,:,JI) = ZCOR(:,:,:,JI)
IF(PRESENT(PTEMP)) PTEMP(:,:,:) = ZTEMP(:,:,:)
!
DO JJ=0,2
ZK=REAL(3*JJ)
PDPK(:,:,:,3*JI+JJ-2)=PDPG(:,:,:,JI)*(exp((-2.*ZK+1.)/2.*ZLN2S(:,:,:))+1.246*ZKNG(:,:,:)*&
exp((-4.*ZK+4)/2.*ZLN2S(:,:,:)))
!
PVGK(:,:,:,3*JI+JJ-2)=PVGG(:,:,:,JI)*&
(exp((4.*ZK+4.)/2.*ZLN2S(:,:,:)) + 1.246*ZKNG(:,:,:)* exp((2.*ZK+1.)/2.*ZLN2S(:,:,:)))
ENDDO
ENDDO
!
!
END SUBROUTINE AERO_VELGRAV