88from HSP2 .ADCALC import advect
99from HSP2 .utilities import make_numba_dict
1010
11- ERRMSG = []
11+ ERRMSGS = ('SEDTRN: Warning -- bed storage of sediment size fraction sand is empty' , #ERRMSG0
12+ 'SEDTRN: Warning -- bed storage of sediment size fraction silt is empty' , #ERRMSG1
13+ 'SEDTRN: Warning -- bed storage of sediment size fraction clay is empty' , #ERRMSG2
14+ 'SEDTRN: Warning -- bed depth appears excessive' , #ERRMSG3
15+ 'SEDTRN: Fatal error ocurred in colby method- variable outside valid range- switching to toffaleti method' , #ERRMSG4
16+ 'SEDTRN: Simulation of sediment requires all 3 "auxiliary flags" (AUX1FG, etc) in section HYDR must be turned on' , #ERRMSG5
17+ 'SEDTRN: When specifying the initial composition of the bed, the fraction of sand, silt, and clay must sum to a value close to 1.0.' ) #ERRMSG6
1218
1319def sedtrn (store , siminfo , uci , ts ):
1420 ''' Simulate behavior of inorganic sediment'''
1521
16- errorsV = zeros (len (ERRMSG ), dtype = int )
22+ errorsV = zeros (len (ERRMSGS ), dtype = int )
1723
1824 simlen = siminfo ['steps' ]
1925 delt = siminfo ['delt' ]
@@ -31,6 +37,9 @@ def sedtrn(store, siminfo, uci, ts):
3137 # table SANDFG
3238 sandfg = ui ['SANDFG' ] # 1: Toffaleti method, 2:Colby method, 3:old HSPF power function
3339
40+ if ui ['AUX3FG' ] == 0 :
41+ errorsV [5 ] += 1 # error - sediment transport requires aux3fg to be on
42+
3443 # table SED-GENPARM
3544 bedwid = ui ['BEDWID' ]
3645 bedwrn = ui ['BEDWRN' ]
@@ -99,7 +108,7 @@ def sedtrn(store, siminfo, uci, ts):
99108 clay_bedfr = ui ['CLAYFR' ]
100109 total_bedfr = sand_bedfr + silt_bedfr + clay_bedfr
101110 if abs (total_bedfr - 1.0 ) > 0.01 :
102- pass # error message: sum of bed sediment fractions is not close enough to 1.0
111+ errorsV [ 6 ] += 1 # error message: sum of bed sediment fractions is not close enough to 1.0
103112
104113 # suspended sediment concentrations; table ssed-init
105114 sand_ssed1 = ui ['SSED1' ]
@@ -390,17 +399,20 @@ def sedtrn(store, siminfo, uci, ts):
390399 osed4 += osed1
391400 sand_rssed1 = sand_t_rsed7 = sand_rsed1 + sand_wt_rsed4 # total storage in mg.vol/l
392401 if sand_wt_rsed4 == 0.0 : # warn that bed is empty
393- pass # errmsg
402+ # errmsg
403+ errorsV [0 ] += 1 # The bed storage of sediment size fraction sand is empty.
394404
395405 osed4 += osed2
396406 silt_rssed2 = silt_t_rsed8 = silt_rsed2 + silt_wt_rsed5 # total storage in mg.vol/l
397407 if silt_wt_rsed5 == 0.0 : # warn that bed is empty
398- pass # errmsg
408+ # errmsg
409+ errorsV [1 ] += 1 # The bed storage of sediment size fraction silt is empty.
399410
400411 osed4 += osed3
401412 clay_rssed3 = clay_t_rsed9 = clay_rsed3 + clay_wt_rsed6 # total storage in mg.vol/l
402413 if clay_wt_rsed6 == 0.0 : # warn that bed is empty
403- pass # errmsg
414+ # errmsg
415+ errorsV [2 ] += 1 # The bed storage of sediment size fraction clay is empty.
404416
405417 # find the volume occupied by each fraction of bed sediment- ft3 or m3
406418 volsed = (sand_wt_rsed4 / (sand_rho * 1.0e06 )
@@ -418,7 +430,8 @@ def sedtrn(store, siminfo, uci, ts):
418430 volsed = volsed / (1.0 - por ) # allow for porosit
419431 beddep = volsed / (len_ * bedwid ) # calculate thickness of bed- ft or m
420432 if beddep > bedwrn :
421- pass # Errormsg: warn that bed depth appears excessive
433+ # Errormsg: warn that bed depth appears excessive
434+ errorsV [3 ] += 1
422435
423436 svol = vol # svol is volume at start of time step, update for next time thru
424437
@@ -487,7 +500,7 @@ def sedtrn(store, siminfo, uci, ts):
487500 ts ['OSED3' + str (i + 1 )] = OSED3 [:, i ]
488501 ts ['OSED4' + str (i + 1 )] = OSED4 [:, i ]
489502
490- return errorsV , ERRMSG
503+ return errorsV , ERRMSGS
491504
492505
493506def bdexch (avdepm , w , tau , taucd , taucs , m , vol , frcsed , susp , bed ):
@@ -644,8 +657,8 @@ def colby(v, db50, fhrad, fsl, tempr):
644657 if vx > v :
645658 break
646659 iv2 = iv1 + 1
647- yy1 = log10 (VG [iv1 ])
648- yy2 = log10 (VG [iv2 ])
660+ yy1 = log10 (VG [iv1 - 1 ])
661+ yy2 = log10 (VG [iv2 - 1 ])
649662 yyratio = (log10 (v ) - yy1 ) / (yy2 - yy1 )
650663
651664 tmpr = min (100.0 , max (32.0 , tempr * 1.8 + 32.0 ))
0 commit comments