Water flowing in rock dam: seepage flow#

Tutorial 6 and 7 will present the modelling to solve hydraulic fracture on a dam model in both finite element method (FEM) and finite-discrete element method (FDEM).

Geometry of a Dam Model

Figure 1: Geometry of a Dam Model#

1 Main Steps#

  1. Initialize the model.

  2. Create the geometry and the mesh

  3. Assign material properties.

  4. Create the group

  5. assign boundary conditions.

  6. Set the outputs.

2 Codes#

Warning

Please note that, all the setting in the example is based on the developer’s computer. You may need to change these details based on your own environment.

To start with programming, create a new empty input file or copy it from the existing examples (later add the .of extension). Begin writing the following commands:

2.1 Initialize the model#

  1. Create a new run and clean up the old memories.

of.new
  1. Set up the folder name to save your results. Here the folder name is set to be “result”.

of.set.result "result"
  1. Set the number of cores to be used for running this model.

# by default

2.2 Create the geometry and the mesh#

  1. See Figure 1 for the dam model and draw the corresponding geometry.

of.geometry.square 'rock' xmin 0 xmax 8.0 ymin 0.0 ymax 4.0
  1. Set the mesh size of the geometry.

of.geometry.mesh.size 'default' 0.1
of.geometry.mesh delaunay

2.3 Assign Material Properties#

Parameter

Value

Continuum Triangular Elements

model

elastic

density (\(kg/m^3\))

2700

E (Pa)

5e8

\(\nu\)

0.2

Contact Material Properties

model

MC

friction

0.5

Hydraulic Properties

permeability

2e-8

Biot_K (Pa)

22-9

Biot_c

0.1

prosity

0.2

  1. Set the material properties. In this example, the matrix is assiged as elastic material and thethe contact uses Mohr-Coulomb slip by default. In this porous flow example, the cohesive interfaces are ignored.

of.mat.element 'default' elastic density 2700 E 5e8 v 0.2
of.mat.contact 'default' MC fric 0.5
  1. Set the hydraulic properties.

of.mat.hydro.matrix 'default' permiability 2e-8 Biot_K 22.0e9 Biot_c 0.1 prosity 0.2

2.4 Create Groups and Assign Boundary Conditions#

  1. Group the nodes to prepare for the next step.

of.group.nodal 'left' range box.in  xmin -100.0 xmax 0.1 ymin -100 ymax 100
of.group.nodal 'bottom' range box.in xmin -100 xmax 100 ymin -100 ymax 0.001
of.group.nodal 'up' range box.in xmin -100 xmax 100 ymin 3.9999 ymax 100
of.group.nodal 'right' range box.in xmin 7.999 xmax 100.0 ymin -100 ymax 100
  1. Assign the nodal boundaries. Fix the bottom of the model.

of.boundary.nodal.velocity  'bottom' x 0 y 0

3. Assign the water level based on Figure 1. Water at the 0.0 m from the top of the dam on the left side of the dam and 3.0 m deep from the top of the dam on the right side of the dam. p0 is the initial water pressure on the boundary and head is the water level.

of.boundary.hydro.waterlevel  'left' p0 0.0 head 4.0
of.boundary.hydro.waterlevel  'right' p0 0.0 head 1.0

2.5 Set the Outputs#

  1. Set the output interval to be every 6000 steps and output all fields variables and fracture variables.

of.history.pv.interval 6000
of.history.pv.field default
of.history.pv.fracture default
  1. In this model, only hydro module is considered in the calculation. The mechanical module is turned off and the coupling between mechanical and hydro is overlooked. The pressure-induced deformation is not considered in this example.

of.hydro.mechanical off
  1. Timestep for hydraulic calculation can be fixed to 1e-5 in this example.

of.hydro.timestep 1e-5
  1. The program will run 60000 steps in total to terminate the modelling. It will output 10 files for reference.

of.step 60000
  1. Finalize the model and clear all the temporary memories.

of.finalize
  1. Save the notepad and double click the .of file to run the program.

3 Run the Program#

Hydro module and matrix flow module are on to model the hydro seepage.

Applied Modules

Figure 2: Applied Modules#

Hydro material information are included in the modeling.

Hydro Materials

Figure 3: Hydro Materials#

Hydro boundary conditions.

Hydro Boundary Conditions

Figure 4: Hydro Boundary Conditions#

4 Results#

Fluid pressure of seepage.

Hydro Seepage

Figure 5: Hydro Seepage#

5 Full Script#

# initialization, this command is to clear the memory in your last run, it is not 
# mandatory but strongly recommend.
of.new

# Set the path folder of your output results, //result// in the same path of your input 
# file will be created by default
of.set.result "result"

# Set the number of cores you want to use, the parallization will be automatically 
# turned on when you use the following command, otherwise the serilization will be used 
# by default
of.set.omp 15
##################################### create mesh ######################################
of.geometry.square 'rock' xmin 0 xmax 8.0 ymin 0.0 ymax 4.0

of.geometry.mesh.size 'default' 0.1
of.geometry.mesh delaunay

############################### assign material parameters #############################
of.mat.element 'default' elastic density 2700 E 5e8 v 0.2
of.mat.contact 'default' MC fric 0.5

#set matrix parameter
of.mat.hydro.matrix 'default' permiability 2e-8 Biot_K 22.0e9 Biot_c 0.1 prosity 0.2

##################################### create groups ####################################
# OpenFDEM can manually group the nodes, elements, cohesive elements and edges by using 
# the region of box, circle and plane.
of.group.nodal 'left' range box.in  xmin -100.0 xmax 0.1 ymin -100 ymax 100
of.group.nodal 'bottom' range box.in xmin -100 xmax 100 ymin -100 ymax 0.001
of.group.nodal 'up' range box.in xmin -100 xmax 100 ymin 3.9999 ymax 100
of.group.nodal 'right' range box.in xmin 7.999 xmax 100.0 ymin -100 ymax 100

################################# assign boundaries ####################################
# boundaries can be assigned after you define the groups
of.boundary.nodal.velocity  'bottom' x 0 y 0
of.boundary.hydro.waterlevel  'left' p0 0.0 head 4.0
of.boundary.hydro.waterlevel  'right' p0 0.0 head 1.0

####################################### set output #####################################
# Set the interval of writing ParaView results.
of.history.pv.interval 6000
of.history.pv.field default
of.history.pv.fracture default

##################################### execute model ######################################
# gravity for water level
of.set.gravity x 0 y -10
# only consider the hydro module
of.hydro.mechanical off
# set the timestep for hydro module
of.hydro.timestep 1e-5
# to excuate the model
of.step 60000
# finalize the model and clear the memory
of.finalize