o3seespy.integrator

class o3seespy.command.integrator.ArcLength(osi, s, alpha)[source]

Bases: IntegratorBase

The ArcLength Integrator Class

Create a ArcLength integrator. In an analysis step with ArcLength we seek to determine the time step that will result in our constraint equation being satisfied.

Initial method for ArcLength

Parameters
  • osi (o3seespy.OpenSeesInstance) –

  • s (float) – The arclength.

  • alpha (float) – \alpha a scaling factor on the reference loads.

Examples

>>> import o3seespy as o3
>>> osi = o3.OpenSeesInstance(ndm=2)
>>> o3.integrator.ArcLength(osi, s=1.0, alpha=1.0)
op_type = 'ArcLength'
class o3seespy.command.integrator.CentralDifference(osi)[source]

Bases: IntegratorBase

The CentralDifference Integrator Class

Create a centralDifference integrator.#. The calculation of U_t + \Delta t, is based on using the equilibrium equation at time t. For this reason the method is called an explicit integration method.#. If there is no rayleigh damping and the C matrix is 0, for a diagonal mass matrix a diagonal solver may and should be used.#. For stability, \frac{\Delta t}{T_n} < \frac{1}{\pi}

Initial method for CentralDifference

Parameters

osi (o3seespy.OpenSeesInstance) –

Examples

>>> import o3seespy as o3
>>> osi = o3.OpenSeesInstance(ndm=2)
>>> o3.integrator.CentralDifference(osi)
op_type = 'CentralDifference'
class o3seespy.command.integrator.DisplacementControl(osi, node, dof, incr, num_iter=1, d_umin: Optional[float] = None, d_umax: Optional[float] = None)[source]

Bases: IntegratorBase

The DisplacementControl Integrator Class

Create a DisplacementControl integrator. In an analysis step with Displacement Control we seek to determine the time step that will result in a displacement increment for a particular degree-of-freedom at a node to be a prescribed value.

Initial method for DisplacementControl

Parameters
  • osi (o3seespy.OpenSeesInstance) –

  • node (obj) – Object of node whose response controls solution

  • dof (int) – Degree of freedom at the node, 1 through ndf.

  • incr (float) – First displacement increment \delta u_{dof}.

  • num_iter (int, optional) – Number of iterations the user would like to occur in the solution algorithm.

  • d_umin (None (default=True), optional) –

  • d_umax (None (default=True), optional) –

Examples

>>> import o3seespy as o3
>>> osi = o3.OpenSeesInstance(ndm=2)
>>> node = o3.node.Node(osi, 0.0, 0.0)
>>> o3.integrator.DisplacementControl(osi, node, dof=1, incr=1.0, num_iter=1, d_umin=None, d_umax=None)
op_type = 'DisplacementControl'
class o3seespy.command.integrator.ExplicitDifference(osi)[source]

Bases: IntegratorBase

The ExplicitDifference Integrator Class

When using Rayleigh damping, the damping ratio of high vibration modes is overrated, and the critical time step size will be much smaller. Hence Modal damping is more suitable for this method.

There should be no zero element on the diagonal of the mass matrix when using this method.

Diagonal solver should be used when lumped mass matrix is used because the equations are uncoupled.#. For stability, \Delta t \leq \left(\sqrt{\zeta^2+1}-\zeta\right)\frac{2}{\omega}

So called leap-frog method see (t=26mins) https://www.youtube.com/watch?v=RAMidc6HcvE

Initial method for ExplicitDifference

Parameters

osi (o3seespy.OpenSeesInstance) –

Examples

>>> import o3seespy as o3
>>> osi = o3.OpenSeesInstance(ndm=2)
>>> o3.integrator.ExplicitDifference(osi)
op_type = 'ExplicitDifference'
class o3seespy.command.integrator.GeneralizedAlpha(osi, alpha_m, alpha_f, gamma: Optional[float] = None, beta: Optional[float] = None)[source]

Bases: IntegratorBase

The GeneralizedAlpha Integrator Class

Create a GeneralizedAlpha integrator. This is an implicit method that like the HHT method allows for high frequency energy dissipation and second order accuracy, i.e. \Delta t^2. Depending on choices of input parameters, the method can be unconditionally stable.

