This is an unmaintained course material, please see current material at:
Surface water flow and erosion simulation
Here we compute surface runoff, and sediment transport using existing path sampling model.Resources:
For animating in GRASS GIS 7, see the video instructions or instructions for the Spatio-temporal data handling and visualization in GRASS GIS workshop
Start GRASS GIS
Start GRASS - click on GRASS icon or typegrass70
In startup pannel set GIS Data Directory to path to datasets,
for example on MS Windows, C:\Users\myname\grassdata
.
For Project location select nc_spm_08_grass7 (North Carolina, State Plane, meters) and
for Accessible mapset create a new mapset (called e.g. HW_interpolation_2).
Click Start GRASS.
Overland flow depth and discharge
g.region rural_1m res=2 -p
Calculate partial derivatives to define the gradient of elevation surface:
v.surf.rst -d input=elev_lid792_bepts elevation=elev_lid792_2m slope=dx_2m aspect=dy_2m tension=15 smooth=1.5 npmin=150
Note that partial derivatives can be also computed using r.slope.aspect.
Compute spatial pattern of overland flow depth and discharge by running the SIMWE model implemented in the r.sim.water module. We will use uniform rainfall excess, infiltration and land cover.
r.sim.water -t elevation=elev_lid792_2m dx=dx_2m dy=dy_2m rain_value=50 infil_value=0 man_value=0.05 depth=wdp_2m discharge=disch_2m nwalkers=100000 niterations=120 output_step=20
Display the results, add legend for individual raster and whatever you think is appropriate.
d.rast wdp_2m.120
d.rast disch_2m.120
Optionally, animate the time series: File > Animation tool
Peak runoff with predefined flow direction
Compute peak runoff with predefined flow direction along the stream inluding culvert under the road.First, compute direction (aspect) of the given streams:
v.to.rast streams output=streams_dir_2m use=dir
Compute stream dx and dy using direction and slope equal to 2 degrees:
r.mapcalc "dxstr_2m = tan(2.)*cos(streams_dir_2m)"
r.mapcalc "dystr_2m = tan(2.)*sin(streams_dir_2m)"
Compute combined DEM and stream dx and dy:
r.mapcalc "dxdemstr_2m = if(isnull(dxstr_2m), dx_2m, dxstr_2m)"
r.mapcalc "dydemstr_2m = if(isnull(dystr_2m), dy_2m, dystr_2m)"
Run the model:
r.sim.water -t elevation=elev_lid792_2m dx=dxdemstr_2m dy=dydemstr_2m rain_value=50 infil_value=0 man_value=0.05 depth=wdpstr_2m discharge=dischstr_2m nwalkers=100000 niterations=120 output_step=20
d.rast dischstr_2m.120
Use Animation tool to animate the discharge.
Runoff for spatially variable landcover and rainfall excess
Compute runoff for spatially variable landcover represented by spatially variable Mannings and infiltration.
We will use variable Mannings coefficient defined by reclassifying
land cover class. Here is the content of a file called
land_to_mannings.txt
with reclassification rules for
the r.recode module.
1:1:0.9:0.9 2:2:0.5:0.5 3:3:0.01:0.01 4:4:0.03:0.03 5:5:0.01:0.01 6:6:0.05:0.05 7:7:0.1:0.1 8:8:0.1:0.1 9:9:0.9:0.9 10:10:0.03:0.03 11:11:0.5:0.5
r.recode input=landcover_1m output=mancover_2m rules=land_to_mannings.txt
Similarly, we will create raster with spatially variable rainfall excess
rates based on the land cover classes. We use file named
land_to_rain.txt
to specify the rates for individual classes.
1:1:50:50 2:2:5:5 3:3:40:40 4:4:35:35 5:5:50:50 6:6:40:40 7:7:25:25 8:8:15:15 9:9:50.:50. 10:10:40:40 11:11:10:10Again, we use the file as rules for the r.recode module.
r.recode input=landcover_1m output=raincover_2m rules=land_to_rain.txt
Run the model:
r.sim.water -t elevation=elev_lid792_2m dx=dxdemstr_2m dy=dydemstr_2m rain=raincover_2m infil_value=0 man=mancover_2m depth=wdpstrcov_2m discharge=distrcov_2m nwalkers=100000 niterations=120 output_step=20
Display the static results.
d.rast wdpstrcov_2m.120
d.legend wdpstrcov_2m.120
d.rast distrcov_2m.120
d.legend distrcov_2m.120
Animate the time series using the Animation tool.
Sediment flow rate, erosion and deposition
Compute sediment flow rate and net erosion/deposition using sediment transport part of the SIMWE model implemented in the the r.sim.sediment module. To make the computations faster, set region just to the upper part of the watershed:g.region s=s+290
Compute input transport capacity and detachment coefficient maps:
r.mapcalc "tranin = 0.001"
r.mapcalc "detin = 0.001"
Compute input critical shear stress:
r.mapcalc "tauin = 0.01"
Run the model using the last depth from previous run:
g.copy rast=wdp_2m.120,wdp_2m
r.sim.sediment elevation=elev_lid792_2m dx=dx_2m dy=dy_2m water_depth=wdp_2m detachment_coeff=detin transport_coeff=tranin shear_stress=tauin man_value=0.05 nwalkers=1000000 niterations=120 transport_capacity=tcapacity tlimit_erosion_deposition=erdepmax sediment_flux=sedflow erosion_deposition=erdepsimwe
Display these results after few seconds:
d.rast tcapacity
d.rast erdepmax
Display the final results:
d.rast sedflow
d.legend sedflow
d.rast erdepsimwe
d.legend erdepsimwe