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. |