Tutorial 3: Pressure Method

This example will review how to setup an insitu excavation example, defining the mesh in the .of file.

Runtime: ~2 hours on i9 8-core Windows 10 Machine

Full Tutorial Script

To run the model, save your text file with the .of extension. Rebuild the openfdem solution and drag your .of file into the OpenFDEM.exe. It will automatically run and save the outputs.

'''
**                                                                                     **
**                                                                                     **
**              ____                   ______ _____  ______ __  __                     **
**             / __ \                 |  ____|  __ \|  ____|  \/  |                    **
**            | |  | |_ __   ___ _ __ | |__  | |  | | |__  | \  / |                    **
**            | |  | | '_ \ / _ \ '_ \|  __| | |  | |  __| | |\/| |                    **
**            | |__| | |_) |  __/ | | | |    | |__| | |____| |  | |                    **
**             \____/| .__/ \___|_| |_|_|    |_____/|______|_|  |_|                    **
**                   | |                     OpenFree Finite Element                   **
**                   |_|                         and Discrete Element Method Solver    **
**                                                                                     **
**        OpenFDEM : Object Oriented Open Free Finite Discrete Element Code            **
**                                                                                     **
**            Copyright (C) 2017 - 2021   Xiaofeng Li                                  **
**                         Email: xfli@whrsm.ac.cn                                     **
**                                                                                     **
general comments of this input file! you can use \''' to comment several lines and use # to 
comment each line '''

''' It is an example to apply the in-situ stress using pressure method, the main steps are: 1-
    apply normal pressure on the boundary and run 100,000 steps to balance the model, the equlibrium
        steps should be adjusted for different model size and mesh size, the usr can also use solve ratio 
        to iterate the equlibrium. 2- excavted the hole after the equlibrium, the pressure should be still 
        kept. 
        model dimesion is 1.0 x 1.0 m and the unit system is m-kg-s '''
        
# clear old memories, be optional
of.new

# Create a retangular block, group tag is rock, the range is xmin =0, xmax =1, ymin=0,ymax= 1
of.geometry.square 'rock' 0 1 0 1
# Create a hole in the block, cut is to fragment the block and seprate the rock block to hole block and 
# new rock block (out of the hole block)
of.geometry.cut.circle 'hole' 'rock' 0.5 0.5 0.1 70
# assign global mesh size, the default keyword is for global entities
of.geometry.mesh.size 'all' 0.02
# starts to mesh, delaunay is optional, it is the default value
of.geometry.mesh delaunay

#insert cohesive elements, globally
of.mesh.insert 'all'

# assign  material parameters to solid elements based on the element groups
of.mat.element 'all' elastic den 2000 E 30e9 v 0.3 damp 0.9
of.mat.cohesive 'all' EM ten 10e6 coh 20e6 fric 0.3 GI 20 GII 40 
of.mat.contact 'all' MC fric 0.3

#create excavation element group using cricle tool, based on the centric point and radius
of.group.element.circle 'excavation' 0.5 0.5 0.1
#create bottom_edge nodal group using plane tool, based on the start point coord and end point coord
of.group.nodal.plane 'bottom_edge' 0.0 0.0 1.0 0.0
#create up_edge nodal group using plane tool, based on the start point coord and end point coord
of.group.nodal.plane 'up_edge' 0.0 1.0 1.0 1.0
#create left_edge nodal group using plane tool, based on the start point coord and end point coord
of.group.nodal.plane 'left_edge' 0.0 0.0 0.0 1.0
#create right_edge nodal group using plane tool, based on the start point coord and end point coord
of.group.nodal.plane 'right_edge' 1.0 0.0 1.0 1.0

# set interval to write paraview field results
of.history.pv.interval 500
of.history.pv.field all
of.history.pv.fracture all
of.history.pv.cohesive all

# assign pressure boundary on edges, comprssion is postive
of.boundary.pressure.normal 'bottom_edge' 15e6
of.boundary.pressure.normal 'up_edge' 15e6
of.boundary.pressure.normal 'left_edge' 5e6
of.boundary.pressure.normal 'right_edge' 5e6

# total run steps to equlibrium the insitu stress
of.step 100000

# excavted the hole
of.boundary.excavation 'excavation'
# run steps to compute the tunnel deformation
of.step 500000
# terminate the run and step out solver
of.stop