Skip to main content

A spectral radius package for time-integration in solid dynamics

Project description

spradius

A spectral radius package for time-integration in solid dynamics.

PyPi Version PyPI pyversions

Imports: isort Code style: black CodeFactor codecov gh-actions

spRadius is a not-so-fast spectral radius numerical computation package for Python specialised in time-integration algorithm for solid dynamics. It is based on the work of Benítez and Montáns, who propose an algorithm for computing the amplification matrix and, therefore, the spectral radius, by computing the mechanical response of the system to unit initial conditions.

As clearly mentioned in that work, in general, the spectral radius needs to be computed from the displacement solution during a large number of time steps, owing to the inconsistent initial acceleration evaluation. Since the numerical computation of the spectral radius involves a root with order equal to the number of steps, typical double machine precision is quickly surpassed. To circumvent this pitfall, the arbitrary precision floating-point arithmetic library mpmath is utilised, at expense of a drastic reduction in performance.

Installation

Clone this repository into your system

git clone git@github.com:amcc1996/spradius.git

and install the Python package with pip3, running the following command inside spRadius root directory, where the setup.py is located

pip3 install .

Alternatively, you can install it directly from PyPI with

pip3 install spradius

At this point, spRadius can be imported into your Python scripts and modules the usual Python-way

import spradius

Example

import matplotlib.pyplot as plt
import numpy as np

from spradius import generalised_alpha, hht, newmark


dt = np.logspace(-3, 3, num=100)

rho_newmark = newmark(dt)
rho_newmark2 = newmark(dt, beta=0.3025, gamma=0.6)
rho_hht = hht(dt, alpha=0.05)
rho_hht2 = hht(dt, alpha=0.3)
rho_gen_alpha = generalised_alpha(dt, rho_infty=0.8)
rho_gen_alpha2 = generalised_alpha(dt, rho_infty=0.2)

fig, ax = plt.subplots(
    1, 1, num="spradius example", constrained_layout=True, figsize=(6, 6)
)
ax.semilogx(
    dt,
    rho_newmark.spectral_radius,
    label=r"Newmkark $\beta=0.25$ $\gamma=0.5$",
    clip_on=True,
)
ax.semilogx(
    dt,
    rho_newmark2.spectral_radius,
    label=r"Newmkark $\beta=0.3025$ $\gamma=0.6$",
    clip_on=True,
)
ax.semilogx(
    dt, rho_hht.spectral_radius, label=r"HHT $\alpha=0.05$", clip_on=True
)
ax.semilogx(
    dt, rho_hht2.spectral_radius, label=r"HHT $\alpha=0.3$", clip_on=True
)
ax.semilogx(
    dt,
    rho_gen_alpha.spectral_radius,
    label=r"GEN-$\alpha$ $\rho_{\infty}=0.8$",
    clip_on=True,
)
ax.semilogx(
    dt,
    rho_gen_alpha2.spectral_radius,
    label=r"GEN-$\alpha$ $\rho_{\infty}=0.2$",
    clip_on=True,
)
ax.set_xlabel(r"Non-dimensional time step, $\Delta t / T_1$")
ax.set_ylabel(r"Spectral radius, $\rho$")
ax.set_xlim(dt[0], dt[-1])
ax.set_ylim(0, 1.1)
ax.legend()
ax.grid()

plt.show()

spradius_example

Example spectral radius plot obtained with spRadius.

Running the tests

spRadius tests can by run with pytest so start by installing the framework

pip3 install pytest
pip3 install pytest-cov # optional, to generate coverage reports

and launch the testing utility from spRadius root directory

make tests

The coverage reports can be generated with

make coverage

which will run the test and create the coverage information in htmlcov.

License

Copyright 2020, António Carneiro

spRadius is free and open-source software and is published MIT License.

References

  1. Benítez JM, Montáns FJ. The value of numerical amplification matrices in time integration methods. Computers & Structures. 2013 Nov 1;128:243–50.

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

spradius-1.0.1.tar.gz (15.8 kB view hashes)

Uploaded Source

Built Distribution

spradius-1.0.1-py3-none-any.whl (10.1 kB view hashes)

Uploaded Python 3

Supported by

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