Add files via upload
This commit is contained in:
92
code/soiltype.f
Normal file
92
code/soiltype.f
Normal file
@ -0,0 +1,92 @@
|
||||
C $Id: soiltype.f,v 1.1 2009/06/09 21:51:52 daven Exp $
|
||||
SUBROUTINE SOILTYPE
|
||||
|
||||
C**********************************************************************
|
||||
C *
|
||||
C HARVARD ATMOSPHERIC CHEMISTRY MODELING GROUP *
|
||||
C MODULE FOR SOIL NOx EMISSIONS *
|
||||
C by Yuhang Wang, Gerry Gardner and Prof. Daniel Jacob *
|
||||
C (Release V2.1) *
|
||||
C *
|
||||
C Contact person: Bob Yantosca (bmy@io.harvard.edu) *
|
||||
C *
|
||||
C**********************************************************************
|
||||
C Be sure to force double precision with the DBLE function *
|
||||
C and the "D" exponent, wherever necessary (bmy, 10/6/99) *
|
||||
C**********************************************************************
|
||||
|
||||
! References to F90 modules (bmy, 2/11/03)
|
||||
USE TIME_MOD, ONLY : GET_MONTH, GET_DAY_OF_YEAR
|
||||
|
||||
IMPLICIT NONE
|
||||
|
||||
C**********************************************************************
|
||||
C SOILTYPE DETERMINES WHETHER SOIL IS DRY OR WET *
|
||||
C UPDATED DAILY. *
|
||||
C**********************************************************************
|
||||
C SOILPREP = Two month observed precip (mm/day/box *
|
||||
C (divide by # of days in month)) *
|
||||
C JENDDAY = Julian ending day of previous month *
|
||||
C WETSOIL = Criteria for wet soil mm *
|
||||
C LENGTHDAY = Number of days for pulse *
|
||||
C MONTHDAY = Day of the month *
|
||||
C NCURRENT = Number of days in current month *
|
||||
C NPREV = Number of days in previous month *
|
||||
C JDAY = Julian day *
|
||||
C MONTH = Month number *
|
||||
C RAIN = Total rain *
|
||||
C NPULSE = Number of types of pulsing *
|
||||
C NLAND = Total number of land boxes *
|
||||
C SOILPULS = Tracking of wet/dry & three types of pulsing (Y&L, 94) *
|
||||
C**********************************************************************
|
||||
C
|
||||
# include "CMN_SIZE"
|
||||
# include "commsoil.h"
|
||||
|
||||
! Now make JDAY, MONTH local variables
|
||||
INTEGER :: JDAY, MONTH
|
||||
|
||||
INTEGER LENGTHDAY,JDAYSAVE,M,K,MONTHDAY,NCURRENT,NPREV
|
||||
|
||||
REAL*8 WETSOIL,RAIN
|
||||
|
||||
REAL*8 JENDDAY(12)
|
||||
DATA JENDDAY /0,31,59,90,120,151,181,212,243,273,304,334/
|
||||
DATA WETSOIL /10.D0/ !ABOVE 10 MM FOR TWO WEEKS
|
||||
DATA LENGTHDAY /14/
|
||||
DATA JDAYSAVE /0/
|
||||
|
||||
!=================================================================
|
||||
! SOILTYPE begins here
|
||||
!=================================================================
|
||||
|
||||
! Get month and day of year
|
||||
MONTH = GET_MONTH()
|
||||
JDAY = GET_DAY_OF_YEAR()
|
||||
|
||||
! If it's a new day...
|
||||
IF (JDAYSAVE.NE.JDAY) THEN
|
||||
JDAYSAVE=JDAY
|
||||
MONTHDAY=JDAY-JENDDAY(MONTH)
|
||||
NCURRENT=MIN0(LENGTHDAY,MONTHDAY)
|
||||
NPREV=MAX0(0,LENGTHDAY-NCURRENT)
|
||||
|
||||
DO M=1,NLAND
|
||||
C For each land grid-box
|
||||
RAIN=SOILPREP(1,M)*DBLE(NPREV)+SOILPREP(2,M)*
|
||||
* DBLE(NCURRENT)
|
||||
IF (RAIN.GT.WETSOIL) THEN
|
||||
C WET
|
||||
SOILPULS(1,M)=-1.D0
|
||||
DO K=1,NPULSE
|
||||
SOILPULS(1+K,M)=0.D0
|
||||
END DO
|
||||
ELSE
|
||||
C DRY
|
||||
SOILPULS(1,M)=1.D0
|
||||
END IF
|
||||
END DO
|
||||
END IF
|
||||
|
||||
RETURN
|
||||
END
|
Reference in New Issue
Block a user