Skip to main content

FrequenSolve Python API

Coverage Python 3.10-3.14

FrequenSolve Python is the authoring and orchestration API 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 FrequenSolve Python API and lightweight mesh bindings needed to prepare inputs and inspect outputs.

Installation

FrequenSolve supports Python 3.10 through 3.14 on macOS and Linux.

Create an isolated environment and install the released FrequenSolve Python API with:

python3.10 -m venv .venv
. .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install frequensolve
frequensolve --version

Because the repository is public, you can also install from a source checkout when you want local examples, documentation sources, or editable development:

python -m pip install -e .

Install optional capabilities only when needed:

python -m pip install "frequensolve[visual]"      # matplotlib and PyVista plotting
python -m pip install "frequensolve[parallel]"    # local Dask execution
python -m pip install "frequensolve[hpc]"         # SSH and SLURM site support
python -m pip install "frequensolve[cloud]"       # FrequenSol Cloud API and S3 access
python -m pip install "frequensolve[seismic-io]"  # SEG-Y/ASDF IO helpers
python -m pip install "frequensolve[fast-fft]"    # pyFFTW acceleration
python -m pip install "frequensolve[inversion]"   # PyLops-compatible FWI operators

Quickstart

import frequensolve as fs

u = fs.ureg

project = fs.Project(name="quickstart", path="./scratch/quickstart")
sim = project.new_simulation(
    name="simple_acoustic",
    physics="acoustic",
    dimension=2,
    units={"length": "km", "velocity": "km/s", "density": "g/cm^3"},
)

model = fs.LayeredModel(name="model", dimension=2, x_limits=[0.0, 1.0])
model.add_surface(name="top", depth=0.0 * u.km)
model.add_layer(
    name="layer",
    properties={"Vp": 1.5 * u.km / u.s, "Rho": 2.2 * u.g / u.cm**3},
)
model.add_surface(name="bottom", depth=0.5 * u.km)

sim += model
sim += model.hex_mesh_generator([8, 4])
project.save()

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

Sites And Tutorials

Stampede3 quick setup

Install the HPC dependencies into the active environment, generate a site profile, authenticate once, and check it:

python -m pip install "frequensolve[hpc]"

frequensolve site configure stampede3 \
  --account YOUR_TACC_ALLOCATION \
  --solver /absolute/remote/path/to/FS_seismic
frequensolve site connect
frequensolve site check

The configuration command prompts for the TACC username and writes a minimal ~/.frequensolve/site.toml. The built-in Stampede3 preset supplies the login host, launcher, partitions, and standard Intel MPI, PETSc, and parallel-HDF5 runtime modules. Users do not normally need to specify a credential label, SSH key, hostname, or module list.

frequensolve site connect establishes an OpenSSH connection that scripts, notebooks, fs.Site() instances, and transfers can reuse for up to eight hours. It does not modify ~/.ssh/config. See Share one SSH login across FrequenSolve sessions for the optional generic OpenSSH configuration alternative.

After setup, activate the environment and use the saved default site from any script or notebook:

. .venv/bin/activate
frequensolve site connect
python your_script.py
import frequensolve as fs

with fs.Site() as site:
    result = site.submit(job).wait()

For custom Slurm clusters, local solvers, cloud execution, multiple profiles, and site-level overrides, see the site configuration guide. Direct constructors such as fs.LocalSite(...) and fs.AWSSite(...) remain available for advanced cases. Scheduler templates and the adaptive runner are installed with FrequenSolve, so PYTHONPATH is not required for site setup.

The tutorial notebooks live in examples/tutorials. The local documentation catalog is docs/source/tutorials/index.rst, with site-specific examples under examples/tutorials/02_sites.

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

GitHub CI runs unit tests, docs, and package checks on normal PRs and pushes. It also runs a single Python 3.12 lane with the visual and seismic-IO extras, and installs both built distribution formats on Ubuntu and macOS. The stable Required CI job aggregates every PR-safe gate.

Run the optional local visual and seismic-IO lane with:

python -m pip install -e ".[dev,parallel,visual,seismic-io]"
make test-optional-extras

The downstream Docker image integration gate is intentionally opt-in because it spends Docker/GitHub Actions minutes. To run it, manually dispatch the CI workflow with RUN_DOCKER_IMAGE_INTEGRATION=true.

Release checks:

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

For releases, use PEP 440 package versions and v-prefixed tags. Creating a release candidate is the paid, manual release gate: it requires successful Required CI evidence for the exact source SHA and calls the pinned FrequenSolveDockerImage solver workflow with an immutable final FrequenSolver release before creating any tag. The evidence JSON, preferred FrequenSolver release/commit, and checksum-bound heavy-test archive follow that commit through final promotion and publication. Release candidates are published to TestPyPI, and final releases are published to PyPI. See RELEASING.md for the maintainer workflow.

Released wheels and source distributions include the preferred FrequenSolver pairing proven by that evidence. Local and HPC sites check the configured executable once before submission. An unknown or different pair produces a warning by default, and remote identity probes time out after 15 seconds; set frequensolver_policy = "strict" in the site profile to require the tested release and commit, or "off" to opt out explicitly.

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

Published Python API docs are owned by the FrequenSol/cloud-amplify docs-site-app. Use that repository's manual Publish Python Docs workflow to build from a selected FrequenSolve release ref and publish immutable artifacts under /python/<version>/, with /python/latest/ updated after the versioned artifact is present. The former docs/host Terraform stack in this repository has been destroyed and removed.

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

License And Support

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

Metadata

Release files for frequensolve 0.6.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for frequensolve 0.6.2
File Size Uploaded Provenance Actions
frequensolve-0.6.2.tar.gz 757.1 kB With provenance Details for frequensolve-0.6.2.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for frequensolve 0.6.2
File Interpreter ABI Platform Actions
frequensolve-0.6.2-py3-none-any.whl Python 3 none any Details for frequensolve-0.6.2-py3-none-any.whl

Total release size: 1.4 MB

Release files / frequensolve-0.6.2.tar.gz

Download URL frequensolve-0.6.2.tar.gz
Size 757.1 kB
Tags Source
SHA-256 checksum
How to use checksums
208d8f82e7afc5fbe855025d1e33cec40227ad274b445b020bee2e41686a7506
BLAKE2b-256 checksum
How to use checksums
692a2d5fc3b3eaa319ca0d8cdae00d57e7dff3301d2527d7ab92fada41e1cbde
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 7, 2026.

Transparency log

Release files / frequensolve-0.6.2-py3-none-any.whl

Download URL frequensolve-0.6.2-py3-none-any.whl
Size 611.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3479bf24d56201afe7c1c7e5445977928b1c1fdff4d1d2b54131eedc1fd7c79a
BLAKE2b-256 checksum
How to use checksums
ac9443ee984923a9d8da89096aed8c0bb3e65ed6bed6fa2b2464e0859cc00523
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 7, 2026.

Transparency log

Security for frequensolve 0.6.2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for frequensolve-0.6.2.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 7, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.6.2 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page