! $Id: arsl1k.f,v 1.2 2010/03/09 15:03:46 daven Exp $ !------------------------------------------------------------------------------ ! Harvard University Atmospheric Chemistry Modeling Group ! !------------------------------------------------------------------------------ !BOP ! ! !ROUTINE: arsl1k ! ! !DESCRIPTION: Function ARSL1K calculates the 1st-order loss rate of species ! on wet aerosol surface. !\\ !\\ ! !INTERFACE: ! REAL*8 FUNCTION ARSL1K( AREA, RADIUS, DENAIR, STKCF, STK, SQM ) ! ! !USES: ! IMPLICIT NONE ! ! !INPUT PARAMETERS: ! ! Surface area of wet aerosols/volume of air [cm2/cm3] REAL*8, INTENT(IN) :: AREA ! Radius of wet aerosol [cm], order of 0.01-10 um; ! Note that radius here is Rd, not Ro REAL*8, INTENT(IN) :: RADIUS ! Density of air [#/cm3] REAL*8, INTENT(IN) :: DENAIR ! Sticking coefficient [unitless], order of 0.1 REAL*8, INTENT(IN) :: STKCF ! Square root of temperature [K] REAL*8, INTENT(IN) :: STK ! Square root of molecular weight [g/mole] REAL*8, INTENT(IN) :: SQM ! ! !REMARKS: ! The 1st-order loss rate on wet aerosol (Dentener's Thesis, p. 14) ! is computed as: ! . ! ARSL1K [1/s] = area / [ radius/dfkg + 4./(stkcf * xmms) ] ! . ! where XMMS = Mean molecular speed [cm/s] = sqrt(8R*TK/pi/M) for Maxwell ! DFKG = Gas phase diffusion coeff [cm2/s] (order of 0.1) ! !REVISION HISTORY: ! 01 Jul 1994 - lwh, jyl, gmg, djj - Initial version ! 04 Apr 2003 - R. Yantosca - Updated comments, cosmetic changes ! 07 Apr 2004 - R. Yantosca - Now return w/ default value if RADIUS is zero ! (i.e. is smaller than a very small number) ! 03 Dec 2009 - R. Yantosca - Prevent div-by-zero errors by returning the ! default value if any of the args are zero ! 03 Dec 2009 - R. Yantosca - Added ProTeX Header !EOP !------------------------------------------------------------------------------ !BOC ! ! !LOCAL VARIABLES: ! REAL*8 :: DFKG !================================================================= ! ARSL1K begins here! !================================================================= !---------------------------------------------------------------------- ! Prior to 12/3/09: ! Also check other values to avoid div-by-zero errors (bmy, 12/3/09) !IF ( AREA < 0d0 .or. RADIUS < 1d-30 ) THEN !---------------------------------------------------------------------- IF ( AREA < 0d0 .or. DENAIR < 1d-30 .or. RADIUS < 1d-30 .or. & SQM < 1d-30 .or. STK < 1d-30 .or. STKCF < 1d-30 ) THEN ! Use default value if any of the above values are zero ! This will prevent div-by-zero errors in the eqns below ARSL1K = 1.D-3 ELSE ! DFKG = Gas phase diffusion coeff [cm2/s] (order of 0.1) DFKG = 9.45D17/DENAIR * STK * SQRT(3.472D-2 + 1.D0/(SQM*SQM)) ! Compute ARSL1K according to the formula listed above ARSL1K = AREA / ( RADIUS/DFKG + 2.749064E-4*SQM/(STKCF*STK) ) ENDIF ! Return to calling program END FUNCTION ARSL1K !EOC