Extended Drucker-Prager Model: Triaxial Driver versus Semi-Analytical Solution

Problem description

This example uses the Triaxial Driver to simulate an elasto-plastic triaxial compression test of an Extended Drucker-Prager solid. Constant lateral confining stress together with loading/unloading axial strain periods are imposed. Imposed axial strain range are high enough for allowing plastic yield in both loading and unloading period. This complicated scenario is used for verifying the numerical convergence and accuracy of the Extended Drucker-Prager constitutive model implemented in GEOS.

Semi-analytical results for axial stress variations \Delta\sigma_{V} and lateral strain variations \Delta\varepsilon_{V} can be established for the imposed triaxial boundary conditions:

\Delta\sigma_{V} = \Delta\varepsilon_{V} E_{ep}

\Delta\varepsilon_{H} = \Delta\varepsilon_{V} - \frac{\Delta\sigma_{V}}{E^\prime_{ep}}

where E_{ep} and E^\prime_{ep} are elasto-plastic Young moduli that can be obtained from the elastic Young and shear moduli (E and \mu), the frictional parameter b and the dilation ratio \theta of the Extended Drucker-Prager model by:

\frac{1}{E_{ep}} = \frac{1}{E} + \frac{(\theta b-3)(b-3)}{9h}

\frac{1}{E^\prime_{ep}} = \frac{1}{2\mu} - \frac{b-3}{2h}

The hardening rate h is defined by

h = \frac{\partial F}{\partial b} \frac{\partial b}{\partial \lambda}

These solutions are applied only when the plastic yield condition is satisfied. The cohesion parameter defining the plastic yield surface is updated with stress changes as:

\Delta \lambda = \frac{b-3}{3h}\Delta\sigma_{V}

These solutions were established for a positive shear stress q = -(\sigma_{V} - \sigma_{H}) (negative sign convention for compressional stress). For the case when the plastic yield occurs at a negative shear stress, we have:

\frac{1}{E_{ep}} = \frac{1}{E} + \frac{(\theta b+3)(b+3)}{9h}

\frac{1}{E^\prime_{ep}} = \frac{1}{2\mu} + \frac{b+3}{2h}

and

\Delta \lambda = \frac{b+3}{3h}\Delta\sigma_{V}

These solutions are implemented in a Python script associated to this example for verifying GEOS results.

Input files

This validation example uses two GEOS xml files that are located at:

inputFiles/triaxialDriver/triaxialDriver_base.xml

and

inputFiles/triaxialDriver/triaxialDriver_ExtendedDruckerPrager.xml

It also uses a set of table files located at:

inputFiles/triaxialDriver/tables/

A Python script for the semi-analytical solutions presented above as well as for post-processing the GEOS results is provided at:

src/docs/sphinx/advancedExamples/validationStudies/viscoplasticity/ExtendedDruckerPrager/TriaxialDriver_vs_SemiAnalytic_ExtendedDruckerPrager.py

For this example, we focus on the Task and the Constitutive tags.

Task

The imposed axial strain loading/unloading periods, the constant lateral confining stress, and the initial stress are defined in the Task block as:

  <Tasks>
    <TriaxialDriver
      name="triaxialDriver"
      material="ExtendedDruckerPrager"
      mode="mixedControl" 
      axialControl="strainFunction"
      radialControl="stressFunction"
      initialStress="-10.e6"
      steps="200" 
      output="ExtendedDruckerPragerResults.txt" />
  </Tasks>

Constitutive laws

The elasto-plastic parameters are defined as:

    <ExtendedDruckerPrager 
      name="ExtendedDruckerPrager"
      defaultDensity="2700"
      defaultBulkModulus="10.0e9"
      defaultShearModulus="6.0e9"
      defaultCohesion="0.1e6"
      defaultInitialFrictionAngle="6.0"
      defaultResidualFrictionAngle="10.0"
      defaultDilationRatio="0.5"
      defaultHardening="0.0001"
    />  

All constitutive parameters such as density, viscosity, and bulk and shear moduli are specified in the International System of Units.

A comparison between GEOS results and semi-analytical results

The simulation results are saved in a text file, named ExtendedDruckerPragerResults.txt. A perfect comparison between the results given by the TriaxialDriver solver in GEOS and the semi-analytical results presented above is shown below

(Source code)

../../../../../../_images/TriaxialDriver_vs_SemiAnalytic_ExtendedDruckerPrager.png

To go further

Feedback on this example

For any feedback on this example, please submit a GitHub issue on the project’s GitHub page.