limit_analysis.materials#

Strength criteria#

class fenics_optim.limit_analysis.materials.strength_criterion.Rigid#

A rigid material.

class fenics_optim.limit_analysis.materials.strength_criterion.StrengthCriterion#

A generic object for limit analysis strength criteria.

A StrengthCriterion object provides three different ConvexFunction instances, namely:

  • criterion: the strength criterion constraint \(\boldsymbol{\sigma} \in G\)

  • support_function: the corresponding support function \(\pi(\boldsymbol{d}) = \displaystyle{\sup_{\boldsymbol{\sigma}\in G} \{\boldsymbol{\sigma}:\boldsymbol{d}\}}\)

  • support_function_disc : the support function associated with discontinuities \(\Pi(\boldsymbol{V}:\boldsymbol{n}) = \pi(\boldsymbol{V}\overset{s}{\otimes} \boldsymbol{n})\)

initialize()#

Must be called before ending __init__.

name()#

Strength criterion name.

set_domain(i)#

Specify the corresponding domain id.

set_material_frame(theta=0)#

Define rotation matrix for material frame.

theta is the angle with respect to the x direction.

fenics_optim.limit_analysis.materials.strength_criterion.deviator(dim)#

Matrix for deviator operator.

fenics_optim.limit_analysis.materials.strength_criterion.rotation_matrix(alpha=0, dim=3)#

Rotation matrix for angle \(\alpha\) with respect to horizontal axis.

fenics_optim.limit_analysis.materials.strength_criterion.to_Constant(p)#

Wrap as a Constant.

von Mises#

class fenics_optim.limit_analysis.materials.von_mises.vonMises(k)#

Bases: fenics_optim.limit_analysis.materials.strength_criterion.StrengthCriterion

2D/3D von Mises criterion.

gauge_function(Sig)#

Numerical evaluation of the gauge function.

\(g(\sigma) = \sqrt{\frac{1}{2}dev(\sigma):dev(\sigma)}/k\)

class fenics_optim.limit_analysis.materials.von_mises.vonMises_plane_stress(sig0)#

Bases: fenics_optim.limit_analysis.materials.strength_criterion.StrengthCriterion

Plane stress von Mises criterion.

class fenics_optim.limit_analysis.materials.von_mises.vonMises_shell(sig0, thick, nz, quadrature)#

Bases: fenics_optim.limit_analysis.materials.strength_criterion.StrengthCriterion

von Mises shell criterion.

Parameters
  • sig0 (float, Constant) – uniaxial yield strength

  • thick (float) – shell thickness

  • nz (int) – number of quadrature points in z direction

  • quadrature ({"gauss", "trapezoidal", "piecewise"}) – quadrature rule for z direction

z_quadrature()#

Generate quadrature in z direction.

Drucker-Prager#

class fenics_optim.limit_analysis.materials.drucker_prager.DruckerPrager(h, phi)#

Bases: fenics_optim.limit_analysis.materials.strength_criterion.StrengthCriterion

Drucker-Prager criterion in 2D or 3D.

\(||dev(\sigma)||_2 + \alpha tr(\sigma) \leq \alpha h\)

where \(\alpha = \dfrac{{\sqrt{{6}}\sin(\phi)}} {{\sqrt{{3+\sin^2(\phi)}}}}\)

Parameters
  • h (float, Constant) – isotropic tension limit

  • phi (float, Constant) – internal friction angle

gauge_function(Sig)#

Numerical evaluation of the gauge function.

\(g(\sigma) = (||dev(\sigma)||_2 + \alpha tr(\sigma))/(\alpha h)\)

Gurson#

class fenics_optim.limit_analysis.materials.gurson.Gurson(sig0, f)#

Bases: fenics_optim.limit_analysis.materials.strength_criterion.StrengthCriterion

Gurson criterion in 2D or 3D.

Parameters
  • sig0 (float) – Uniaxial yield strength.

  • f (float) – Porosity.

gauge_function(Sig)#

Numerical evaluation of the gauge function.

\(g(\sigma) = \right(\frac{3}{2}dev(\sigma):dev(\sigma)}/ \sigma_0\left)^2 + 2 f \cosh(\sigma_m/\sigma_0) \leq 1+f^2\)

Hosford#

class fenics_optim.limit_analysis.materials.hosford.Hosford_plane_stress(sig0, n)#

Bases: fenics_optim.limit_analysis.materials.strength_criterion.StrengthCriterion

Hosford strength criterion in 2D plane stress conditions.

\(|\sigma_I|^n+|\sigma_{{II}}|^n+|\sigma_{II}-\sigma_I|^n\leq\sigma_0\)

Parameters
  • sig0 (float, Constant) – tensile strength

  • n (float) – Hosford exponent

gauge_function(Sig)#

