## Digging into COMSOL’s Geomechanics Module

##### Andrew Griesmer | April 19, 2013

I will always remember a Geotechnical Engineering class I took during the pursuit of my Civil Engineering degree. It contained both the high and low points for that academic semester; the lab portion was a lot of fun, learning about (read: playing with) the different soils and clays existing in the state of Georgia. The final project, on the other hand, tasked us with designing a retaining wall to match certain specifications — a tough and lengthy assignment. A retaining wall is used to hold back soil from a region you don’t want it to move to, such as a lower level of the ground. If excavating close to a retaining wall, you’re subjecting it to additional forces it was not originally designed for, and it may require subsequent support. How much easier it could have been had we only known about geomechanics simulation software.

### Modeling an Excavation in COMSOL

There are two ways to model an excavation in COMSOL Multiphysics, both of which include a parametric sweep. One option involves a sweep of the geometry, removing the geometry (excavation) one step at a time. As the soil is removed, the support it supplies is removed as well, subjecting the retaining wall to soil stresses from the non-excavated side. The other option is to start with the already excavated geometry, and simulate the excavation using a boundary load. The boundary load applies a force on the excavation side of the retaining wall, equal to (and therefore negating) the in-situ stresses, for any part of the wall that is below the virtual excavation depth.

### Video Tutorial: Introduction to the Geomechanics Module

The video shown below uses the latter of the two strategies to model a 26-meter excavation. As the excavation deepens, three struts are activated using a ramp function, and boolean expressions. As the excavation reaches their depths, the struts are activated as long as the horizontal wall deflection is greater than what we allow it to be. There are four sets of results showing the deformation of the soil and retaining wall, the plastic deformation, wall deflection, and the surface settlement.

Check out our Deep Excavation Model for more information. Logging into your COMSOL Access account enables you to download the documentation for this model as well.

### Video Transcription

*In this example, a 26-meter excavation is modeled by means of a parametric sweep, with a step size of 2 meters. Struts are activated once the excavation reaches their depths by using a boolean expression. A symmetry is used because the modeled excavation is only the right half of the full excavation.*

For this example, we will be modeling in 2D plane strain, using the solid mechanics interface and a stationary study.

These are the parameters we will be using later on, which represent in-situ stresses, properties of the metal struts, excavation steps, along with a couple other related parameters.

Create the ramp function for activating the struts. The ramp location is set to be -U_max. Once a strut is activated, it will generate a force proportional to the struts stiffness and the horizontal displacement.

The geometry has been previously created for this model, but all the steps are outlined in the model file to build the upper and lower layers of the soil, as well as the retaining wall and three embedded struts. Forming an assembly creates an identity pair between the wall soil and wall diaphragm boundaries.

Two boundary selections have been created and renamed wall_diaphragm and wall_soil. As you can see, they are in the same location but are different boundaries. The extrusion operators constrain the normal displacement between the retaining wall and soil, forcing them to stay in contact.

Add a soil plasticity node and you can see that the yield criterion is Drucker-Prager, but we still want to match it to the Mohr-Coulomb criterion. An initial stress is added to the model as well to simulate the in-situ stresses in the x, y, and z directions.

Now we can add the boundary constraints, including a symmetry on the left, a fixed constraint for the bottom boundary, and a roller for the right boundaries.

We can choose a prescribed displacement to make sure the soil at boundary 4 only moves in the y direction. Enter the expression for the general extrusion operator from earlier.

A prescribed displacement is also needed for the wall_soil boundary created earlier. This time in the x direction and using the second general extrusion operator in the u0 field.

For the final part of the physics set up, we are going to add five boundary loads to the model.

The first boundary load is added for the horizontal soil boundaries. Therefore we want stress in the y-direction.

The second boundary load is added for the vertical retaining wall boundaries. We want stress in the negative x-direction here.

The rest of the boundary loads will describe the three struts. Select the top strut and then total force as the load type. Enter in the equation shown which is the ramp function of the wall deflection, with an added term limiting the expression to occur only when the depth is below the strut. Right click the Boundary Load 3 node to rename it Strut_1. Right click again to duplicate it twice, since we want similar settings for the second and third struts. Clear the selection and add the middle strut, then change the expression from stage 1 to stage 2 to activate it only when the depth moves below the second strut. Rename this one Strut_2. Similar to the first two, for the third strut, add the third strut boundary and change stage 2 to stage 3. Rename the third strut to finish off the physics set up.

The materials have already been created and set up for this model. The upper layer soil, the lower layer soil, and the retaining wall.

For meshing the model, sometimes an automatic mesh is sufficient, but we want to make our own for this model to improve convergence on the soil-wall boundary. First a mapped mesh for the retaining wall domain. Add a distribution for the wall diaphragm and enter 60 for the number of elements. Add a second distribution for the bottom boundary, and enter 2 for the number of elements.

Now, add a free triangular for the remaining geometry. First add a size node to make sure the mesh is finer. Then we add three distributions, one corresponding to each of the mapped mesh distributions. 2 for the wall diaphragm totaling 60 elements, and one for the bottom boundary, with 3 elements.

Now we can build the mesh and zoom in on the soil-wall boundary, to see the improved mesh.

The last step before computing the model is defining a range of depth parameters for the parametric sweep. Add depth as the continuation parameter, and click the range button. We want a depth ranging from 0 to -26 meters with a step size of two meters.

Right-click study 1 to compute the model.

Once the model has finished computing we can add some post processing to better view the results.

The default plot shows the von Mises stress. Click replace expression and go to solid mechanics, displacement, and choose total displacement. Click plot to view the displacement at the different excavation depths. The player button feature allows you to see all the excavation depth results in one animation.

Create a second plot group and surface plot, then enter in the expression solid.epe>0 to view the plastic deformation in the different soil layers. Click the player button again to view all the parameter values in succession.

Now we will create a 1D plot and a line graph, with the wall diaphragm as the selection. For the y-axis data, the expression is y, and for the x axis, the expression is u, with millimeters as units. This graph shows the wall deflection or horizontal displacement as a function of depth for different excavation steps.

*Create a second line graph, showing the surface settlement, or vertical displacement, as a function of the distance from the wall. Add boundary 8 and change the y-axis data expression to v and use millimeters as the unit. And when you check the legends box, the plot will automatically be generated.*