Metadata-Version: 2.4
Name: poscidyn
Version: 0.1.0
Summary: Simulation and Visualization of Nonlinear Oscillator Dynamics in Python
Author-email: Raymond Knetemann <rknetemann@student.tudelft.nl>
License: MIT
Project-URL: Homepage, https://github.com/rknetemann/poscidyn
Project-URL: Repository, https://github.com/rknetemann/poscidyn
Project-URL: Issues, https://github.com/rknetemann/poscidyn/issues
Keywords: nonlinear dynamics,duffing,oscillators,simulation,jax
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Science/Research
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Scientific/Engineering :: Physics
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: jax>=0.4.0
Requires-Dist: diffrax>=0.7.0
Requires-Dist: equinox>=0.13.0
Requires-Dist: h5py>=3.14.0
Requires-Dist: tqdm>=4.67.0
Requires-Dist: matplotlib>=3.10.0
Provides-Extra: dev
Requires-Dist: mkdocs>=1.6.0; extra == "dev"
Requires-Dist: mkdocs-material>=9.7.0; extra == "dev"
Requires-Dist: mkdocstrings-python>=1.10.0; extra == "dev"
Requires-Dist: click>=8.2.0; extra == "dev"
Requires-Dist: tensorboard>=2.20.0; extra == "dev"
Requires-Dist: tensorboard_plugin_profile>=2.20.0; extra == "dev"
Requires-Dist: xprof>=2.20.0; extra == "dev"
Provides-Extra: gpu
Requires-Dist: jax[cuda12]>=0.4.0; extra == "gpu"
Dynamic: license-file

<h1 align='center'>Poscidyn</h1>
<h2 align='center'>Simulation and Visualization of Nonlinear Oscillator Dynamics in Python</h2>

Poscidyn is a Python toolkit based on [JAX](https://github.com/google/jax), designed to **streamline and accelerate common workflows in nonlinear oscillator dynamics**. It enables the simulation and visualization of (nonlinear) oscillators using experimentally realistic setups, supporting both time- and frequency-domain analyses.

Features include:
- Built-in models of (nonlinear) oscillators
- Frequency sweeping (forward and backward)
- Everything vmappable
---

## Installation
```bash
pip install poscidyn
```
Requires Python 3.10 or newer.

## Documentation
Have a look at our extensive documentation on how to install, use and extend this package: [https://rknetemann.github.io/poscidyn/](https://rknetemann.github.io/poscidyn/).

## Quick example

```python
import poscidyn
import numpy as np

Q, omega_0, alpha, gamma = np.array([100.0]), np.array([1.00]), np.zeros((1,1,1)), np.zeros((1,1,1,1))
gamma[0,0,0,0] = 2.55
modal_forces = np.array([1.0])

driving_frequency = np.linspace(0.9, 1.3, 501)
driving_amplitude = np.linspace(0.1, 1.0, 10)

MODEL = poscidyn.NonlinearOscillator(Q=Q, alpha=alpha, gamma=gamma, omega_0=omega_0)
EXCITOR = poscidyn.OneToneExcitation(driving_frequency, driving_amplitude, modal_forces)

frequency_sweep = poscidyn.frequency_sweep(
    model = MODEL, excitor=EXCITOR,
) 

```

## Credits where they are due

[JAX](https://github.com/google/jax): a Python library for accelerator-oriented array computation and program transformation, designed for high-performance numerical computing and large-scale machine learning.

[Diffrax](https://github.com/patrick-kidger/diffrax): JAX-based library providing numerical differential equation solvers.

[Equinox](https://github.com/patrick-kidger/equinox): your one-stop JAX library, for everything you need that isn't already in core JAX.
