Add files via upload
This commit is contained in:
122
code/precipfrac.f
Normal file
122
code/precipfrac.f
Normal file
@ -0,0 +1,122 @@
|
||||
! $Id: precipfrac.f,v 1.1 2009/06/09 21:51:53 daven Exp $
|
||||
SUBROUTINE PRECIPFRAC( I, J, RATE, FRAC )
|
||||
!
|
||||
!*****************************************************************************
|
||||
! Subroutine PRECIPFRAC computes the fraction of a grid box that is
|
||||
! actually precipitating, along with the precipitation rate.
|
||||
! (djj, hyl, bmy, 10/18/99, 2/11/03)
|
||||
!
|
||||
! Arguments as input:
|
||||
! ===========================================================================
|
||||
! (1 ) I (INTEGER) : Longitude index of grid box
|
||||
! (2 ) J (INTEGER) : Latitude index of grid box
|
||||
!
|
||||
! Arguments as output:
|
||||
! ===========================================================================
|
||||
! (1) RATE (REAL*8) : Rate of precipitation for grid box (I,J) [mm/day ]
|
||||
! (2) FRAC (REAL*8) : Fraction of grid box undergoing precip [unitless]
|
||||
!
|
||||
! Inputs passed via "CMN_PRECIP"
|
||||
! ===========================================================================
|
||||
! (3 ) PREACC (REAL*8) : DAO total precipitation at ground [mm/day]
|
||||
! (4 ) PRECON (REAL*8) : DAO convective precipitation at ground [mm/day]
|
||||
!
|
||||
! References:
|
||||
! ===========================================================================
|
||||
! Liu, H. Y., D. J. Jacob, I. Bey, R. M. Yantosca, and D. M. Koch,
|
||||
! Three-dimensional simulation of $210Pb$ and $7Be$ in the Harvard-DAO
|
||||
! tropospheric chemistry model, Eos Trans. AGU, 80 (17), S32, 1999a.
|
||||
!
|
||||
! NOTES:
|
||||
! (1 ) PRECIPFRAC is written in Fixed-Form Fortran 90.
|
||||
! (2 ) This version of PRECIPFRAC replaces Yuhang Wang's original version,
|
||||
! as used in the GEOS-CTM prior to 10/18/99.
|
||||
! (3 ) Be sure to force double precision with the "D" exponent.
|
||||
! (4 ) Now reference PREACC, PRECON from "dao_mod.f" instead of from
|
||||
! common block header file "CMN_PRECIP". (bmy, 6/26/00)
|
||||
! (5 ) Removed obsolete code from 6/26/00 (bmy, 8/31/00)
|
||||
! (6 ) Replaced JMX with JGLOB. Updated comments, cosmetic changes.
|
||||
! (bmy, 6/25/02)
|
||||
! (7 ) Now use function GET_YOFFSET from "grid_mod.f" (bmy, 2/11/03)
|
||||
!*****************************************************************************
|
||||
!
|
||||
! Reference to F90 modules
|
||||
USE DAO_MOD, ONLY : PREACC, PRECON
|
||||
USE GRID_MOD, ONLY : GET_YOFFSET
|
||||
|
||||
IMPLICIT NONE
|
||||
|
||||
# include "CMN_SIZE" ! JGLOB
|
||||
|
||||
! Arguments
|
||||
INTEGER, INTENT(IN) :: I, J
|
||||
REAL*8, INTENT(OUT) :: RATE, FRAC
|
||||
|
||||
! Local variables
|
||||
INTEGER :: JREF
|
||||
REAL*8 :: FRAC_LS, FRAC_CONV
|
||||
|
||||
!=================================================================
|
||||
! PRECIPFRAC begins here!
|
||||
!
|
||||
! For the polar boxes there is no precipitation.
|
||||
! Set RATE = 0, FRAC = 0 and return.
|
||||
!=================================================================
|
||||
JREF = J + GET_YOFFSET()
|
||||
|
||||
IF ( JREF == 1 .OR. JREF == JGLOB ) THEN
|
||||
FRAC = 0.0d0
|
||||
RATE = 0.0d0
|
||||
RETURN
|
||||
ENDIF
|
||||
|
||||
!=================================================================
|
||||
! Large scale precipitation at (I,J) = PREACC(I,J) - PRECON(I,J).
|
||||
!
|
||||
! If there is large-scale precipitation at grid box (I,J), then
|
||||
! assume that it covers 7% of the area of grid box(I,J). Store
|
||||
! this value in the variable FRAC_LS.
|
||||
!=================================================================
|
||||
IF ( ( PREACC(I,J) - PRECON(I,J) ) > 0.0d0 ) THEN
|
||||
FRAC_LS = 7.0d-2
|
||||
ELSE
|
||||
FRAC_LS = 0.0d0
|
||||
ENDIF
|
||||
|
||||
!=================================================================
|
||||
! Convective precipitation at (I,J) = PRECON(I,:J)
|
||||
!
|
||||
! If there is convective precipitation at (I,J), then
|
||||
! assume that it covers 0.3% of the area of grid box (I,J).
|
||||
! Store this value in the variable FRAC_CONV.
|
||||
!=================================================================
|
||||
IF ( PRECON(I,J) > 0.0d0 ) THEN
|
||||
FRAC_CONV = 3.0d-3
|
||||
ELSE
|
||||
FRAC_CONV = 0.0d0
|
||||
ENDIF
|
||||
|
||||
!=================================================================
|
||||
! FRAC = total fraction of grid box (I,J) covered by precip
|
||||
! = FRAC_LS + FRAC_CONV
|
||||
!
|
||||
! The possible values of FRAC are: 0.0%, 0.3%, 7.0%, or 7.3%.
|
||||
!=================================================================
|
||||
FRAC = FRAC_LS + FRAC_CONV
|
||||
|
||||
!=================================================================
|
||||
! RATE = total precipitation rate in mm/day, adjusted for the
|
||||
! fraction of the grid box that is precipitating.
|
||||
!
|
||||
! To get RATE, take total precip at (I,J) and divide it by FRAC.
|
||||
!=================================================================
|
||||
IF ( FRAC > 0.0d0 ) THEN
|
||||
RATE = PREACC(I,J) / FRAC
|
||||
ELSE
|
||||
RATE = 0.0d0
|
||||
ENDIF
|
||||
|
||||
! Return to calling program
|
||||
END SUBROUTINE PRECIPFRAC
|
||||
|
||||
|
Reference in New Issue
Block a user