Numerical evaluation of the gauge function.

\((|\sigma_I|^n+|\sigma_{{II}}|^n+|\sigma_{II}-\sigma_I|^n)/\sigma_0\)

where \(\sigma_I,\sigma_{{II}}\) are the major and minor principal stresses respectively

Masonry#

class fenics_optim.limit_analysis.materials.masonry.deBuhan_deFelice(width, height, phi, c=0.0)#

Bases: fenics_optim.limit_analysis.materials.strength_criterion.StrengthCriterion

2D homogenized criterion of de Buhan and de Felice.

A homogenization approach to the ultimate strength of brick masonry, JMPS, 1997.

Blocks are rigid and arranged in a running bond pattern. Joints follow a Coulomb friction law.

Parameters
  • width (float) – block width

  • height (float) – block height

  • phi (float) – joint friction angle [rad]

  • c (float, optional) – joint cohesion, by default 0.

Mohr-Coulomb#

class fenics_optim.limit_analysis.materials.mohr_coulomb.MohrCoulomb2D(c, phi, ft=None)#

Bases: fenics_optim.limit_analysis.materials.strength_criterion.StrengthCriterion

Plane strain Mohr-Coulomb criterion.

Parameters
  • c (float) – cohesion

  • phi (float) – friction angle [rad]

  • ft (float, optional) – tension cut-off

gauge_function(Sig)#

Numerical evaluation of the gauge function.

\(g(\sigma) = ((\sigma_{xx}+\sigma_{yy})\sin\phi + \sqrt{(\sigma_{xx}-\sigma_{yy})^2 + 4\sigma_{xy}^2})/(2c\cos\phi)\)

In presence of a tension cut-off \(f_t\), the gauge function is given by:

\(g_{TC}(\sigma) = \max\{{ g(\sigma) ; \sigma_I/f_t \}}\)

class fenics_optim.limit_analysis.materials.mohr_coulomb.MohrCoulomb2D_plane_stress(fc, phi, ft=None)#

Bases: fenics_optim.limit_analysis.materials.strength_criterion.StrengthCriterion

Plane stress Mohr-Coulomb criterion.

Parameters
  • fc (float) – compressive strength

  • phi (float) – friction angle [rad]

  • ft (float, optional) – tension cut-off

gauge_function(Sig)#

Numerical evaluation of the gauge function.

\(g(\sigma) = ((\sigma_{xx}+\sigma_{yy})\sin\phi + \sqrt{(\sigma_{xx}-\sigma_{yy})^2 + 4\sigma_{xy}^2})/(2c\cos\phi)\)

In presence of a tension cut-off \(f_t\), the gauge function is given by:

\(g_{TC}(\sigma) = \max\{{ g(\sigma) ; \sigma_I/f_t \}}\)

class fenics_optim.limit_analysis.materials.mohr_coulomb.MohrCoulomb3D(c, phi, ft=None)#

Bases: fenics_optim.limit_analysis.materials.strength_criterion.StrengthCriterion

Tridimensional Mohr-Coulomb criterion.

Parameters
  • c (float) – cohesion

  • phi (float) – friction angle [rad]

  • ft (float, optional) – tension cut-off

gauge_function(Sig)#

Numerical evaluation of the gauge function.

\(g(\sigma) = ((1+\sin\phi)\sigma_I - (1-\sin\phi)\sigma_{III})/(2c\cos\phi)\)

where \(\sigma_I,\sigma_{III}\) are the major and minor principal stresses respectively.

In presence of a tension cut-off \(f_t\), the gauge function is given by:

\(g_{TC}(\sigma) = \max\{{ g(\sigma) ; \sigma_I/f_t \}}\)

class fenics_optim.limit_analysis.materials.mohr_coulomb.PlaneCoulomb2D(c, phi, alpha, dalpha=0.0)#

Bases: fenics_optim.limit_analysis.materials.strength_criterion.StrengthCriterion

Coulomb criterion on a plane of angle alpha.

Parameters
  • c (float) – cohesion

  • phi (float) – friction angle

  • alpha (float) – plane normal orientation angle with respect to the horizontal direction

  • dalpha (float, optional) – uncertainty on the plane orientation (robust version), by default 0

class fenics_optim.limit_analysis.materials.mohr_coulomb.RobustMohrCoulomb2D(c, phi, dc, dphi)#

Bases: fenics_optim.limit_analysis.materials.strength_criterion.StrengthCriterion

Uncertain version of the plane strain MohrCoulomb criterion.

Cohesion varies between \(c-\Delta c\) and \(c+\Delta c\). Friction angle varies between \(\phi-\Delta\phi\) and \(\phi+\Delta\phi\).

Parameters
  • c (float) – nominal cohesion

  • phi (float) – nominal friction angle

  • dc (float) – cohesion variability

  • dphi (float) – friction angle variability

