-
Notifications
You must be signed in to change notification settings - Fork 2
Integration of tropical PEATCLSM in GEOSldas (CLSM and CatchmentCN) - Round 1 #1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: develop
Are you sure you want to change the base?
Changes from 2 commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Large diffs are not rendered by default.
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -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, & | ||
|
|
@@ -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 & | ||
| ) | ||
|
|
||
|
|
@@ -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 & | ||
| ) | ||
|
|
||
|
|
@@ -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 & | ||
| ) | ||
|
|
||
|
|
@@ -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 | ||
|
|
||
|
|
||
|
|
@@ -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 | ||
|
|
||
|
|
||
|
|
@@ -1865,10 +1864,17 @@ SUBROUTINE energy1 ( & | |
| ) | ||
|
|
||
|
|
||
| ! MB: FOXY only called here, ZBAR unchanged | ||
| CALL OXYFAC ( & | ||
| NCH, ZBAR, POROS, & | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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. There was a problem hiding this comment. Choose a reason for hiding this commentThe 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: 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, & | ||
|
|
@@ -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, & | ||
|
|
@@ -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, & | ||
|
|
@@ -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 & | ||
| ) | ||
|
|
||
|
|
@@ -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 | ||
|
|
||
|
|
@@ -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 | ||
|
|
||
|
|
@@ -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 | ||
|
|
||
|
|
||
|
|
@@ -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 | ||
|
|
@@ -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 | ||
|
|
@@ -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 ] | ||
| !**** | ||
| !**** ----------------------------------------------------------------- | ||
| !**** ///////////////////////////////////////////////////////////////// | ||
| !**** ----------------------------------------------------------------- | ||
|
|
@@ -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) | ||
|
|
||
There was a problem hiding this comment.
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.