Groundwater Modelling Advice: Difference between revisions

Content deleted Content added
No edit summary
 
(13 intermediate revisions by 3 users not shown)
Line 1:
= Introduction =
From the 2023-03 release and onwards, horizontal flow (advection) of water and multiple vertical groundwater layers when using TUFLOW HPC are supported. This page provides useful groundwater modelling advice to users.
 
= Groundwater Linking to 1D (ESTRY or SWMM) =
Since the 2025.2.0 release, TUFLOW supports connecting the 1D domain (either ESTRY or SWMM) to 2D groundwater layers. This enables users to model features such as detention basins with subsurface drainage or other green infrastructure directly within a TUFLOW model and represent groundwater and surface water impacts. The physical infrastructure collecting the groundwater varies, but is typically a perforated or slotted pipe in loose fill such as gravel or sand.
'''<font size=3><font color=red>This section is under construction</font></font>'''<br>
 
TUFLOW supports connecting the 1D domain (either ESTRY or SWMM) to 2D groundwater layers. This enables users to model features such as detention basins with subsurface drainage or other green infrastructure directly within a TUFLOW model and represent groundwater and surface water impacts.
The discharge through the connection is typically modeled using a depth vs discharge curve where the depth applied is the pressure in the groundwater at the location of the connection. This relationship is often defined using the orifice equation where the orifice coefficient depends on the configuration. This section below contains guidance for generating a curve based on the orifice equation.
 
== Depth vs Discharge Curves ==
This section provides two methods for generating depth vs discharge curves based on the orifice equation:<br>
 
[[File: orifice_equation.png]]<br>
Where:
*'''''C<sub>d</sub>A''''' is the orifice coefficient
:*'''''C<sub>d</sub>''''' is the discharge coefficient
:*'''''A''''' is the cross-sectional area of the orifice
*'''''H<sub>up</sub>''''' is the upstream water level
*'''''H<sub>down</sub>''''' is the higher of the downstream obvert or downstream water level<br>
 
 
The following link provides some guidance on how to select the orifice coefficient: https://wiki.sustainabletechnologies.ca/wiki/Flow_through_perforated_pipe
 
=== Python ===
The following python code, also available [https://gitlab.com/tuflow-user-group/tuflow/data-pre-processing/orifice_depth_discharge/-/blob/main/Orifice_Depth_Discharge_Curve.py here], can be used to generate depth vs discharge curves, which can then be input into a model with groundwater linking to 1D.
 
<span style="color:#3776ab">'''import'''</span><span style="color:black"> math </span>
<span style="color:#3776ab">'''import'''</span><span style="color:black"> numpy<span style="color:#3776ab"> '''as'''</span> np</span><br>
gravity_metric = <span style="color:#3776ab">'''9.81 '''</span><span style="color:#808080"># Metric Units: m/s^2</span>
gravity_us_customary = <span style="color:#3776ab">'''32.2 '''</span><span style="color:#808080"># US Customary Units: ft/s^2</span><br>
<span style="color:#3776ab">'''def'''</span><span style="color:black"> generate_orifice_depth_vs_discharge(us_units, orifice_coefficient, depth_max, depth_step, output_filename):</span>
<span style="color:black"> gravity = gravity_us_customary </span><span style="color:#3776ab">'''if'''</span><span style="color:black"> us_units </span><span style="color:#3776ab">'''else'''</span><span style="color:black"> gravity_metric </span><br>
<span style="color:black"> depths = np.arange(</span><span style="color:#3776ab">'''0.0'''</span><span style="color:black">, depth_max, depth_step)</span>
<span style="color:black"> vec_func = np.vectorize(</span><span style="color:#3776ab">'''lambda'''</span><span style="color:black">, e: orifice_coefficient * math.sqrt(</span><span style="color:#3776ab">'''2'''</span><span style="color:black"> * gravity * e))</span>
<span style="color:black"> discharges = vec_func(depths)</span><br>
<span style="color:black"> values = np.column_stack((depths, discharges))</span><br>
<span style="color:black"> np.savetxt(output_filename, values, delimiter=</span><span style="color:green">","</span><span style="color:black">, fmt=</span><span style="color:green">"%.7g"</span><span style="color:black">, header=</span></span><span style="color:green">'Depth, Discharge'</span><span style="color:black">, comments=</span><span style="color:green"><nowiki>''</nowiki></span><span style="color:black">)</span><br><br>
<span style="color:#3776ab">'''if'''</span><span style="color:black"> __name__ == </span><span style="color:green">"__main__"</span><span style="color:black">:</span>
<span style="color:black"> use_us_units = </span><span style="color:#3776ab">False</span>
<span style="color:black"> orifice_coefficent_value = </span><span style="color:#3776ab">0.002 </span><span style="color:#808080"># Orifice coefficient</span>
<span style="color:black"> depth_max_value = </span><span style="color:#3776ab">2.0 </span><span style="color:#808080"># Maximum depth (in meters or feet)</span>
<span style="color:black"> depth_step_value = </span><span style="color:#3776ab">0.02 </span><span style="color:#808080"># Value to increment by (in meters or feet)</span><br>
<span style="color:black"> out_filename = </span><span style="color:green">"orifice_depth_vs_discharge.csv"</span><br>
<span style="color:black"> generate_orifice_depth_vs_discharge(use_us_units, orifice_coefficent_value, depth_max_value, depth_step_value, out_filename)</span>
 
=== Excel ===
The following excel file can be used to generate depth vs discharge curves, which can then be input into a model with groundwater linking to 1D. The file contains a two examples, one for Metric and one for US Customary.
 
<u>[https://downloads.tuflow.com/Private_Download/depth_vs_discharge.xlsx Depth vs Discharge - Excel]</u>
 
= Common Questions Answered (FAQ) =
Line 28 ⟶ 73:
 
== How should peat soils be represented in a direct rainfall model? ==
If observed flow data is available, calibrating the model to these measurements would be the best approach. If not, using ReFH2a lumped hydrology model as a comparison for flow estimates is recommended. Since peat is often saturated, infiltration rates may be low, but lateral water movement could still occur. In this case, using the interflow functionality in TUFLOW may help better represent water movement within the catchment.
 
== How can a French drain (filter drain) be represented? ==
Line 87 ⟶ 132:
Fine-tuning soil properties, hydraulic conductivity, and boundary conditions will improve interflow simulation accuracy.
 
== Why does the groundwater lateral flux calculation include porosity, and what changes are planned? ==
Benchmarking tests have identified that the current sub surface flow equation in TUFLOW underestimates steady state discharge rates due to the inclusion of porosity. While the steady state water level gradient is correct, transient state simulations show discrepancies.