OpenSeesMatlab wraps the OpenSees engine in a native MATLAB interface for structural analysis and simulation. It provides integrated modeling, analysis, post-processing, and visualization tools for research and engineering applications in structural, earthquake, and geotechnical engineering.
https://openseesmatlab.readthedocs.io/en/latest/
OpenSeesMatlab leverages MATLAB's C++ mex interface to encapsulate the OpenSees engine, enabling seamless and interactive use of OpenSees directly within MATLAB. This allows users to:
- Run OpenSees commands and analyses natively in MATLAB scripts and functions
- Benefit from MATLAB's interactive environment for pre/post-processing and visualization
- Integrate OpenSees with MATLAB toolboxes and workflows
-
Go to the release directory or gitee 发行版 and choose the version you want. Download it.
-
Open this release directory in MATLAB, then install the toolbox package by running:
installOpenSeesMatlab
After installation, explore and run example models in the examples/ directory
(use it as the MATLAB working directory):
- Open any
.mfile inexamples/with MATLAB Live Editor, e.g.:examples/earthquake_NLSMRF.mexamples/earthquake_Two_Story_Steel_MRF.mexamples/earthquake_frame3D_transient.mexamples/structural_nonlinear_truss.mexamples/geotechnical_PM4Sand.mexamples/post_2d_Portal_Frame.m
- Click "Run" in MATLAB to execute and interact with the example.
The generated scripts and illustrated walkthroughs are also available in the online examples.
Using OpenSeesMatlab is straightforward:
- The
openseesmodule provides wrappers for almost all OpenSees commands, keeping the same parameter parsing style as OpenSees/OpenSeesPy. - Modules such as
vis,post, andpreextend functionality with visualization, post-processing, and preprocessing tools, which can be used as needed.
opsMat = OpenSeesMatlab(); % Get instance
ops = opsMat.opensees; % Access OpenSees command interface
ops.wipe();
ops.model('basic', '-ndm', 2, '-ndf', 3);
ops.node(1, 0.0, 0.0);
ops.node(2, 5.0, 0.0);
ops.fix(1, 1, 1, 1);
A = 2.e-3;
Iz = 1.6e-5;
E = 200.e9;
ops.element('elasticBeamColumn', 1, 1, 2, A, E, Iz, 1)
...
opsMat.post.getModelData(); % Collect model data
opsMat.vis.plotModel(); % Visualize the modelOptional extensions integrate MATLAB-native components and GPU acceleration with the standard OpenSees analysis workflow:
- Define linear or history-dependent uniaxial materials with MATLAB callbacks
- Couple MATLAB numerical substructures to an OpenSees domain
- Solve supported sparse systems with the NVIDIA cuDSS GPU backend
See the extension guides for setup instructions and runnable examples. CUDA and cuDSS are optional; CPU solvers remain available without them.
- 🧱
.opensees— MATLAB interface to OpenSees commands (fully compatible syntax), implemented via MATLAB MEX wrapping of the OpenSees C++ library - 📊
.post— post-processing module for extracting, organizing, and exporting analysis results - 🏗️
.pre— preprocessing tools for model definition, units, and data preparation - 🎨
.vis— visualization engine for models, responses, and mode shapes - 📈
.anlys— high-level analysis workflows and utilities - 🛠️
.utils— auxiliary helper functions and common utilities - 🧩 Extensions — MATLAB-defined materials and numerical substructures, plus an optional NVIDIA cuDSS solver
MATLAB R2023a or later
Windows operating system (currently only supported on Windows)
This project is licensed for academic research and personal use only. Commercial and closed-source use is prohibited. See the LICENSE file for details.

