Response spectra calculations for earthquake engineering
Project description
DVARS - Elastic Displacement, Velocity and Acceleration Response Spectra
Overview
In earthquake engineering response spectrum is used to analyze the dynamic reponse of structures to seismic events. The response spectrum shows the maximum values of displacement, velocity and/or acceleration as a function of frequency or period.
The calculation is based on the assumption that the structure behaves as a simple harmonic oscillator, damped by default to only 5% and its natural frequency is tuned to the tested frequency. The response spectrum can be determined by applying the same earthquake to a series of simple oscillators with different natural frequencies and a uniform damping of 5%. In the analog implementation of this test, the earthquake acts on a series of oscillators in parallel, while computer simulation is usually arranged serially - by repeatedly processing the time record of the earthquake on a sequentially retuned harmonic oscillator model. For each excitation of the recorded acceleration waveform, the maximum observed response in terms of relative displacement or absolute acceleration is recorded.
This repository provides a Python interface to a C implementation of response spectrum computation,
which is based on the widely used fortran code rdcalcdp
EXSIM12 repository,
EXSIM12,
published by David M. Boore in 2008 as part of the TSPP package.
This is a modified version of the algorithm Quake.For, originally written by J.M. Roesset in 1971.
The formulation is from Nigam and Jennings (BSSA, v. 59, 909-922, 1969).
Installation prerequisites
- Python 3.x
- Dependencies: ctypes, numpy, matplotlib
For building the C extension:
- C compiler (e.g., GCC)
- Cross-compilation tools Mingw64 if building for MS Windows
- Python build tools:
setuptools,wheel,build
Installation
The DVARS package is available on PyPI and can be installed using pip:
pip install dvars --upgrade
or you can install it directly from the wheel:
pip install dvars-0.1.2-cp311-cp311-linux_x86_64.whl --upgrade
Building the wheel package
Download the git repository
git clone https://github.com/ipemu/dvars.git
or download the source package from the releases page and unzip.
To build the package and the C extension, you can use the provided Makefile from the root directory of the package:
Native build (was tested on Linux only).
# linux native build
# creates both source and wheel distributions
make build
Linux cross-compilation creates a wheel distribution for Windows.
# buildw32 is for 32-bit Windows builds
make buildw32
# buildw64 is for 64-bit Windows builds
make buildw64
The resulting wheel files will be located in the dist directory.
Usage
# Import the dars function from the dvars module
from dvars import dars
# Use help for listing arguments
help(dars)
The dars function provides a calculation of the response spectrum.
The input is a time history of ground motion (accelerogram)
and the output is a tuple containing:
- A numpy array of frequencies (in Hz)
- A numpy array of relative displacements
- A numpy array of absolute accelerations
Simply as the output of the dars function we get DSR - Displacement Response Spectra. Other modifications used in practice are:
- PSA (PARS) - Pseudo Acceleration Response Spectra,
- PSV (PVRS) - Pseudo Velocity Response Spectra,
which can be derived from DSR according to the following relationships:
- pseudo-velocity response spectrum PSV(f) = (2 pi f) DRS(f)
- pseudo-acceleration response spectrum PSA(f) = (2 pi f) PSV(f)
The series of absolute accelerations AA is given for completeness. Due to the small value of the standard oscillator damping (5 %), the values of absolute acceleration AA and pseudo-acceleration response spectrum PSA are practically the same.
$$AA(f) \sim \mathsf{PSA}(f) = (2 \pi f)^2 \mathsf{DRS}(f)$$
The absolute acceleration and pseudo-acceleration values start to differ significantly in situations such as long periods and/or greater than standard damping.
For study purposes, the function osc_aa can be used,
which calculates the response of an oscillator tuned to a given frequency and damping
to the ground acceleration at the input.
Example
Examples are not included in the distribution package,
but you can find them in the repository https://github.com/ipemu/dvars in the examples directory.
The notebook example_dars_esmdb.ipynb compares the response spectrum calculated by the dvars.dars function
with the data stored in the ESM-DB, the Engineering Strong-Motion Database.
jupyter notebook examples/example_dvars.ipynb
Limitations
- The algorithm is designed for linear oscillators and may not be suitable for non-linear systems.
- If non-standard damping is required, then the assumptions for calculating pseudo-acceleration from the relative displacement series are not met and the results may not be accurate. Use the absolute acceleration series instead.
Contributing
Contributions are welcome! If you find any issues or have suggestions for improvements, please open an issue or submit a pull request.
License
This project is licensed under the MIT License.
Literature
- Nigam, N.C., and Jennings, P.C. (1969). "Calculation of Response Spectra from Strong-motion Earthquake Records." Bulletin of the Seismological Society of America, Vol. 59, No.2, pp. 909-922. April, 1969
- David M. Boore (2008) TSPP - A Collection of FORTRAN Programs for Processing and Manipulating Time Series. U.S. Geological Survey Open-File Report 2008-1111. Version 1.2, March 2008. https://pubs.usgs.gov/of/2008/1111/of2008-1111_v1.2.pdf
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file dvars-0.1.5.tar.gz.
File metadata
- Download URL: dvars-0.1.5.tar.gz
- Upload date:
- Size: 16.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3de530a7c1359498b21a1deaaa359eb5588f55d83d73d24258aa949d5c6eadcd
|
|
| MD5 |
38f9f5abc22b429ab62b74229bd3b8eb
|
|
| BLAKE2b-256 |
69270e2c5fa988440f02b2c733ac970633617c09a04b7f50e3c3fbedf84f28da
|
File details
Details for the file dvars-0.1.5-py3-none-win_amd64.whl.
File metadata
- Download URL: dvars-0.1.5-py3-none-win_amd64.whl
- Upload date:
- Size: 47.1 kB
- Tags: Python 3, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e05c24e6869ae9125ae1f4f09d1ddaa14b1de9e83d8675eb656e40d7bc934c1d
|
|
| MD5 |
89fe9b7431b7da07f2cf5159e9d7e68a
|
|
| BLAKE2b-256 |
25b9bdaec4342345114b8d5d2659ca13e642d1118a5a7038f325712390aff317
|
File details
Details for the file dvars-0.1.5-py3-none-win32.whl.
File metadata
- Download URL: dvars-0.1.5-py3-none-win32.whl
- Upload date:
- Size: 43.5 kB
- Tags: Python 3, Windows x86
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
69f7582a0ee1b42904c3ccf01ab41c4a9463e8a3eb0486532eb08cd7d033b4a8
|
|
| MD5 |
ec77d4b764533fe6832cff5e6fe67489
|
|
| BLAKE2b-256 |
af1ce14bf51b4502c3e638a3e8e384388352e7a5bc20b1111b8dca9f6c9154b8
|
File details
Details for the file dvars-0.1.5-cp311-cp311-manylinux1_x86_64.manylinux_2_5_x86_64.whl.
File metadata
- Download URL: dvars-0.1.5-cp311-cp311-manylinux1_x86_64.manylinux_2_5_x86_64.whl
- Upload date:
- Size: 17.2 kB
- Tags: CPython 3.11, manylinux: glibc 2.5+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3f48de152edfce5dbdf2cdea03b4d3ecdd3cba16e674eded2f5416f1693ef251
|
|
| MD5 |
d1669af7cdebe47c4a37f72619a1e927
|
|
| BLAKE2b-256 |
de4314bf74cd20cd3a54265a012c1289a448f3af1e64b7f77226f2f68ecc2947
|