Skip to main content

Python SDK for authoring and running FrequenSolve finite-element simulations

Project description

FrequenSolve Python SDK

FrequenSolve Python is the authoring and orchestration SDK for FrequenSol finite-element wave simulation software. It builds solver-ready simulation inputs, manages model and acquisition metadata, reads trace outputs, and provides optional adapters for local, SLURM, and cloud execution.

The commercial solver binaries and backend services are licensed separately. This repository contains the Python SDK and lightweight mesh bindings needed to prepare inputs and inspect outputs.

Installation

FrequenSolve supports Python 3.10, 3.11, and 3.12 on macOS and Linux.

python -m pip install frequensolve

Install optional capabilities only when needed:

python -m pip install "frequensolve[parallel]"    # SLURM/SSH/Dask helpers
python -m pip install "frequensolve[fast-fft]"    # pyFFTW acceleration
python -m pip install "frequensolve[cloud]"       # FrequenSol cloud backend
python -m pip install "frequensolve[seismic-io]"  # SEG-Y/ASDF and seismic I/O
python -m pip install "frequensolve[visual]"      # plotting helpers
python -m pip install "frequensolve[dev,docs]"    # development and docs

Quickstart

from frequensolve.model import ModelSubdomain
from frequensolve.simulation import SeismicSimulation
from frequensolve.units import ureg

layer = ModelSubdomain(
    mesh_block_id=1,
    physics="acoustic",
    properties={
        "vp": 1.5 * ureg.km / ureg.s,
        "rho": 2.2 * ureg.g / ureg.cm**3,
    },
)

sim = SeismicSimulation(name="simple_acoustic")
sim.model.subdomains.append(layer)
sim.save("sim.json")

The SDK exports JSON/HDF5 contracts consumed by fast solver builds. Solver execution requires a licensed solver binary or an enabled FrequenSol execution backend.

Development

Create a local development environment from the repository root:

python -m venv .venv
. .venv/bin/activate
python -m pip install -e ".[dev,docs,visual]"

Run deterministic unit tests by default:

python -m pytest

Release checks:

pre-commit run --all-files
git status --short
python -m build
python -m twine check dist/*

For a release, build from a clean tagged commit. Versioneer uses plain PEP 440 tags, so tag releases as 0.2.0, 0.2.1, and so on. The GitHub release workflow builds the sdist and wheel, rejects dirty or untagged versions, and can publish to TestPyPI from workflow_dispatch or PyPI from a published GitHub Release after Trusted Publishing is configured for the testpypi and pypi environments.

Solver, cloud, HPC, and visual tests are marked and must be selected explicitly:

python -m pytest -m integration
python -m pytest -m cloud
python -m pytest -m hpc
python -m pytest -m visual

Documentation

Build the Sphinx documentation locally with:

python -m pip install -e ".[docs]"
cd docs
make html

Fast solver contract updates are tracked in docs/source/fast_solver_api_updates.rst.

License And Support

FrequenSolve Python SDK is open source under the MIT license. The fast solver is licensed separately; for solver access and support, contact support@frequensol.com.

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

frequensolve-0.2.0.tar.gz (463.4 kB view details)

Uploaded Source

Built Distribution

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

frequensolve-0.2.0-py3-none-any.whl (419.6 kB view details)

Uploaded Python 3

File details

Details for the file frequensolve-0.2.0.tar.gz.

File metadata

  • Download URL: frequensolve-0.2.0.tar.gz
  • Upload date:
  • Size: 463.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for frequensolve-0.2.0.tar.gz
Algorithm Hash digest
SHA256 e964330fd12071c9a1ceef1a0424f9e1653217089ed95ce3136587b4a2a01e47
MD5 0f74505a5c75a6d981b6feb3db5b01d0
BLAKE2b-256 5a385184628c2ee54e621b25489a1e7bd5a670f9b04c9c772e7dfbb928be3e0b

See more details on using hashes here.

Provenance

The following attestation bundles were made for frequensolve-0.2.0.tar.gz:

Publisher: release.yml on FrequenSol/FrequenSolve

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file frequensolve-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: frequensolve-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 419.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for frequensolve-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 fcb95aa2c672f5c05b59fe5bde356db2f8162c860c6f60960cf6763d2145717b
MD5 78bb8eb4a9373cf2e4d2a75be589bc8e
BLAKE2b-256 7d410dcd6b53a52441c003172c5ac7d111916c82331bccaedea2f1fd5f4c8fe2

See more details on using hashes here.

Provenance

The following attestation bundles were made for frequensolve-0.2.0-py3-none-any.whl:

Publisher: release.yml on FrequenSol/FrequenSolve

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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