pystra.sorm.Sorm#

class Sorm(stochastic_model=None, limit_state=None, analysis_options=None, form=None)[source]#

Bases: AnalysisObject

Second Order Reliability Method (SORM)

Unlike FORM, this method approximates the failure surface in standard normal space using a quadratic surface. The basic approximation is given by [Breitung1984]:

\[\begin{split}p_f \\approx p_{f2} = \Phi(-\\beta) \\Pi_{i=1}^{n-1}\\[ 1 + \\kappa_i \\beta \\]^{-0.5}\end{split}\]

The corresponding generalized reliability index \(\\beta_G \\= -\\Phi^{-1}\\( 1-p_{f2}\\)\) is reported. The Breitung approximation is asymptotic and accurate for higher values of \beta. Also reported is the Hohenbichler and Rackwitz modification to Brietung’s formula, which is more accurate for lower values of \beta.

Attributes:
  • stochastic_model (StochasticModel): Information about the model

  • limit_state (LimitState): Information about the limit state

  • analysis_option (AnalysisOption): Option for the structural analysis

  • form (Form): Form object, if a FORM analysis has already been completed

Class constructor

Methods

computeHessian

Computes the matrix of second derivatives using forward finite difference, using the evaluation of the gradient already done for FORM, at the design point

evaluateLSF

For use in computing the Hessian without altering the FORM object.

gram_schmidt

Creates an orthonormal matrix using the modified Gram-Schmidt process.

init_run

Derived classes call this at top of their run()

orthonormal_matrix

Computes the rotation matrix of the standard normal coordinate space where the design point is located at Beta along the last axis.

pf_breitung

Calculates the probability of failure and generalized reliability index using [Breitung1984] formula.

pf_breitung_m

Calculates the probability of failure and generalized reliability index using Brietung's formula ([Breitung1984]) as modified by Hohenbichler and Rackwitz [Hohenbichler1988].

run

Run SORM analysis using either:

run_curvefit

Run SORM analysis using curve fitting

showDetailedOutput

Get detailed output to console

showResults

run(fit_type='cf')[source]#
Run SORM analysis using either:

Curve-fitting: fit_type == ‘cf’ Point-fitting: fit_type == ‘pf’

run_curvefit()[source]#

Run SORM analysis using curve fitting

pf_breitung(beta, kappa)[source]#

Calculates the probability of failure and generalized reliability index using [Breitung1984] formula. This formula is good for higher values of beta.

pf_breitung_m(beta, kappa)[source]#

Calculates the probability of failure and generalized reliability index using Brietung’s formula ([Breitung1984]) as modified by Hohenbichler and Rackwitz [Hohenbichler1988]. This formula is better for lower values of beta.

showDetailedOutput()[source]#

Get detailed output to console

computeHessian(diff_type=None)[source]#

Computes the matrix of second derivatives using forward finite difference, using the evaluation of the gradient already done for FORM, at the design point

Could use numdifftools as external library instead

evaluateLSF(x, calc_gradient=False, u_space=True)[source]#

For use in computing the Hessian without altering the FORM object. Considers the coord transform so the limit state function is evaluated in physical coordinates, but gradient returned in u-space.

This code already in FORM, and a more integrated approach would put this in a base class for common use.

orthonormal_matrix()[source]#

Computes the rotation matrix of the standard normal coordinate space where the design point is located at Beta along the last axis.

gram_schmidt(A)[source]#

Creates an orthonormal matrix using the modified Gram-Schmidt process. Note that QR decomposition doesn’t work for this application; while it does return an orthonormal matrix, the signs are different to the modified Gram Schmidt. The signs should be arbitrary, but the resulting rotation matrix does care cabout the signs of the Q, since it is based on the correct direction of the beta vector [Madsen1986]

init_run()#

Derived classes call this at top of their run()