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
Computes the matrix of second derivatives using forward finite difference, using the evaluation of the gradient already done for FORM, at the design point
For use in computing the Hessian without altering the FORM object.
Creates an orthonormal matrix using the modified Gram-Schmidt process.
Derived classes call this at top of their run()
Computes the rotation matrix of the standard normal coordinate space where the design point is located at Beta along the last axis.
Calculates the probability of failure and generalized reliability index using [Breitung1984] formula.
Calculates the probability of failure and generalized reliability index using Brietung's formula ([Breitung1984]) as modified by Hohenbichler and Rackwitz [Hohenbichler1988].
Run SORM analysis using either:
Run SORM analysis using curve fitting
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’
- 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.
- 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()