Skip to content
Open
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -93,8 +93,7 @@ MODULE CATCHMENT_CN_MODEL
DZTSURF => CATCH_DZTSURF, &
DZGT => CATCH_DZGT, &
FSN => CATCH_FSN, &
PEATCLSM_POROS_THRESHOLD, &
PEATCLSM_ZBARMAX_4_SYSOIL
PEATCLSM_POROS_THRESHOLD

USE SURFPARAMS, ONLY: CSOIL_2, RSWILT, &
LAND_FIX, FLWALPHA
Expand Down Expand Up @@ -2247,7 +2246,7 @@ SUBROUTINE WUPDAT ( &
! same approach as for RZFLW (see subroutine RZDRAIN for
! comments)
ZBAR1 = catch_calc_zbar( BF1(N), BF2(N), CATDEF(N) )
SYSOIL = (2.*bf1(N)*amin1(amax1(zbar1,0.),PEATCLSM_ZBARMAX_4_SYSOIL) + 2.*bf1(N)*bf2(N))/1000.
SYSOIL = (2.*bf1(N)*amin1(amax1(zbar1,0.),0.45) + 2.*bf1(N)*bf2(N))/1000.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should become and "if statement" where you have the three porosity cases, I assume.

SYSOIL = amin1(SYSOIL,poros(N))
ET_CATDEF = SYSOIL*(EVSURF(N) + EVROOT(N))*ESATFR(N)/(1.*AR1(N)+SYSOIL*(1.-AR1(N)))
AR1eq = (1.+ars1(N)*(catdef(N)))/(1.+ars2(N)*(catdef(N))+ars3(N)*(catdef(N))**2)
Expand Down

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -93,8 +93,7 @@ MODULE CATCHMENT_MODEL
SATCAPFR => CATCH_SATCAPFR, &
PHIGT => CATCH_PHIGT, &
DZTSURF => CATCH_DZTSURF, &
PEATCLSM_POROS_THRESHOLD, &
PEATCLSM_ZBARMAX_4_SYSOIL
PEATCLSM_POROS_THRESHOLD

USE SURFPARAMS, ONLY: &
LAND_FIX, ASTRFR, STEXP, RSWILT, &
Expand Down Expand Up @@ -750,7 +749,7 @@ SUBROUTINE CATCHMENT ( &
QM, RA1, SWNETF, HLWDWN, PSUR, &
RDCX, HFTDS1, DHFT1, QSAT1, DQS1, ALW1, BLW1, &
EMAXRT,CSOIL,SWSRF1,POTFRC,.false., &
TC1SF, QA1, &
TC1SF, QA1, POROS, &
EVAP1, SHFLUX1, HLWUP1, RX11, RX21, GHFLUX1, HSNACC1 &
)

Expand All @@ -768,7 +767,7 @@ SUBROUTINE CATCHMENT ( &
QM, RA2, SWNETF, HLWDWN, PSUR, &
RDCX, HFTDS2, DHFT2, QSAT2, DQS2, ALW2, BLW2, &
EMAXRT,CSOIL,SWSRF2,POTFRC,.false., RZI, WPWET, &
TC2SF, QA2, &
TC2SF, QA2, POROS, &
EVAP2, SHFLUX2, HLWUP2, RX12, RX22, GHFLUX2, HSNACC2 &
)

Expand Down Expand Up @@ -1784,7 +1783,7 @@ SUBROUTINE energy1 ( &
RDC, HFTDS, DHFTDS, &
QSATTC, DQSDTC, ALWRAD, BLWRAD, &
EMAXRT,CSOIL,SWSRF,POTFRC,BUG, &
TC, QA, &
TC, QA, POROS, &
EVAP, SHFLUX, HLWUP, RX1, RX2, GHFLUX, HSNACC &
)

Expand All @@ -1797,7 +1796,7 @@ SUBROUTINE energy1 ( &
REAL, INTENT(IN), DIMENSION(NCH) :: UM, RCIN, ETURB, HSTURB, QM, RA, &
SWNET, HLWDWN, PSUR, RDC, HFTDS, DHFTDS, QSATTC, DQSDTC, &
ALWRAD, BLWRAD, EMAXRT, CSOIL, SWSRF, POTFRC, DEDQA, &
DEDTC, DHSDQA, DHSDTC
DEDTC, DHSDQA, DHSDTC, POROS
LOGICAL, INTENT(IN) :: BUG


Expand All @@ -1810,7 +1809,7 @@ SUBROUTINE energy1 ( &
INTEGER ChNo, N
REAL, DIMENSION(NCH) :: VPDSTR, ESATTX, VPDSTX, FTEMP, RC, EAX, TX, &
RCX, DRCDTC, DUMMY, FTEMPX, DRCDEA, DEDEA, DHSDEA, EM, &
ESATTC, DESDTC, EA
ESATTC, DESDTC, EA, ZBAR, FOXY
REAL DELTC, DELEA


Expand Down Expand Up @@ -1865,10 +1864,17 @@ SUBROUTINE energy1 ( &
)


! MB: FOXY only called here, ZBAR unchanged
CALL OXYFAC ( &
NCH, ZBAR, POROS, &
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ZBAR is input to this function but not calculated yet, see line above that you missed to add.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cannot add it to the line above. So I write it here. Add at line 1842:
!ZBAR defined here positive below ground and in meter
ZBAR(CHNO)=SQRT(1.e-20+CATDEF(CHNO)/BF1(CHNO))-BF2(CHNO)

compare with 3184 of https://github.com/mbechtold/PEATCLSM_T/blob/main/catchment.F90

FOXY &
)

DO N=1,NCH
RC(N)=RCIN(N)/(VPDSTR(N)*FTEMP(N)+1.E-20)
RC(N)=RCIN(N)/(VPDSTR(N)*FTEMP(N)*FOXY(N)+1.E-20)
ENDDO


CALL RSURFP1 ( &
NCH, UM, RDC, SWSRF,ESATTC, EA, &
RC, &
Expand Down Expand Up @@ -1899,7 +1905,7 @@ SUBROUTINE energy1 ( &
CALL TMPFAC (NCH, ITYP, TX, FTEMPX)

DO N=1,NCH
RCX(N)=RCIN(N)/(VPDSTX(N)*FTEMPX(N)+1.E-20)
RCX(N)=RCIN(N)/(VPDSTX(N)*FTEMPX(N)*FOXY(N)+1.E-20)
ENDDO

CALL RSURFP1 (NCH, UM, RDC, SWSRF, ESATTX, EA, &
Expand All @@ -1917,7 +1923,7 @@ SUBROUTINE energy1 ( &
CALL VPDFAC (NCH, ITYP, ESATTC, EAX, VPDSTX)

DO N=1,NCH
RCX(N)=RCIN(N)/(VPDSTX(N)*FTEMP(N)+1.E-20)
RCX(N)=RCIN(N)/(VPDSTX(N)*FTEMP(N)*FOXY(N)+1.E-20)
ENDDO

CALL RSURFP1 (NCH, UM, RDC, SWSRF, ESATTC, EAX, &
Expand Down Expand Up @@ -1970,7 +1976,7 @@ SUBROUTINE energy2 ( &
RDC, HFTDS, DHFTDS, &
QSATTC, DQSDTC, ALWRAD, BLWRAD, &
EMAXRT,CSOIL,SWSRF,POTFRC,BUG,RZI, WPWET, &
TC, QA, &
TC, QA, POROS, &
EVAP, SHFLUX, HLWUP, RX1, RX2, GHFLUX, HSNACC &
)

Expand All @@ -1984,7 +1990,7 @@ SUBROUTINE energy2 ( &
REAL, INTENT(IN), DIMENSION(NCH) :: UM, RCIN, ETURB, HSTURB, QM, RA, &
SWNET, HLWDWN, PSUR, RDC, HFTDS, DHFTDS, QSATTC, DQSDTC, &
ALWRAD, BLWRAD, EMAXRT, CSOIL, SWSRF, POTFRC, RZI, WPWET, &
DEDQA, DEDTC, DHSDQA, DHSDTC
DEDQA, DEDTC, DHSDQA, DHSDTC, POROS

LOGICAL, INTENT(IN) :: BUG

Expand All @@ -1999,7 +2005,7 @@ SUBROUTINE energy2 ( &
INTEGER ChNo, N
REAL, DIMENSION(NCH) :: VPDSTR, ESATTX, VPDSTX, FTEMP, RC, EAX, TX, &
RCX, DRCDTC, DUMMY, FTEMPX, DRCDEA, DEDEA, DHSDEA, EM, &
ESATTC, DESDTC, EA, RSTFAC
ESATTC, DESDTC, EA, RSTFAC, ZBAR, FOXY
! REAL DELTC, DELEA, STEXP, ATRANS, ASTRFR
REAL DELTC, DELEA, ATRANS

Expand Down Expand Up @@ -2055,8 +2061,14 @@ SUBROUTINE energy2 ( &
FTEMP &
)

! MB: OXYFAC only called here, ZBAR unchanged
CALL OXYFAC ( &
NCH, ZBAR, POROS, &
FOXY &
)

DO N=1,NCH
RC(N)=RCIN(N)/(VPDSTR(N)*FTEMP(N)+1.E-20)
RC(N)=RCIN(N)/(VPDSTR(N)*FTEMP(N)*FOXY(N)+1.E-20)
ENDDO


Expand Down Expand Up @@ -2100,7 +2112,7 @@ SUBROUTINE energy2 ( &
CALL TMPFAC (NCH, ITYP, TX, FTEMPX)

DO N=1,NCH
RCX(N)=RCIN(N)/(VPDSTX(N)*FTEMPX(N)+1.E-20)
RCX(N)=RCIN(N)/(VPDSTX(N)*FTEMPX(N)*FOXY(N)+1.E-20)
RCX(N) = RCX(N) / RSTFAC(N)**STEXP
RCX(N) = AMIN1 (RCX(N) , 1.E10)
ENDDO
Expand All @@ -2120,7 +2132,7 @@ SUBROUTINE energy2 ( &
CALL VPDFAC (NCH, ITYP, ESATTC, EAX, VPDSTX)

DO N=1,NCH
RCX(N)=RCIN(N)/(VPDSTX(N)*FTEMP(N)+1.E-20)
RCX(N)=RCIN(N)/(VPDSTX(N)*FTEMP(N)*FOXY(N)+1.E-20)
RCX(N) = RCX(N) / RSTFAC(N)**STEXP
RCX(N) = AMIN1 (RCX(N) , 1.E10)
ENDDO
Expand Down Expand Up @@ -2597,6 +2609,48 @@ END SUBROUTINE TMPFAC
!****
!**** [ END TMPFAC ]
!****

!**** -----------------------------------------------------------------
!**** /////////////////////////////////////////////////////////////////
!**** -----------------------------------------------------------------
!****
!**** [ BEGIN OXYFAC ]
!****
SUBROUTINE OXYFAC ( &
NCH, ZBAR, POROS, &
FOXY &
)
!****
!**** Compute oxygen stress factor.
!****
IMPLICIT NONE

INTEGER, INTENT(IN) :: NCH
REAL, INTENT(IN), DIMENSION(NCH) :: ZBAR, POROS
REAL, INTENT(OUT), DIMENSION(NCH) :: FOXY

INTEGER :: ChNo
!****
!**** -----------------------------------------------------------------

DO 100 ChNo = 1, NCH
!****
IF ((POROS(CHNO) .GE. 0.75) .AND. (POROS(CHNO) .LT. 0.90) .AND. &
(-1.0*ZBAR(CHNO) .GT. -0.29)) THEN
! start of stress at 0.29. First try: linear increase with
! stdev of microtopography: 0.32 for tropical natural peatlands
FOXY(ChNo) = 1. - amax1(amin1( 0.29 - ZBAR(ChNo) / 0.32, 1.), 0.0)
ELSE
FOXY(CHNO) = 1.
ENDIF
!****
100 CONTINUE
!****
RETURN
END SUBROUTINE OXYFAC
!****
!**** [ END OXYFAC ]
!****
!**** -----------------------------------------------------------------
!**** /////////////////////////////////////////////////////////////////
!**** -----------------------------------------------------------------
Expand Down Expand Up @@ -2724,8 +2778,23 @@ SUBROUTINE WUPDAT ( &
! MB: accounting for water ponding on AR1
! same approach as for RZFLW (see subroutine RZDRAIN for
! comments)
ZBAR1 = catch_calc_zbar( BF1(CHNO), BF2(CHNO), CATDEF(CHNO) )
SYSOIL = (2.*bf1(CHNO)*amin1(amax1(zbar1,0.),PEATCLSM_ZBARMAX_4_SYSOIL) + 2.*bf1(CHNO)*bf2(CHNO))/1000.


! PEATCLSM Tropics drained

ZBAR1 = catch_calc_zbar( BF1(CHNO), BF2(CHNO),CATDEF(CHNO) )

IF ((POROS(CHNO) .GE. 0.67) .AND. (POROS(CHNO) .LT. 0.75)) THEN
SYSOIL = (2*bf1(CHNO)*amin1(amax1(zbar1,0.),0.80) +2*bf1(CHNO)*bf2(CHNO))/1000.
! PEATCLSM Tropics natural
ELSE IF ((POROS(CHNO) .GE. 0.75) .AND. (POROS(CHNO) .LT. 0.90)) THEN
SYSOIL = (2*bf1(CHNO)*amin1(amax1(zbar1,0.),0.65) +2*bf1(CHNO)*bf2(CHNO))/1000.
! PEATCLSM NORTH natural
ELSE IF (POROS(CHNO) .GE. 0.90) THEN
SYSOIL = (2*bf1(CHNO)*amin1(amax1(zbar1,0.),0.45) +2*bf1(CHNO)*bf2(CHNO))/1000.
ENDIF

! Calculate fraction of RZFLW removed/added to catdef
SYSOIL = amin1(SYSOIL,poros(CHNO))
ET_CATDEF = SYSOIL*(ESOI(CHNO) + EVEG(CHNO))*ESATFR/(1.*AR1(CHNO)+SYSOIL*(1.-AR1(CHNO)))
AR1eq = (1.+ars1(chno)*(catdef(chno)))/(1.+ars2(chno)*(catdef(chno))+ars3(chno)*(catdef(chno))**2)
Expand Down
Loading