Initial method for GeneralizedAlpha

Parameters
  • osi (o3seespy.OpenSeesInstance) –

  • alpha_m (float) – \alpha_m factor.

  • alpha_f (float) – \alpha_f factor.

  • gamma (float (default=True), optional) – \gamma factor.

  • beta (float (default=True), optional) – \beta factor.

Examples

>>> import o3seespy as o3
>>> osi = o3.OpenSeesInstance(ndm=2)
>>> o3.integrator.GeneralizedAlpha(osi, alpha_m=1.0, alpha_f=1.0, gamma=1.0, beta=1.0)
op_type = 'GeneralizedAlpha'
class o3seespy.command.integrator.GimmeMCK(osi, m=0.0, c=0.0, k=0.0)[source]

Bases: IntegratorBase

Integrator to obtain M, C and K matrices

op_type = 'GimmeMCK'
class o3seespy.command.integrator.HHT(osi, alpha, gamma: Optional[float] = None, beta: Optional[float] = None)[source]

Bases: IntegratorBase

The HHT Integrator Class

Create a Hilber-Hughes-Taylor (HHT) integrator. This is an implicit method that allows for energy dissipation and second order accuracy (which is not possible with the regular Newmark object). Depending on choices of input parameters, the method can be unconditionally stable.

Initial method for HHT

Parameters
  • osi (o3seespy.OpenSeesInstance) –

  • alpha (float) – \alpha factor.

  • gamma (float (default=True), optional) – \gamma factor.

  • beta (float (default=True), optional) – \beta factor.

Examples

>>> import o3seespy as o3
>>> osi = o3.OpenSeesInstance(ndm=2)
>>> o3.integrator.HHT(osi, alpha=1.0, gamma=1.0, beta=1.0)
op_type = 'HHT'
class o3seespy.command.integrator.HHTExplicit(osi, alpha, gamma: Optional[float] = None, beta: Optional[float] = None)[source]

Bases: IntegratorBase

The HHT Integrator Class

Create a Hilber-Hughes-Taylor (HHT) integrator. This is an explicit method that allows for energy dissipation and second order accuracy (which is not possible with the regular Newmark object).

Initial method for HHTExplicit

Parameters
  • osi (o3seespy.OpenSeesInstance) –

  • alpha (float) – \alpha factor.

  • gamma (float (default=True), optional) – \gamma factor.

  • beta (float (default=True), optional) – \beta factor.

Examples

>>> import o3seespy as o3
>>> osi = o3.OpenSeesInstance(ndm=2)
>>> o3.integrator.HHTExplicit(osi, alpha=1.0, gamma=1.0)
op_type = 'HHTExplicit'
class o3seespy.command.integrator.IntegratorBase[source]

Bases: OpenSeesObject

op_base_type = 'integrator'
class o3seespy.command.integrator.LoadControl(osi, incr, num_iter=1, min_incr: Optional[float] = None, max_incr: Optional[float] = None)[source]

Bases: IntegratorBase

The LoadControl Integrator Class

Create a OpenSees LoadControl integrator object.

Initial method for LoadControl

Parameters
  • osi (o3seespy.OpenSeesInstance) –

  • incr (float) – Load factor increment \lambda.

  • num_iter (int, optional) – Number of iterations the user would like to occur in the solution algorithm.

  • min_incr (float (default=True), optional) – Min stepsize the user will allow \lambda_{min}.

  • max_incr (float (default=True), optional) – Max stepsize the user will allow \lambda_{max}.

Examples

>>> import o3seespy as o3
>>> osi = o3.OpenSeesInstance(ndm=2)
>>> o3.integrator.LoadControl(osi, incr=1.0, num_iter=1, min_incr=None, max_incr=None)
op_type = 'LoadControl'
class o3seespy.command.integrator.MinUnbalDispNorm(osi, dlambda1, jd=1, min_lambda: Optional[float] = None, max_lambda: Optional[float] = None, det: Optional[float] = None)[source]

Bases: IntegratorBase

The MinUnbalDispNorm Integrator Class

