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-t6ntrs:20160001501:cucrzrmil-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^3E,sigma_y,sigma_uts:Paalpha:1/Knu,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
Yield strength comparison (NTRS + MIL)
Code source: examples/05_plot_property_curves.py
Out-of-range policy behavior
Code source: examples/06_plot_policy_behavior.py
Provider coverage across databases
Code source: examples/09_plot_provider_coverage.py
Multi-database 6061 workflow
Code source: examples/10_plot_multidatabase_6061.py
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.pyexamples/02_units_and_policies.pyexamples/03_search_and_provenance.pyexamples/04_regen_trade_study.pyexamples/05_plot_property_curves.pyexamples/06_plot_policy_behavior.pyexamples/07_generate_all_visuals.pyexamples/08_database_workflows.pyexamples/09_plot_provider_coverage.pyexamples/10_plot_multidatabase_6061.pyexamples/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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2c49349e7d1a9afb48acd9cbde000e2cf808b3ef530367fedaa7d63792400a9a
|
|
| MD5 |
dbc8fa05f7470c1b08fad826f05218d7
|
|
| BLAKE2b-256 |
5c278d02a7d1c93bf77f5d878f5cad6797c8de929615c97231356947a3b76d1b
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
714a0ab13ef925f5a269d67d479d707d091920eb05bc0ed1ce8d5215a2cf9e40
|
|
| MD5 |
39f9cc948d3b85be6edfa74bf4c12496
|
|
| BLAKE2b-256 |
610ead35ca17150a192c3322da10fa54d000eb0b31ffa9a63839b6b1c59a4e6e
|