Skip to main content

Open solid material properties with provenance and provider backends

Project description

OpenSolids

OpenSolids is a Python library for temperature-dependent solid material properties with explicit provenance and provider-based data ingestion.

It is built for solver workflows that need curves like k(T), cp(T), E(T), and sigma_y(T) instead of fixed constants.

Why OpenSolids Exists

Most engineering calculations need properties that change with temperature, not single constants. OpenSolids was created to make those curves easy to access from Python while keeping source/provenance information visible.

Who This Is For

  • Propulsion engineers (regen cooling, chamber/nozzle thermal-structural studies)
  • Mechanical/materials engineers (strength margins and thermal stress studies)
  • Students and independent builders who want reusable material-property tooling

What You Can Use It For

  • Evaluate temperature-dependent conductivity, heat capacity, modulus, and strength
  • Compare materials across multiple data providers in one script
  • Build design sweeps and trade studies with consistent APIs and units
  • Keep source attribution attached to the data you use in analysis

Install

python3 -m venv .venv
source .venv/bin/activate
pip install opensolids

For plot-generating examples:

pip install "opensolids[viz]"

For local development from this repository:

pip install -e '.[dev,viz]'

Quick Start

import opensolids as osl

mat = osl.material("nist-cryo:aluminum-6061-t6")
print(mat.k(300.0))
print(mat.E([77.0, 150.0, 293.15], units="GPa"))
print(mat.eps_th(120.0, T_ref=293.15))

Which Database Should I Use?

Use provider IDs by prefix:

  • nist-cryo:* for cryogenic to room-temperature thermal/elastic curves.
  • ntrs:* for curated NASA-report-derived high-temperature material curves.
  • mil-hdbk-5:* for handbook allowables style strength curves.

Example material IDs:

  • nist-cryo:aluminum-6061-t6
  • ntrs:20160001501:cucrzr
  • mil-hdbk-5:H:inconel-718

Provider workflow example script: examples/08_database_workflows.py

Run:

.venv/bin/python examples/08_database_workflows.py

API Overview

  • Material lookup: osl.material(material_id)
  • Search: osl.search(query)
  • Provider list: osl.list_providers()
  • Property calls: mat.k(T), mat.cp(T), mat.E(T), mat.sigma_y(T), ...
  • Out-of-range policy per call: policy="clamp" | "raise" | "extrapolate"
  • Units conversion per call: units="MPa", units="GPa", etc.

Units

OpenSolids stores and serves curves in canonical SI units internally:

  • k: W/(m*K)
  • cp: J/(kg*K)
  • rho: kg/m^3
  • E, sigma_y, sigma_uts: Pa
  • alpha: 1/K
  • nu, eps_th: 1

You can request output units per call with units=....

Data Packaging

Provider databases are bundled with the opensolids wheel, so pip install opensolids includes NIST, curated NTRS, and MIL-HDBK-5 records by default.

If you are working from source, provider data also resolves from the local packages/opensolids_data_* directories.

Visual Outputs

Thermal conductivity comparison (NTRS copper alloys)

Code source: examples/05_plot_property_curves.py

Thermal conductivity comparison

Yield strength comparison (NTRS + MIL)

Code source: examples/05_plot_property_curves.py

Yield strength comparison

Out-of-range policy behavior

Code source: examples/06_plot_policy_behavior.py

Policy behavior plot

Provider coverage across databases

Code source: examples/09_plot_provider_coverage.py

Provider material counts

Provider property coverage

Multi-database 6061 workflow

Code source: examples/10_plot_multidatabase_6061.py

Multi-database 6061

CLI Workflows

# Sync NIST cryogenic pages into a data-pack directory
opensolids sync nist-cryo --max-materials 10

# Sync NTRS metadata and redistribution checks
opensolids sync ntrs --since 2021-01-01 --citation-id 20070017311

# Import MIL-HDBK-5 tabular data from local PDF (pdftotext required)
opensolids import mil-hdbk-5 --pdf /path/to/MIL-HDBK-5.pdf

Examples

  • examples/01_quickstart.py
  • examples/02_units_and_policies.py
  • examples/03_search_and_provenance.py
  • examples/04_regen_trade_study.py
  • examples/05_plot_property_curves.py
  • examples/06_plot_policy_behavior.py
  • examples/07_generate_all_visuals.py
  • examples/08_database_workflows.py
  • examples/09_plot_provider_coverage.py
  • examples/10_plot_multidatabase_6061.py
  • examples/11_verify_units_and_sanity.py

Run all visual examples:

.venv/bin/python examples/07_generate_all_visuals.py

Run the database SI/sanity verification example:

.venv/bin/python examples/11_verify_units_and_sanity.py

Documentation

  • Comprehensive guide: docs/usage-guide.md
  • Example index: examples/README.md
  • Compliance notes: docs/compliance/

License

OpenSolids is licensed under GPL-3.0-only.

If you plan to distribute software that includes OpenSolids, review the GPL terms in LICENSE to understand your distribution requirements.

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

opensolids-0.2.1.tar.gz (34.8 kB view details)

Uploaded Source

Built Distribution

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

opensolids-0.2.1-py3-none-any.whl (55.7 kB view details)

Uploaded Python 3

File details

Details for the file opensolids-0.2.1.tar.gz.

File metadata

  • Download URL: opensolids-0.2.1.tar.gz
  • Upload date:
  • Size: 34.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for opensolids-0.2.1.tar.gz
Algorithm Hash digest
SHA256 2c49349e7d1a9afb48acd9cbde000e2cf808b3ef530367fedaa7d63792400a9a
MD5 dbc8fa05f7470c1b08fad826f05218d7
BLAKE2b-256 5c278d02a7d1c93bf77f5d878f5cad6797c8de929615c97231356947a3b76d1b

See more details on using hashes here.

File details

Details for the file opensolids-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: opensolids-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 55.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for opensolids-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 714a0ab13ef925f5a269d67d479d707d091920eb05bc0ed1ce8d5215a2cf9e40
MD5 39f9cc948d3b85be6edfa74bf4c12496
BLAKE2b-256 610ead35ca17150a192c3322da10fa54d000eb0b31ffa9a63839b6b1c59a4e6e

See more details on using hashes here.

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