Create a MinUnbalDispNorm integrator.

Initial method for MinUnbalDispNorm

Parameters
  • osi (o3seespy.OpenSeesInstance) –

  • dlambda1 (float) – First load increment (pseudo-time step) at the first iteration in the next invocation of the analysis command.

  • jd (int, optional) – Factor relating first load increment at subsequent time steps.

  • min_lambda (float (default=True), optional) – Min load increment.

  • max_lambda (float (default=True), optional) – Max load increment.

  • det (None (default=True), optional) –

Examples

>>> import o3seespy as o3
>>> osi = o3.OpenSeesInstance(ndm=2)
>>> o3.integrator.MinUnbalDispNorm(osi, dlambda1=1.0, jd=1, min_lambda=None, max_lambda=None, det=None)
op_type = 'MinUnbalDispNorm'
class o3seespy.command.integrator.Newmark(osi, gamma, beta, form: Optional[str] = None)[source]

Bases: IntegratorBase

The Newmark Integrator Class

Create a Newmark integrator.

Initial method for Newmark

Parameters
  • osi (o3seespy.OpenSeesInstance) –

  • gamma (float) – \gamma factor.

  • beta (float) – \beta factor.

  • form (str, optional) – Flag to indicate which variable to be used as primary variable * 'd' – displacement (default) * 'v' – velocity * 'a' – acceleration

Examples

>>> import o3seespy as o3
>>> osi = o3.OpenSeesInstance(ndm=2)
>>> o3.integrator.Newmark(osi, gamma=1.0, beta=1.0, form=1)
op_type = 'Newmark'
class o3seespy.command.integrator.NewmarkExplicit(osi, gamma)[source]

Bases: IntegratorBase

NewmarkExplicit - available since 2012 but does not support modal damping.

Initial method for NewmarkExplicit

Parameters
  • osi (o3seespy.OpenSeesInstance) –

  • gamma (float) – Integration factor, typically 0.5

op_type = 'NewmarkExplicit'
class o3seespy.command.integrator.ParallelDisplacementControl(osi, node, dof, incr, num_iter=1, d_umin: Optional[float] = None, d_umax: Optional[float] = None)[source]

Bases: IntegratorBase

The ParallelDisplacementControl Integrator Class

Create a Parallel version of DisplacementControl integrator. In an analysis step with Displacement Control we seek to determine the time step that will result in a displacement increment for a particular degree-of-freedom at a node to be a prescribed value.

Initial method for ParallelDisplacementControl

Parameters
  • osi (o3seespy.OpenSeesInstance) –

  • node (obj) – Object of node whose response controls solution

  • dof (int) – Degree of freedom at the node, 1 through ndf.

  • incr (float) – First displacement increment \delta u_{dof}.

  • num_iter (int, optional) – Number of iterations the user would like to occur in the solution algorithm.

  • d_umin (None (default=True), optional) –

  • d_umax (None (default=True), optional) –

Examples

>>> import o3seespy as o3
>>> osi = o3.OpenSeesInstance(ndm=2)
>>> node = o3.node.Node(osi, 0.0, 0.0)
>>> o3.integrator.ParallelDisplacementControl(osi, node, dof=1, incr=1.0, num_iter=1, d_umin=None, d_umax=None)
op_type = 'ParallelDisplacementControl'
class o3seespy.command.integrator.TRBDF2(osi)[source]

Bases: IntegratorBase

The TRBDF2 Integrator Class

Create a TRBDF2 integrator. The TRBDF2 integrator is a composite scheme that alternates between the Trapezoidal scheme and a 3 point backward Euler scheme. It does this in an attempt to conserve energy and momentum, something Newmark does not always do.As opposed to dividing the time-step in 2 as outlined in the `Bathe2007`_, we just switch alternate between the 2 integration strategies,i.e. the time step in our implementation is double that described in the `Bathe2007`_.

Initial method for TRBDF2

Parameters

osi (o3seespy.OpenSeesInstance) –

Examples

>>> import o3seespy as o3
>>> osi = o3.OpenSeesInstance(ndm=2)
>>> o3.integrator.TRBDF2(osi)
op_type = 'TRBDF2'