Skip to content

Mohr-Coulomb:

Since 06.12.2024 numgeo has two version of the Mohr-Coulomb model implemented:

Mohr-Coulomb

*Mechanical = Mohr-Coulomb   
E [F/A], nu [-], c [F/A], phi_c [rad],  psi [rad], theta_t [deg]
A Mohr-Coulomb model in the version proposed by \cite{abbo2011c2} has been implemented in numgeo. This model slightly deviates from the original Mohr-Coulomb model in terms of the shape of the yield surface due to a hyperbolic approximation in the meridional plane and rounded corners in the deviatoric plane, controlled by the distance towards the apex \(a = \alpha \cot\varphi\) and the transition lode angle \(\theta_t\), respectively. In the current implementation, a constant value of \(\alpha = 0.05\) is used, while \(\theta_t\) is a material parameter. The material parameters of the Mohr-Coulomb elasto-plasticity model are given in the following.

  • \(E\) [F/A] is the Young's modulus of the material.
  • \(\nu\) [-] is the Poisson's ratio.
  • \(c\) [F/A] is the cohesion.
  • \(\varphi_c\) [rad] is the critical friction angle.
  • \(\psi\) [rad] is the dilation angle.
  • \(\theta_t\) [deg] is the transition lode angle for the round-off at the compression and extension corners. Following the recommendations by \cite{abbo2011c2}, the transition angle is restricted to \(25.0^\circ \le \theta_t \le 29.5^\circ\).

State variables

In addition to the (effective) stress, the Mohr-Coulomb constitutive model takes additional state variables. Performing simulations with this model requires the prescription of those. The following state variables are contained in the model:

  • Void ratio: \(e\), void_ratio. The prescription of the void ratio is mandatory, if the initialization is omitted or wrong values are prescribed the simulation will abort. However, for the evaluation of the material response, the void ratio is not considered in the constitutive model. It is just for output-purposes.

The state variables can be initialized in two different ways:

  • Using the *Initial conditions, type = state variables command in the input file, e.g.
    *Initial conditions, type = state variables
    element_set_name, void_ratio, <value>
    
  • Using the interface for user-defined initial state variables. In this approach, the vector holding the state variables is filled directly in a fortran subroutine as described in Section User defined state variables. The position of the state variable in the associated vector is as follows: statev(1) = \(e\)

Additional output variables

The following additional output variables are available in the *Output command:

  • Void ratio: void_ratio
  • Current cohesion: cohesion
  • Current friction angle: friction_angle
  • Current dilation angle: friction_angle
  • Plastic points (areas undergoing plastic deformation): plastic_points

Mohr-Coulomb-2

*Mechanical = Mohr-Coulomb-2   
E [F/A], nu [-], c [F/A], phi_c [rad],  psi [rad], p_t [F/A]

This implementation of the Mohr-Coulomb model utilizes the exact formulation of the yield surface and provides the elastic tangent Jacobian. Compared to the first Mohr-Coulomb implementation, this version is significantly faster as it eliminates the need for sub-stepping. The use of elastic tangent stiffness offers both advantages and disadvantages: it is more robust in the plastic limit, but it may require more iterations to achieve global equilibrium. Nevertheless, the increased calculation speed due to the absence of sub-stepping—often results in a substantial reduction in overall simulation time compared to its elasto-plastic counterpart. However, it is important to note that employing elastic stiffness might lead to a slight overestimation of the factor of safety (FoS) when this model is applied in a strength reduction analysis..

  • \(E\) [F/A] is the Young's modulus of the material.
  • \(\nu\) [-] is the Poisson's ratio.
  • \(c\) [F/A] is the cohesion.
  • \(\varphi_c\) [rad] is the critical friction angle.
  • \(\psi\) [rad] is the dilation angle.
  • \(p_t\) [F/A] is the tension cut value, positive values refer to tension, i.e. \(p_t=1\) kPa will cut the models response at tensile stresses smaller that 1 kPa.