Introduction to OpenSees
Context for Simulation in Earthquake Engineering
- Research and practice is moving towards Performance-Based Seismic Engineering, which depends on high-fidelity models and simulation to assess performance.
- Simulation models capture knowledge from tests to leverage investment in limited experimentation.
- Community-based, open-source software for simulation promotes innovation in research and advanced applications for practice.
- NEES infrastructure is supporting OpenSees to provide simulation capability and integration with NEESit services for NEES research.
What is OpenSees?
- A software framework for simulation applications in earthquake engineering using finite element methods. OpenSees is not a code.
- A communication mechanism for exchanging and building upon research accomplishments.
- As open-source software, it has the potential for a community code for earthquake engineering.
Simulation Framework
- Computation
- Algorithms
- Solvers
- Parallel/distributed computing
- Information Technology
- Software framework
- Databases
- Visualization
- Internet/grid computation
- Models
- Simulation models
- Performance models
- Limit state models
- Material
- component
- system models
OpenSees Approach to Simulation
- Basic approach
- Modular software design for implementing and integrating modeling, numerical methods, and IT for scalable, robust simulation
- Focus on capabilities needed for performance-based engineering
- Programmable interfaces
- Most users
- a “code” for nonlinear analysis
- Fully scriptable.
- Generally
- a software framework for developing simulation applications
Remember OpenSees is a Software Framework
- A framework is NOT an executable.
- A framework IS a set of cooperating software components for building applications in a specific domain.
- The OpenSees framework is written primarily in the objectoriented language C++; though other languages namely C and Fortran are also used.
- The abstract classes in the OpenSees framework define the interface. The concrete subclasses that exist the implementations. Other classes can be provided to extend the capabilities of the framework
- Most users, however, will use OpenSees.exe which is, indeed, an executable.
Basics of Object-Oriented Programming
- In object-oriented programming, the program is seen as a collection of objects. Each object is capable of receiving messages, processing data, and sending messages to other objects.
- Each object is of a particular type or Class. The class defines the data and methods of an object.
- 3 basic relationships between classes
- IS-A (Truss is an Element)
- KNOWS-A (Truss knows a Node)
- HAS-A (Truss has a Material)
Main Abstractions in OpenSees Framework
- ModelBuilder
- Constructs the objects in the model and adds them to the domain.
- Domain (Central component)
- Holds the state of the model at time t and (t + dt)
- Analysis
- Moves the model from state at time t to state at time (t + dt)
- Recorder
- Monitors user defined parameters in the model during the analysis
What is in a Domain
- Element
- Node
- MPConstraint
- SPConstraint
- LoadPattern
- ElementalLoad
- NodalLoad
- SPConstraint
- TimeSeries
Other Classes Associated with Elements
- Material
- Uniaxial
- nD
- Section
- GeomTransformation
- Linear,Pdelta or Corotational
- Convert element force and deforamtion quantities from the global coordinate system to the element basic system (local coordinates)
How People Use OpenSees
- Provide their own main() function in C++ and link to framework.
- Use OpenSees interpreterS. These are extensions of the Tcl interpreter for finite element analysis which are built using the OpenSees framework.
- OpenSees.exe (Sequential-computing version)
- OpseseesSP.exe (Parallel-computing version)
- OpenSeesMP.exe (Parallel-computing version)
What is Tcl
Tcl is a programming language.
- It is a string based command language.
- Variables and variable substitution
- Expression evaluation
- Basic control structures (if , while, for, foreach)
- Procedures
- File manipulation
- Sourcing other files.
- Comand syntax:
command arg1 arg2 …
- Help
- dev.scriptics.com/scripting/primer.html
- Practical Programming in Tcl and Tk, Brent B. Welch.