Getting started

pytest Documentation Status

SDyPy - Structural Dynamics Python

This package has the goal to defragment the open source effort in the scientific field of structural dynamics. Our goal is to speed-up the development and implementation of scientific methods. This an open and free initiative, we stand up for:

  • free MIT license,

  • open development,

  • open accepting of contributions,

  • open decision making,

  • multi-institutional engagement.

SDyPy depends on core SciPy stack packages, please use those packages where possible. If you would like an extension to be implemented, if it is general and not related to structural dynamics, consider implementing it into the SciPy stack.

Installation and basic usage

Install this package by:

pip install sdypy

The sdypy offers a convenient way to access the functionality of the namespace packages.

First import the sdypy package:

import sdypy as sd

Access the EMA module:

model = sd.EMA.Model(FRF_matrix, freq_array)

or the io module:

uff_obj = sd.io.uff.UFF('file.uff')

or the FRF module:

frf_obj = sd.FRF.FRF(sampling_freq, excitation, response)

or the excitation module:

gausian_signal = sd.excitation.random_gaussian((N, PSD, fs))

Package integration in SDyPy

The existing efforts in the field of structural dynamics are included in SDyPy according to the level of integration (see SEP 1).

  • 1st level (part of SDyPy repository or organization):
    • sdypy-EMA (Experimental Modal Analysis in Python)

    • sdypy-io (Input/Output for Structural Dynamics)

    • sdypy-FRF (Frequency Response Function estimation)

    • sdypy-excitation (Excitation signals as used in structural dynamics and vibration fatigue)

  • 2nd level (namespace package in independent repository):

  • 3rd level (packages that correspond to the SDyPy template):
    • pyExSi (Excitation signal generator)

    • FLife (Vibration fatigue life in the spectral domain)

    • pyIDI (Image-Based Displacement Identification)

    • pyUFF (Universal File Format in Python)

    • pyFRF (Frequency Response Function estimation)

  • 4th level (these packages are developed completely independently but might be useful for 3rd, 2nd and 1st level packages):
    • pyFBS (Frequency Based Substructuring and Transfer Path Analysis)

    • speckle_pattern (Speckle pattern generation for DIC)

    • pyNNST (Obtaining non-stationary index for time-series)

    • python-acoustics (Useful tools for acousticians)

    • pyTrigger (Software trigger for data acquisition)

    • AMfe (Finite Element Research Code)

SDyPy pull request guidelines

Pull requests are always welcome, and the SDyPy community appreciates any help you give. Note that a code of conduct applies to all spaces managed by the SDyPy project, including issues and pull requests: https://github.com/sdypy/sdypy/blob/master/docs/source/dev/code_of_conduct.rst.

When submitting a pull request, we ask you check the following:

  1. Unit tests, documentation, and code style are in order. For details, please see follow the SciPy notes: https://github.com/scipy/scipy/blob/master/HACKING.rst.txt.

    It’s also OK to submit work in progress if you’re unsure of what this exactly means, in which case you’ll likely be asked to make some further changes.

  2. The contributed code will be licensed under SDyPy’s license, https://github.com/sdypy/sdypy/blob/master/LICENSE.txt. If you did not write the code yourself, you ensure the existing license is compatible and include the license information in the contributed files, or obtain a permission from the original author to relicense the contributed code.

Acknowledgements

Substantial portions of this document were adapted from the SciPy project’s contributing document.