SORM

class SORM(*args)

Second Order Reliability Method (SORM).

Refer to SORM.

Available constructors:

SORM(nearestPointAlgorithm, event, physicalStartingPoint)

Parameters
nearestPointAlgorithmOptimizationAlgorithm

Optimization algorithm used to research the design point.

eventRandomVector

Failure event.

physicalStartingPointsequence of float

Starting point of the optimization algorithm, declared in the physical space.

Notes

See Analytical for the description of the first steps of the SORM analysis.

The Second Order Reliability Method (SORM) consists in approximating the limit state surface in U-space at the design point P^* by a quadratic surface. SORM is usually more accurate than FORM e.g. in case when the event boundary is highly curved.

Let us denote by n the dimension of the random vector \vect{X} and (\kappa_i)_{1 \leq i \leq n-1} the n-1 main curvatures of the limit state function at the design point in the standard space.

Several approximations of the failure probability P_f are available in the library, and detailed here in the case where the origin of the standard space does not belong to the failure domain:

  • Breitung’s formula:

    P_{Breitung} = E(-\beta_{HL})\prod_{i=1}^{n-1} \frac{1}{\sqrt{1 + \beta_{HL}\kappa_i}}

    E the marginal cumulative density function of the spherical distributions in the standard space and \beta_{HL} is the Hasofer-Lind reliability index, defined as the distance of the design point \vect{u}^* to the origin of the standard space.

  • Hohen Bichler’s formula is an approximation of the previous equation:

    \displaystyle P_{Hohenbichler} = \Phi(-\beta_{HL})
 \prod_{i=1}^{n-1} \left(
                   1 + \frac{\phi(\beta_{HL})}{\Phi(-\beta_{HL})}\kappa_i
                   \right) ^{-1/2}

    where \Phi is the cumulative distribution function of the standard 1D normal distribution and \phi is the standard Gaussian probability density function.

  • Tvedt’s formula:

    \left\{
  \begin{array}{lcl}
    \displaystyle P_{Tvedt} & = & A_1 + A_2 + A_3 \\
    \displaystyle A_1 & = & \displaystyle
      \Phi(-\beta_{HL}) \prod_{i=1}^{N-1} \left( 1 + \beta_{HL} \kappa_i \right) ^{-1/2}\\
    \displaystyle A_2 & = & \displaystyle
      \left[ \beta_{HL} \Phi(-\beta_{HL}) - \phi(\beta_{HL}) \right]
      \left[ \prod_{j=1}^{N-1} \left( 1 + \beta_{HL} \kappa_i \right) ^{-1/2} -
             \prod_{j=1}^{N-1} \left( 1 + (1 + \beta_{HL}) \kappa_i \right) ^{-1/2}
      \right ] \\
    \displaystyle A_3 & = & \displaystyle (1 + \beta_{HL})
      \left[ \beta_{HL} \Phi(-\beta_{HL}) - \phi(\beta_{HL}) \right]
      \left[ \prod_{j=1}^{N-1} \left( 1 + \beta_{HL} \kappa_i \right) ^{-1/2} -
             {\cR}e \left( \prod_{j=1}^{N-1} \left( 1 + (i + \beta_{HL}) \kappa_j \right) ^{-1/2}
      \right)\right ]
  \end{array}
\right.

    where {\cR}e(z) is the real part of the complex number z and i the complex number such that i^2 = -1.

The evaluation of the failure probability is stored in the data structure SORMResult recoverable with the getResult() method.

Examples

>>> import openturns as ot
>>> myFunction = ot.SymbolicFunction(['E', 'F', 'L', 'I'], ['-F*L^3/(3*E*I)'])
>>> myDistribution = ot.Normal([50.0, 1.0, 10.0, 5.0], [1.0]*4, ot.IdentityMatrix(4))
>>> vect = ot.RandomVector(myDistribution)
>>> output = ot.CompositeRandomVector(myFunction, vect)
>>> event = ot.ThresholdEvent(output, ot.Less(), -3.0)
>>> # We create an OptimizationAlgorithm algorithm
>>> solver = ot.AbdoRackwitz()
>>> algo = ot.SORM(solver, event, [50.0, 1.0, 10.0, 5.0])
>>> algo.run()
>>> result = algo.getResult()

Methods

getAnalyticalResult(self)

Accessor to the result.

getClassName(self)

Accessor to the object’s name.

getEvent(self)

Accessor to the event of which the probability is calculated.

getId(self)

Accessor to the object’s id.

getName(self)

Accessor to the object’s name.

getNearestPointAlgorithm(self)

Accessor to the optimization algorithm used to find the design point.

getPhysicalStartingPoint(self)

Accessor to the starting point of the optimization algorithm.

getResult(self)

Accessor to the result of SORM.

getShadowedId(self)

Accessor to the object’s shadowed id.

getVisibility(self)

Accessor to the object’s visibility state.

hasName(self)

Test if the object is named.

hasVisibleName(self)

Test if the object has a distinguishable name.

run(self)

Evaluate the failure probability.

setEvent(self, event)

Accessor to the event of which the probability is calculated.

setName(self, name)

Accessor to the object’s name.

setNearestPointAlgorithm(self, solver)

Accessor to the optimization algorithm used to find the design point.

setPhysicalStartingPoint(self, …)

Accessor to the starting point of the optimization algorithm.

setResult(self, sormResult)

Accessor to the result of SORM.

setShadowedId(self, id)

Accessor to the object’s shadowed id.

setVisibility(self, visible)

Accessor to the object’s visibility state.

__init__(self, \*args)

Initialize self. See help(type(self)) for accurate signature.

getAnalyticalResult(self)

Accessor to the result.

Returns
resultAnalyticalResult

Result structure which contains the results of the optimisation problem.

getClassName(self)

Accessor to the object’s name.

Returns
class_namestr

The object class name (object.__class__.__name__).

getEvent(self)

Accessor to the event of which the probability is calculated.

Returns
eventRandomVector

Event of which the probability is calculated.

getId(self)

Accessor to the object’s id.

Returns
idint

Internal unique identifier.

getName(self)

Accessor to the object’s name.

Returns
namestr

The name of the object.

getNearestPointAlgorithm(self)

Accessor to the optimization algorithm used to find the design point.

Returns
algorithmOptimizationAlgorithm

Optimization algorithm used to research the design point.

getPhysicalStartingPoint(self)

Accessor to the starting point of the optimization algorithm.

Returns
pointPoint

Starting point of the optimization algorithm, declared in the physical space.

getResult(self)

Accessor to the result of SORM.

Returns
resultSORMResult

Structure containing all the results of the SORM analysis.

getShadowedId(self)

Accessor to the object’s shadowed id.

Returns
idint

Internal unique identifier.

getVisibility(self)

Accessor to the object’s visibility state.

Returns
visiblebool

Visibility flag.

hasName(self)

Test if the object is named.

Returns
hasNamebool

True if the name is not empty.

hasVisibleName(self)

Test if the object has a distinguishable name.

Returns
hasVisibleNamebool

True if the name is not empty and not the default one.

run(self)

Evaluate the failure probability.

Notes

Evaluate the failure probability and create a SORMResult, the structure result which is accessible with the method getResult().

setEvent(self, event)

Accessor to the event of which the probability is calculated.

Parameters
eventRandomVector

Event of which the probability is calculated.

setName(self, name)

Accessor to the object’s name.

Parameters
namestr

The name of the object.

setNearestPointAlgorithm(self, solver)

Accessor to the optimization algorithm used to find the design point.

Parameters
algorithmOptimizationAlgorithm

Optimization algorithm used to research the design point.

setPhysicalStartingPoint(self, physicalStartingPoint)

Accessor to the starting point of the optimization algorithm.

Parameters
pointsequence of float

Starting point of the optimization algorithm, declared in the physical space.

setResult(self, sormResult)

Accessor to the result of SORM.

Parameters
resultSORMResult

Structure containing all the results of the SORM analysis.

setShadowedId(self, id)

Accessor to the object’s shadowed id.

Parameters
idint

Internal unique identifier.

setVisibility(self, visible)

Accessor to the object’s visibility state.

Parameters
visiblebool

Visibility flag.