Skip to main content

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.

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dvars-0.1.4.tar.gz (14.0 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

dvars-0.1.4-py3-none-win_amd64.whl (46.0 kB view details)

Uploaded Python 3Windows x86-64

dvars-0.1.4-py3-none-win32.whl (42.9 kB view details)

Uploaded Python 3Windows x86

dvars-0.1.4-cp311-cp311-manylinux1_x86_64.manylinux_2_5_x86_64.whl (16.2 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.5+ x86-64

File details

Details for the file dvars-0.1.4.tar.gz.

File metadata

  • Download URL: dvars-0.1.4.tar.gz
  • Upload date:
  • Size: 14.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.2

File hashes

Hashes for dvars-0.1.4.tar.gz
Algorithm Hash digest
SHA256 673809c811f28528c7ce6bb06097c378f6bdbfbc0dfc3aa0c8d0338e2909ea4f
MD5 e07ce587e6683b30fcd8a591dab1ed9c
BLAKE2b-256 587e94fd1d50d2637c464055f16b12032f3f64aba37af41f0ee5dd9eb6f6b27a

See more details on using hashes here.

File details

Details for the file dvars-0.1.4-py3-none-win_amd64.whl.

File metadata

  • Download URL: dvars-0.1.4-py3-none-win_amd64.whl
  • Upload date:
  • Size: 46.0 kB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.2

File hashes

Hashes for dvars-0.1.4-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 21407e59c9a47c5efe2abbd7745e490f32850679c2593da10053e095e7a5c246
MD5 c7e3c201f9c345a63070a50d9406c108
BLAKE2b-256 cbcd1bfc17d0d79a451985cf23720eb05bd0d0580d8162629f2129f271951d6e

See more details on using hashes here.

File details

Details for the file dvars-0.1.4-py3-none-win32.whl.

File metadata

  • Download URL: dvars-0.1.4-py3-none-win32.whl
  • Upload date:
  • Size: 42.9 kB
  • Tags: Python 3, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.2

File hashes

Hashes for dvars-0.1.4-py3-none-win32.whl
Algorithm Hash digest
SHA256 dad3c44bb420ed4c5c33f91c2186388cc7955537b4d12e3a2918dfac5839fb6e
MD5 120f92b38a8ac27633ad0e5a2e7c65da
BLAKE2b-256 2fed4964c88ba1066c30a7abbd9fd6112bb3eda87a2ca1c109819d4c77c8bca0

See more details on using hashes here.

File details

Details for the file dvars-0.1.4-cp311-cp311-manylinux1_x86_64.manylinux_2_5_x86_64.whl.

File metadata

File hashes

Hashes for dvars-0.1.4-cp311-cp311-manylinux1_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 9ceaa0139bd31e3893454c3d5243b58b067257b7fa964246a6bce37e80471407
MD5 4556be3291976b96531b59f478cc361a
BLAKE2b-256 fd5f4b06e3af3731d42bee16cdb0cc167e0f2c30e3b87744cb41864c7ccbf61c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page