Skip to content

Commit

Permalink
CO2 effect on stomatal conductance according to Franks et a. (2013) e…
Browse files Browse the repository at this point in the history
…quation
  • Loading branch information
ayhwong committed Jun 25, 2019
1 parent 8577e97 commit a989c27
Show file tree
Hide file tree
Showing 3 changed files with 66 additions and 2 deletions.
8 changes: 8 additions & 0 deletions GeosCore/drydep_mod.F
Expand Up @@ -194,6 +194,7 @@ MODULE DRYDEP_MOD
! 16 Mar 2017 - R. Yantosca - Remove references to obsolete vars in Input_Opt
! 24 Aug 2017 - M. Sulprizio- Remove support for GCAP, GEOS-4, GEOS-5 and MERRA
! 01 Dec 2018 - H.P. Lin - Move DEPSAV to State_Chm%DryDepSav
! 25 Jun 2019 - A. Wong - Add CO2 effect on stomatal resistance (RIX)
!EOP
!------------------------------------------------------------------------------
!BOC
Expand Down Expand Up @@ -1424,6 +1425,13 @@ SUBROUTINE DEPVEL( am_I_Root, Input_Opt, State_Met, State_Chm,
ENDIF
RIX = RIX*GFACT*GFACI
! Apply scaling factor to RIX when CO2 effect is turned on
! (ayhwong, 6/25/19)
IF (Input_Opt%CO2_EFFECT) THEN
RIX = RIX*Input_Opt%RS_SCALE
ENDIF
150 CONTINUE
!*
!* Compute aerodynamic resistance to lower elements in lower part
Expand Down
49 changes: 48 additions & 1 deletion GeosCore/input_mod.F
Expand Up @@ -3378,6 +3378,8 @@ SUBROUTINE READ_DEPOSITION_MENU( am_I_Root, Input_Opt, RC )
! 13 Sep 2017 - M. Sulprizio- Remove Input_Opt%USE_OLSON_2001. Olson 2001 is
! now the default.
! 08 Nov 2017 - R. Yantosca - Return error condition to calling program
! 25 Jun 2017 - A. Wong - Add the option of inclduing CO2 effect on drydep

!EOP
!------------------------------------------------------------------------------
!BOC
Expand Down Expand Up @@ -3427,6 +3429,30 @@ SUBROUTINE READ_DEPOSITION_MENU( am_I_Root, Input_Opt, RC )
ENDIF
READ( SUBSTRS(1:N), * ) Input_OPt%LWETD

! Turn on CO2 effect on drydep?
CALL SPLIT_ONE_LINE( SUBSTRS, N, 1, 'CO2_EFFECT', RC )
IF ( RC /= GC_SUCCESS ) THEN
CALL GC_Error( ErrMsg, RC, ThisLoc )
RETURN
ENDIF
READ( SUBSTRS(1:N), * ) Input_Opt%CO2_EFFECT

! CO2 level at simulation
CALL SPLIT_ONE_LINE( SUBSTRS, N, 1, 'CO2_LEVEL', RC )
IF ( RC /= GC_SUCCESS ) THEN
CALL GC_Error( ErrMsg, RC, ThisLoc )
RETURN
ENDIF
READ( SUBSTRS(1:N), * ) Input_Opt%CO2_LEVEL

! Reference CO2 level
CALL SPLIT_ONE_LINE( SUBSTRS, N, 1, 'CO2_REF', RC )
IF ( RC /= GC_SUCCESS ) THEN
CALL GC_Error( ErrMsg, RC, ThisLoc )
RETURN
ENDIF
READ( SUBSTRS(1:N), * ) Input_Opt%CO2_REF

! Separator line
CALL SPLIT_ONE_LINE( SUBSTRS, N, 1, 'separator', RC )
IF ( RC /= GC_SUCCESS ) THEN
Expand Down Expand Up @@ -3460,7 +3486,18 @@ SUBROUTINE READ_DEPOSITION_MENU( am_I_Root, Input_Opt, RC )
ELSE
Input_Opt%PBL_DRYDEP = .TRUE.
ENDIF


! If CO2 effect on RS in turned on, calculate the scaling factor
! on Rs based on Franks et al. (2013) (ayhwong, 6/25/2019)

If (Input_Opt%CO2_EFFECT) THEN
Input_Opt%RS_SCALE = Input_Opt%CO2_LEVEL / Input_Opt%CO2_REF *
& (Input_Opt%CO2_LEVEL + 80.0_fp) *
& (Input_Opt%CO2_REF - 40.0_fp) /
& (Input_Opt%CO2_LEVEL - 40.0_fp) /
& (Input_Opt%CO2_REF + 80.0_fp)
ENDIF

!=================================================================
! Print to screen
!=================================================================
Expand All @@ -3473,10 +3510,20 @@ SUBROUTINE READ_DEPOSITION_MENU( am_I_Root, Input_Opt, RC )
& Input_Opt%PBL_DRYDEP
WRITE( 6, 100 ) 'Turn on wet deposition? : ',
& Input_Opt%LWETD
WRITE( 6, 100 ) 'Turn on CO2 effect? : ',
& Input_Opt%CO2_EFFECT
WRITE( 6, 110 ) 'CO2 level : ',
& Input_Opt%CO2_LEVEL
WRITE( 6, 110 ) 'CO2 reference level : ',
& Input_Opt%CO2_REF
WRITE( 6, 110 ) 'RIX scaling factor : ',
& Input_Opt%RS_SCALE

ENDIF

! FORMAT statements
100 FORMAT( A, L5 )
110 FORMAT( A, f6.2 )

END SUBROUTINE READ_DEPOSITION_MENU
!EOC
Expand Down
11 changes: 10 additions & 1 deletion Headers/input_opt_mod.F90
Expand Up @@ -233,7 +233,11 @@ MODULE Input_Opt_Mod
LOGICAL :: LDRYD
LOGICAL :: LWETD
REAL(fp) :: WETD_CONV_SCAL
LOGICAL :: PBL_DRYDEP
LOGICAL :: PBL_DRYDEP
LOGICAL :: CO2_EFFECT
REAL(fp) :: CO2_LEVEL, CO2_REF
REAL(fp) :: RS_SCALE


!----------------------------------------
! GAMAP MENU fields
Expand Down Expand Up @@ -704,6 +708,7 @@ SUBROUTINE Set_Input_Opt( am_I_Root, Input_Opt, RC )
! 07 Nov 2017 - R. Yantosca - Remove LVARTROP; it's not needed
! 08 Mar 2018 - R. Yantosca - Bug fix, remove reference to TINDEX here
! 06 Nov 2018 - R. Yantosca - Add error trapping for allocation statements
! 25 Jun 2019 - A. Wong - Add CO2_LEVEL, CO2_REF, CO2_EFFECT
!EOP
!------------------------------------------------------------------------------
!BOC
Expand Down Expand Up @@ -994,6 +999,10 @@ SUBROUTINE Set_Input_Opt( am_I_Root, Input_Opt, RC )
Input_Opt%LWETD = .FALSE.
Input_Opt%WETD_CONV_SCAL = 1.0_fp
Input_Opt%PBL_DRYDEP = .FALSE.
Input_Opt%CO2_LEVEL = 390.0_fp
Input_Opt%CO2_REF = 390.0_fp
Input_Opt%CO2_EFFECT = .FALSE.
Input_Opt%RS_SCALE = 1.0_fp

!----------------------------------------
! GAMAP_MENU fields
Expand Down

0 comments on commit a989c27

Please sign in to comment.