o3seespy.integrator¶
- class o3seespy.command.integrator.ArcLength(osi, s, alpha)[source]¶
Bases:
IntegratorBaseThe 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) –
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:
IntegratorBaseThe CentralDifference Integrator Class
Create a centralDifference integrator.#. The calculation of
, 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, 
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:
IntegratorBaseThe 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
.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:
IntegratorBaseThe 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,

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:
IntegratorBaseThe 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.
. Depending on choices of input parameters, the
method can be unconditionally stable.Initial method for GeneralizedAlpha
- Parameters
osi (o3seespy.OpenSeesInstance) –
alpha_m (float) –
factor.alpha_f (float) –
factor.gamma (float (default=True), optional) –
factor.beta (float (default=True), optional) –
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:
IntegratorBaseIntegrator 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:
IntegratorBaseThe 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) –
factor.gamma (float (default=True), optional) –
factor.beta (float (default=True), optional) –
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:
IntegratorBaseThe 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) –
factor.gamma (float (default=True), optional) –
factor.beta (float (default=True), optional) –
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:
IntegratorBaseThe LoadControl Integrator Class
Create a OpenSees LoadControl integrator object.
Initial method for LoadControl
- Parameters
osi (o3seespy.OpenSeesInstance) –
incr (float) – Load factor increment
.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
.max_incr (float (default=True), optional) – Max stepsize the user will allow
.
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:
IntegratorBaseThe 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:
IntegratorBaseThe Newmark Integrator Class
Create a Newmark integrator.
Initial method for Newmark
- Parameters
osi (o3seespy.OpenSeesInstance) –
gamma (float) –
factor.beta (float) –
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:
IntegratorBaseNewmarkExplicit - 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:
IntegratorBaseThe 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
.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:
IntegratorBaseThe 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'¶