Skip to content

Commit f02184e

Browse files
ekluzekbjandre
authored andcommitted
mosart1_0_28
Explicitly truncate the river length to a mininum value, rather than just change the calculation of tlen for rlen_min. Testing: Sean and Keith both ran long simulations with this change (in a branch off of 1_0_26) Previous simulations showed that short rivers would accumulate water in them slowly over time. This doesn't happen in longer rivers. But it affects the total water balance of the system. Simulations by Sean Swenson and Keith Oleson show that this no longer happens with this change. Changes from Sean Swenson to add minimum value to rlen (length of main channel); rlen values can be too small, leading to tlen values that are too large
1 parent 8da18c5 commit f02184e

2 files changed

Lines changed: 32 additions & 12 deletions

File tree

doc/ChangeLog

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,24 @@
1+
===============================================================
2+
Tag name: mosart1_0_28
3+
Originator(s): erik
4+
Date: Oct 05, 2017
5+
One-line Summary: Explicitly truncate the river length to a mininum value, rather than
6+
just change the calculation of tlen for rlen_min.
7+
8+
Testing: Sean and Keith both ran long simulations with this change (in a branch off of 1_0_26)
9+
10+
Previous simulations showed that short rivers would accumulate water in them slowly over
11+
time. This doesn't happen in longer rivers. But it affects the total water balance of the
12+
system. Simulations by Sean Swenson and Keith Oleson show that this no longer happens
13+
with this change.
14+
15+
Changes from Sean Swenson to add minimum value to rlen (length of main channel); rlen values
16+
can be too small, leading to tlen values that are too large
17+
18+
M src/riverroute/RtmIO.F90 - Explicitly set rlen to rlen_min early and remove code that was
19+
calculating tlen based on rlen_min when rlen<rlen_min. Since rlen is changed this affects code
20+
that is based on rlen, and can change the if statements that are triggered.
21+
122
===============================================================
223
Tag name: mosart1_0_27
324
Originator(s): erik

src/riverroute/RtmMod.F90

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2551,6 +2551,16 @@ subroutine MOSART_init
25512551
! control parameters and some other derived parameters
25522552
! estimate derived input variables
25532553

2554+
! add minimum value to rlen (length of main channel); rlen values can
2555+
! be too small, leading to tlen values that are too large
2556+
2557+
do iunit=rtmCTL%begr,rtmCTL%endr
2558+
rlen_min = sqrt(TUnit%area(iunit))
2559+
if(TUnit%rlen(iunit) < rlen_min) then
2560+
TUnit%rlen(iunit) = rlen_min
2561+
end if
2562+
end do
2563+
25542564
do iunit=rtmCTL%begr,rtmCTL%endr
25552565
if(TUnit%Gxr(iunit) > 0._r8) then
25562566
TUnit%rlenTotal(iunit) = TUnit%area(iunit)*TUnit%Gxr(iunit)
@@ -2574,18 +2584,7 @@ subroutine MOSART_init
25742584
TUnit%hlen(iunit) = hlen_max ! allievate the outlier in drainag\e density estimation. TO DO
25752585
end if
25762586

2577-
! rlen values can be too small, leading to tlen values that are
2578-
! too large; calculate tlen using rlen_min when necessary
2579-
! an alternate fix (commented out above) would be to directly
2580-
! adjust rlen, then all subsequent calculations based on rlen
2581-
! would be consistent. With this change, other calculations
2582-
! use the original rlen, e.g. twidth
2583-
rlen_min = sqrt(TUnit%area(iunit))
2584-
if(TUnit%rlen(iunit) < rlen_min) then
2585-
TUnit%tlen(iunit) = TUnit%area(iunit) / rlen_min / 2._r8 - TUnit%hlen(iunit)
2586-
else
2587-
TUnit%tlen(iunit) = TUnit%area(iunit) / TUnit%rlen(iunit) / 2._r8 - TUnit%hlen(iunit)
2588-
end if
2587+
TUnit%tlen(iunit) = TUnit%area(iunit) / TUnit%rlen(iunit) / 2._r8 - TUnit%hlen(iunit)
25892588

25902589
if(TUnit%twidth(iunit) < 0._r8) then
25912590
TUnit%twidth(iunit) = 0._r8

0 commit comments

Comments
 (0)