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.

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


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.5.tar.gz (16.7 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.5-py3-none-win_amd64.whl (47.1 kB view details)

Uploaded Python 3Windows x86-64

dvars-0.1.5-py3-none-win32.whl (43.5 kB view details)

Uploaded Python 3Windows x86

dvars-0.1.5-cp311-cp311-manylinux1_x86_64.manylinux_2_5_x86_64.whl (17.2 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.5+ x86-64

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

Hashes for dvars-0.1.5.tar.gz
Algorithm Hash digest
SHA256 3de530a7c1359498b21a1deaaa359eb5588f55d83d73d24258aa949d5c6eadcd
MD5 38f9f5abc22b429ab62b74229bd3b8eb
BLAKE2b-256 69270e2c5fa988440f02b2c733ac970633617c09a04b7f50e3c3fbedf84f28da

See more details on using hashes here.

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

Hashes for dvars-0.1.5-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 e05c24e6869ae9125ae1f4f09d1ddaa14b1de9e83d8675eb656e40d7bc934c1d
MD5 89fe9b7431b7da07f2cf5159e9d7e68a
BLAKE2b-256 25b9bdaec4342345114b8d5d2659ca13e642d1118a5a7038f325712390aff317

See more details on using hashes here.

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

Hashes for dvars-0.1.5-py3-none-win32.whl
Algorithm Hash digest
SHA256 69f7582a0ee1b42904c3ccf01ab41c4a9463e8a3eb0486532eb08cd7d033b4a8
MD5 ec77d4b764533fe6832cff5e6fe67489
BLAKE2b-256 af1ce14bf51b4502c3e638a3e8e384388352e7a5bc20b1111b8dca9f6c9154b8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dvars-0.1.5-cp311-cp311-manylinux1_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 3f48de152edfce5dbdf2cdea03b4d3ecdd3cba16e674eded2f5416f1693ef251
MD5 d1669af7cdebe47c4a37f72619a1e927
BLAKE2b-256 de4314bf74cd20cd3a54265a012c1289a448f3af1e64b7f77226f2f68ecc2947

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