Skip to content

Analysis

Analysis

Analysis(name: str, analysis_type: str, constraint_handler: ConstraintHandler, numberer: Numberer, system: System, algorithm: Algorithm, test: Test, integrator: Integrator, num_steps: Optional[int] = None, final_time: Optional[float] = None, dt: Optional[float] = None, dt_min: Optional[float] = None, dt_max: Optional[float] = None, jd: Optional[int] = None, num_sublevels: Optional[int] = None, num_substeps: Optional[int] = None)

Bases: AnalysisComponent

Main class for managing an OpenSees structural analysis.

Analysis combines six modular components (constraint handler, DOF numberer, system solver, solution algorithm, convergence test, and integrator) to define how a static or transient dynamic finite element simulation is performed. It manages Static, Transient, or VariableTransient analysis loops.

Tcl form

analysis <Static|Transient|VariableTransient>

Example
from femora.core.model import Model
from femora.components.analysis.analysis import Analysis

model = Model()

# Create required analysis components first
handler = model.analysis.constraint.transformation()
numberer = model.analysis.numberer.rcm()
system = model.analysis.system.bandgeneral()
algorithm = model.analysis.algorithm.newton()
test = model.analysis.test.normunbalance(tol=1e-6, max_iter=100)
integrator = model.analysis.integrator.loadcontrol(incr=0.1)

# Construct and add the static analysis
analysis = model.analysis.add(
    Analysis(
        name="Pushover",
        analysis_type="Static",
        constraint_handler=handler,
        numberer=numberer,
        system=system,
        algorithm=algorithm,
        test=test,
        integrator=integrator,
        num_steps=10,
    )
)
print(analysis.tag)

Initializes the Analysis with all required components.

This method validates component compatibility and analysis parameters before creating the analysis object.

Parameters:

Name Type Description Default
name str

Name of the analysis for identification. Must be unique.

required
analysis_type str

Type of analysis. Must be one of "Static", "Transient", or "VariableTransient".

required
constraint_handler ConstraintHandler

The constraint handler for enforcing boundary conditions.

required
numberer Numberer

The DOF numberer for mapping equation numbers.

required
system System

The system solver for solving linear matrix equations.

required
algorithm Algorithm

The non-linear iterative solution algorithm.

required
test Test

The convergence test check.

required
integrator Integrator

The integrator. Must be compatible with analysis_type (StaticIntegrator for Static, TransientIntegrator for Transient/VariableTransient).

required
num_steps Optional[int]

Number of analysis steps. Required for Static, optional for others (mutually exclusive with final_time).

None
final_time Optional[float]

Final analysis time. Optional for Transient/VariableTransient (mutually exclusive with num_steps).

None
dt Optional[float]

Constant time step increment. Required for Transient unless both dt_min and dt_max are provided. Required for VariableTransient.

None
dt_min Optional[float]

Minimum/first time step. For Transient, providing both dt_min and dt_max creates a linear time-step ramp over num_steps. Required for VariableTransient.

None
dt_max Optional[float]

Maximum/last time step. For Transient, providing both dt_min and dt_max creates a linear time-step ramp over num_steps. Required for VariableTransient.

None
jd Optional[int]

Number of iterations desired at each step. Required for VariableTransient.

None
num_sublevels Optional[int]

Number of sublevels for transient analysis failure recovery.

None
num_substeps Optional[int]

Number of substeps to try at each sublevel.

None

Raises:

Type Description
ValueError

If integrator type is incompatible with analysis type, or if parameters are inconsistent, or if analysis_type is invalid.