Rankine#

class fenics_optim.limit_analysis.materials.rankine.L1Rankine2D(fc, ft)#

Bases: fenics_optim.limit_analysis.materials.strength_criterion.StrengthCriterion

L1-Rankine criterion in 2D.

Parameters
  • fc (float) – compressive strength

  • ft (float) – tensile strength

gauge_function(Sig)#

Numerical evaluation of the gauge function.

\(g(\sigma) =\max\{{ -\sigma_{III}/f_c ; \sigma_{III}/f_t \}} + \max\{{ -\sigma_{I}/f_c ; \sigma_{I}/f_t \}}\)

where \(\sigma_I,\sigma_{III}\) are the major and minor principal stresses respectively.

class fenics_optim.limit_analysis.materials.rankine.L1Rankine3D(fc, ft)#

Bases: fenics_optim.limit_analysis.materials.rankine.Rankine3D

Isotropic L1-Rankine criterion in 2D.

Parameters
  • fc (float) – compressive strength

  • ft (float) – tensile strength

gauge_function(Sig)#

Numerical evaluation of the gauge function.

\(g(\sigma) =\sum_J\max\{{ -\sigma_{J}/f_c ; \sigma_J/f_t \}}\)

where \(\sigma_J\) are the principal stresses.

class fenics_optim.limit_analysis.materials.rankine.OrthotropicL1Rankine2D(fcx, ftx, fcy, fty, ftau)#

Bases: fenics_optim.limit_analysis.materials.rankine.Rankine2D

Orthotropic L1-Rankine criterion in 2D.

Parameters
  • fcx (float) – compressive strength in \(x\) direction

  • fcy (float) – compressive strength in \(y\) direction

  • ftx (float) – tensile strength in \(x\) direction

  • fty (float) – tensile strength in \(x\) direction

  • ftau (float) – shear strength

class fenics_optim.limit_analysis.materials.rankine.OrthotropicRankine2D(fcx, fcy, ftx, fty)#

Bases: fenics_optim.limit_analysis.materials.strength_criterion.StrengthCriterion

Orthotropic Rankine criterion in 2D.

Parameters
  • fcx (float) – compressive strength in \(x\) direction

  • fcy (float) – compressive strength in \(y\) direction

  • ftx (float) – tensile strength in \(x\) direction

  • fty (float) – tensile strength in \(x\) direction

gauge_function(Sig)#

Numerical evaluation of the gauge function.

\(g(\sigma) =\max\{{ -\sigma_{III}/f_c ; \sigma_I/f_t \}}\)

where \(\sigma_I,\sigma_{III}\) are the major and minor principal stresses respectively.

class fenics_optim.limit_analysis.materials.rankine.Rankine2D(fc=1.0, ft=1.0)#

Bases: fenics_optim.limit_analysis.materials.rankine.OrthotropicRankine2D

Isotropic Rankine criterion in 2D.

Parameters
  • fc (float) – compressive strength

  • ft (float) – tensile strength

gauge_function(Sig)#

Numerical evaluation of the gauge function.

\(g(\sigma) =\max\{{ -\sigma_{III}/f_c ; \sigma_I/f_t \}}\)

where \(\sigma_I,\sigma_{III}\) are the major and minor principal stresses respectively

class fenics_optim.limit_analysis.materials.rankine.Rankine3D(fc, ft)#

Bases: fenics_optim.limit_analysis.materials.strength_criterion.StrengthCriterion

Isotropic Rankine criterion in 3D.

Parameters
  • fc (float) – compressive strength

  • ft (float) – tensile strength

gauge_function(Sig)#

Numerical evaluation of the gauge function.

\(g(\sigma) =\max\{{ -\sigma_{III}/f_c ; \sigma_I/f_t \}}\)

where \(\sigma_I,\sigma_{III}\) are the major and minor principal stresses respectively.

Tsai-Wu#

class fenics_optim.limit_analysis.materials.tsai_wu.TsaiWu(fc1, ft1, fc2, ft2, tau12, tau23, orient=0, dim=3)#

Bases: fenics_optim.limit_analysis.materials.strength_criterion.StrengthCriterion

Tsai-Wu anisotropic strength criterion.

The behaviour is transverse isotropic with axis given by direction 1.

Parameters
  • fc1 (float) – compressive strength along direction 1

  • ft1 (float) – tensile strength along direction 1

  • fc2 (float) – compressive strength along direction 2/3

  • ft2 (float) – tensile strength along direction 2/3

  • tau12 (float) – shear strength in 1/(2,3) plane

  • tau23 (float) – shear strength in 2/3 plane

  • orient (float, optional) – fiber orientation with respect to x axis, by default 0

  • dim (int, optional) – criterion dimension, by default 3