materforge 0.5.5__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- materforge-0.5.5/.github/workflows/ci.yml +82 -0
- materforge-0.5.5/.readthedocs.yml +30 -0
- materforge-0.5.5/AUTHORS.txt +5 -0
- materforge-0.5.5/CHANGELOG.md +53 -0
- materforge-0.5.5/CITATION.cff +25 -0
- materforge-0.5.5/CONTRIBUTING.md +114 -0
- materforge-0.5.5/LICENSE +28 -0
- materforge-0.5.5/MANIFEST.in +38 -0
- materforge-0.5.5/PKG-INFO +228 -0
- materforge-0.5.5/README.md +159 -0
- materforge-0.5.5/docs/_build/html/.buildinfo +4 -0
- materforge-0.5.5/docs/_build/html/.doctrees/environment.pickle +0 -0
- materforge-0.5.5/docs/_build/html/.doctrees/explanation/design_philosophy.doctree +0 -0
- materforge-0.5.5/docs/_build/html/.doctrees/explanation/material_properties.doctree +0 -0
- materforge-0.5.5/docs/_build/html/.doctrees/how-to/define_materials.doctree +0 -0
- materforge-0.5.5/docs/_build/html/.doctrees/how-to/energy_temperature_conversion.doctree +0 -0
- materforge-0.5.5/docs/_build/html/.doctrees/index.doctree +0 -0
- materforge-0.5.5/docs/_build/html/.doctrees/reference/api/material.doctree +0 -0
- materforge-0.5.5/docs/_build/html/.doctrees/reference/api.doctree +0 -0
- materforge-0.5.5/docs/_build/html/.doctrees/reference/yaml_schema.doctree +0 -0
- materforge-0.5.5/docs/_build/html/.doctrees/tutorials/first_simulation.doctree +0 -0
- materforge-0.5.5/docs/_build/html/.doctrees/tutorials/getting_started.doctree +0 -0
- materforge-0.5.5/docs/_build/html/_modules/index.html +122 -0
- materforge-0.5.5/docs/_build/html/_modules/materforge/algorithms/interpolation.html +220 -0
- materforge-0.5.5/docs/_build/html/_modules/materforge/algorithms/piecewise_builder.html +384 -0
- materforge-0.5.5/docs/_build/html/_modules/materforge/algorithms/piecewise_inverter.html +341 -0
- materforge-0.5.5/docs/_build/html/_modules/materforge/algorithms/regression_processor.html +310 -0
- materforge-0.5.5/docs/_build/html/_modules/materforge/core/elements.html +212 -0
- materforge-0.5.5/docs/_build/html/_modules/materforge/core/exceptions.html +146 -0
- materforge-0.5.5/docs/_build/html/_modules/materforge/core/materials.html +565 -0
- materforge-0.5.5/docs/_build/html/_modules/materforge/core/symbol_registry.html +154 -0
- materforge-0.5.5/docs/_build/html/_modules/materforge/parsing/api.html +453 -0
- materforge-0.5.5/docs/_build/html/_modules/materforge/parsing/config/material_yaml_parser.html +519 -0
- materforge-0.5.5/docs/_build/html/_modules/materforge/parsing/processors/property_processor.html +250 -0
- materforge-0.5.5/docs/_build/html/_modules/materforge/parsing/validation/property_type_detector.html +359 -0
- materforge-0.5.5/docs/_build/html/_modules/materforge/visualization/plotters.html +508 -0
- materforge-0.5.5/docs/_build/html/_sources/explanation/design_philosophy.md.txt +234 -0
- materforge-0.5.5/docs/_build/html/_sources/explanation/material_properties.md.txt +240 -0
- materforge-0.5.5/docs/_build/html/_sources/how-to/define_materials.md.txt +518 -0
- materforge-0.5.5/docs/_build/html/_sources/how-to/energy_temperature_conversion.md.txt +70 -0
- materforge-0.5.5/docs/_build/html/_sources/index.rst.txt +60 -0
- materforge-0.5.5/docs/_build/html/_sources/reference/api/material.md.txt +275 -0
- materforge-0.5.5/docs/_build/html/_sources/reference/api.rst.txt +60 -0
- materforge-0.5.5/docs/_build/html/_sources/reference/yaml_schema.md.txt +197 -0
- materforge-0.5.5/docs/_build/html/_sources/tutorials/first_simulation.md.txt +143 -0
- materforge-0.5.5/docs/_build/html/_sources/tutorials/getting_started.md.txt +117 -0
- materforge-0.5.5/docs/_build/html/_static/_sphinx_javascript_frameworks_compat.js +123 -0
- materforge-0.5.5/docs/_build/html/_static/basic.css +914 -0
- materforge-0.5.5/docs/_build/html/_static/css/badge_only.css +1 -0
- materforge-0.5.5/docs/_build/html/_static/css/fonts/Roboto-Slab-Bold.woff +0 -0
- materforge-0.5.5/docs/_build/html/_static/css/fonts/Roboto-Slab-Bold.woff2 +0 -0
- materforge-0.5.5/docs/_build/html/_static/css/fonts/Roboto-Slab-Regular.woff +0 -0
- materforge-0.5.5/docs/_build/html/_static/css/fonts/Roboto-Slab-Regular.woff2 +0 -0
- materforge-0.5.5/docs/_build/html/_static/css/fonts/fontawesome-webfont.eot +0 -0
- materforge-0.5.5/docs/_build/html/_static/css/fonts/fontawesome-webfont.svg +2671 -0
- materforge-0.5.5/docs/_build/html/_static/css/fonts/fontawesome-webfont.ttf +0 -0
- materforge-0.5.5/docs/_build/html/_static/css/fonts/fontawesome-webfont.woff +0 -0
- materforge-0.5.5/docs/_build/html/_static/css/fonts/fontawesome-webfont.woff2 +0 -0
- materforge-0.5.5/docs/_build/html/_static/css/fonts/lato-bold-italic.woff +0 -0
- materforge-0.5.5/docs/_build/html/_static/css/fonts/lato-bold-italic.woff2 +0 -0
- materforge-0.5.5/docs/_build/html/_static/css/fonts/lato-bold.woff +0 -0
- materforge-0.5.5/docs/_build/html/_static/css/fonts/lato-bold.woff2 +0 -0
- materforge-0.5.5/docs/_build/html/_static/css/fonts/lato-normal-italic.woff +0 -0
- materforge-0.5.5/docs/_build/html/_static/css/fonts/lato-normal-italic.woff2 +0 -0
- materforge-0.5.5/docs/_build/html/_static/css/fonts/lato-normal.woff +0 -0
- materforge-0.5.5/docs/_build/html/_static/css/fonts/lato-normal.woff2 +0 -0
- materforge-0.5.5/docs/_build/html/_static/css/theme.css +4 -0
- materforge-0.5.5/docs/_build/html/_static/doctools.js +149 -0
- materforge-0.5.5/docs/_build/html/_static/documentation_options.js +13 -0
- materforge-0.5.5/docs/_build/html/_static/file.png +0 -0
- materforge-0.5.5/docs/_build/html/_static/fonts/Lato/lato-bold.eot +0 -0
- materforge-0.5.5/docs/_build/html/_static/fonts/Lato/lato-bold.ttf +0 -0
- materforge-0.5.5/docs/_build/html/_static/fonts/Lato/lato-bold.woff +0 -0
- materforge-0.5.5/docs/_build/html/_static/fonts/Lato/lato-bold.woff2 +0 -0
- materforge-0.5.5/docs/_build/html/_static/fonts/Lato/lato-bolditalic.eot +0 -0
- materforge-0.5.5/docs/_build/html/_static/fonts/Lato/lato-bolditalic.ttf +0 -0
- materforge-0.5.5/docs/_build/html/_static/fonts/Lato/lato-bolditalic.woff +0 -0
- materforge-0.5.5/docs/_build/html/_static/fonts/Lato/lato-bolditalic.woff2 +0 -0
- materforge-0.5.5/docs/_build/html/_static/fonts/Lato/lato-italic.eot +0 -0
- materforge-0.5.5/docs/_build/html/_static/fonts/Lato/lato-italic.ttf +0 -0
- materforge-0.5.5/docs/_build/html/_static/fonts/Lato/lato-italic.woff +0 -0
- materforge-0.5.5/docs/_build/html/_static/fonts/Lato/lato-italic.woff2 +0 -0
- materforge-0.5.5/docs/_build/html/_static/fonts/Lato/lato-regular.eot +0 -0
- materforge-0.5.5/docs/_build/html/_static/fonts/Lato/lato-regular.ttf +0 -0
- materforge-0.5.5/docs/_build/html/_static/fonts/Lato/lato-regular.woff +0 -0
- materforge-0.5.5/docs/_build/html/_static/fonts/Lato/lato-regular.woff2 +0 -0
- materforge-0.5.5/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot +0 -0
- materforge-0.5.5/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf +0 -0
- materforge-0.5.5/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff +0 -0
- materforge-0.5.5/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 +0 -0
- materforge-0.5.5/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot +0 -0
- materforge-0.5.5/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf +0 -0
- materforge-0.5.5/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff +0 -0
- materforge-0.5.5/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 +0 -0
- materforge-0.5.5/docs/_build/html/_static/jquery.js +2 -0
- materforge-0.5.5/docs/_build/html/_static/js/badge_only.js +1 -0
- materforge-0.5.5/docs/_build/html/_static/js/theme.js +1 -0
- materforge-0.5.5/docs/_build/html/_static/js/versions.js +228 -0
- materforge-0.5.5/docs/_build/html/_static/language_data.js +192 -0
- materforge-0.5.5/docs/_build/html/_static/minus.png +0 -0
- materforge-0.5.5/docs/_build/html/_static/plus.png +0 -0
- materforge-0.5.5/docs/_build/html/_static/pygments.css +75 -0
- materforge-0.5.5/docs/_build/html/_static/searchtools.js +632 -0
- materforge-0.5.5/docs/_build/html/_static/sphinx_highlight.js +154 -0
- materforge-0.5.5/docs/_build/html/explanation/design_philosophy.html +488 -0
- materforge-0.5.5/docs/_build/html/explanation/material_properties.html +433 -0
- materforge-0.5.5/docs/_build/html/genindex.html +396 -0
- materforge-0.5.5/docs/_build/html/how-to/define_materials.html +667 -0
- materforge-0.5.5/docs/_build/html/how-to/energy_temperature_conversion.html +203 -0
- materforge-0.5.5/docs/_build/html/index.html +404 -0
- materforge-0.5.5/docs/_build/html/objects.inv +0 -0
- materforge-0.5.5/docs/_build/html/py-modindex.html +149 -0
- materforge-0.5.5/docs/_build/html/reference/api/material.html +406 -0
- materforge-0.5.5/docs/_build/html/reference/api.html +2701 -0
- materforge-0.5.5/docs/_build/html/reference/yaml_schema.html +389 -0
- materforge-0.5.5/docs/_build/html/search.html +129 -0
- materforge-0.5.5/docs/_build/html/searchindex.js +1 -0
- materforge-0.5.5/docs/_build/html/tutorials/first_simulation.html +278 -0
- materforge-0.5.5/docs/_build/html/tutorials/getting_started.html +238 -0
- materforge-0.5.5/docs/conf.py +72 -0
- materforge-0.5.5/docs/explanation/design_philosophy.md +234 -0
- materforge-0.5.5/docs/explanation/material_properties.md +240 -0
- materforge-0.5.5/docs/how-to/define_materials.md +518 -0
- materforge-0.5.5/docs/how-to/energy_temperature_conversion.md +70 -0
- materforge-0.5.5/docs/index.rst +60 -0
- materforge-0.5.5/docs/reference/api/material.md +275 -0
- materforge-0.5.5/docs/reference/api.rst +60 -0
- materforge-0.5.5/docs/reference/yaml_schema.md +197 -0
- materforge-0.5.5/docs/requirements.txt +5 -0
- materforge-0.5.5/docs/tutorials/first_simulation.md +143 -0
- materforge-0.5.5/docs/tutorials/getting_started.md +117 -0
- materforge-0.5.5/examples/__init__.py +0 -0
- materforge-0.5.5/examples/material_properties_demo.py +467 -0
- materforge-0.5.5/examples/modular_demo.py +725 -0
- materforge-0.5.5/pyproject.toml +117 -0
- materforge-0.5.5/setup.cfg +4 -0
- materforge-0.5.5/src/materforge/__init__.py +96 -0
- materforge-0.5.5/src/materforge/_version.py +21 -0
- materforge-0.5.5/src/materforge/algorithms/__init__.py +20 -0
- materforge-0.5.5/src/materforge/algorithms/interpolation.py +105 -0
- materforge-0.5.5/src/materforge/algorithms/piecewise_builder.py +266 -0
- materforge-0.5.5/src/materforge/algorithms/piecewise_inverter.py +223 -0
- materforge-0.5.5/src/materforge/algorithms/regression_processor.py +186 -0
- materforge-0.5.5/src/materforge/core/__init__.py +21 -0
- materforge-0.5.5/src/materforge/core/elements.py +100 -0
- materforge-0.5.5/src/materforge/core/exceptions.py +28 -0
- materforge-0.5.5/src/materforge/core/materials.py +441 -0
- materforge-0.5.5/src/materforge/core/symbol_registry.py +33 -0
- materforge-0.5.5/src/materforge/data/__init__.py +25 -0
- materforge-0.5.5/src/materforge/data/constants/__init__.py +11 -0
- materforge-0.5.5/src/materforge/data/constants/physical_constants.py +115 -0
- materforge-0.5.5/src/materforge/data/constants/processing_constants.py +54 -0
- materforge-0.5.5/src/materforge/data/elements/__init__.py +14 -0
- materforge-0.5.5/src/materforge/data/elements/element_data.py +186 -0
- materforge-0.5.5/src/materforge/data/materials/__init__.py +14 -0
- materforge-0.5.5/src/materforge/data/materials/alloys/1.4301/1.4301.xlsx +0 -0
- materforge-0.5.5/src/materforge/data/materials/alloys/1.4301/1.4301.yaml +167 -0
- materforge-0.5.5/src/materforge/data/materials/alloys/1.4301/__init__.py +0 -0
- materforge-0.5.5/src/materforge/data/materials/alloys/1.4301/materforge_plots/1.4301_properties_20250730_155031.png +0 -0
- materforge-0.5.5/src/materforge/data/materials/alloys/1.4301/materforge_plots/1.4301_properties_20250730_155046.png +0 -0
- materforge-0.5.5/src/materforge/data/materials/alloys/1.4301/materforge_plots/1.4301_properties_20250730_155233.png +0 -0
- materforge-0.5.5/src/materforge/data/materials/alloys/1.4301/materforge_plots/1.4301_properties_20250730_155251.png +0 -0
- materforge-0.5.5/src/materforge/data/materials/alloys/__init__.py +14 -0
- materforge-0.5.5/src/materforge/data/materials/pure_metals/Al/Al.yaml +147 -0
- materforge-0.5.5/src/materforge/data/materials/pure_metals/Al/__init__.py +0 -0
- materforge-0.5.5/src/materforge/data/materials/pure_metals/__init__.py +13 -0
- materforge-0.5.5/src/materforge/parsing/__init__.py +24 -0
- materforge-0.5.5/src/materforge/parsing/api.py +325 -0
- materforge-0.5.5/src/materforge/parsing/config/__init__.py +14 -0
- materforge-0.5.5/src/materforge/parsing/config/material_yaml_parser.py +404 -0
- materforge-0.5.5/src/materforge/parsing/config/yaml_keys.py +66 -0
- materforge-0.5.5/src/materforge/parsing/io/__init__.py +7 -0
- materforge-0.5.5/src/materforge/parsing/io/data_handler.py +289 -0
- materforge-0.5.5/src/materforge/parsing/processors/__init__.py +35 -0
- materforge-0.5.5/src/materforge/parsing/processors/dependency_processor.py +202 -0
- materforge-0.5.5/src/materforge/parsing/processors/post_processor.py +125 -0
- materforge-0.5.5/src/materforge/parsing/processors/property_handlers.py +210 -0
- materforge-0.5.5/src/materforge/parsing/processors/property_processor.py +135 -0
- materforge-0.5.5/src/materforge/parsing/processors/property_processor_base.py +247 -0
- materforge-0.5.5/src/materforge/parsing/processors/temperature_resolver.py +463 -0
- materforge-0.5.5/src/materforge/parsing/utils/__init__.py +9 -0
- materforge-0.5.5/src/materforge/parsing/utils/utilities.py +65 -0
- materforge-0.5.5/src/materforge/parsing/validation/__init__.py +17 -0
- materforge-0.5.5/src/materforge/parsing/validation/array_validator.py +45 -0
- materforge-0.5.5/src/materforge/parsing/validation/errors.py +30 -0
- materforge-0.5.5/src/materforge/parsing/validation/property_type_detector.py +238 -0
- materforge-0.5.5/src/materforge/parsing/validation/property_validator.py +44 -0
- materforge-0.5.5/src/materforge/py.typed +0 -0
- materforge-0.5.5/src/materforge/visualization/__init__.py +7 -0
- materforge-0.5.5/src/materforge/visualization/plotters.py +378 -0
- materforge-0.5.5/src/materforge.egg-info/SOURCES.txt +190 -0
- materforge-0.5.5/sync-repos.sh +12 -0
- materforge-0.5.5/update-docs.sh +32 -0
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
name: CI/CD Pipeline
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [ main, develop ]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [ main ]
|
|
8
|
+
release:
|
|
9
|
+
types: [published]
|
|
10
|
+
|
|
11
|
+
jobs:
|
|
12
|
+
test:
|
|
13
|
+
runs-on: ${{ matrix.os }}
|
|
14
|
+
strategy:
|
|
15
|
+
matrix:
|
|
16
|
+
os: [ubuntu-latest, windows-latest, macos-latest]
|
|
17
|
+
python-version: ["3.10", "3.11", "3.12"]
|
|
18
|
+
|
|
19
|
+
steps:
|
|
20
|
+
- uses: actions/checkout@v4 # Updated to v4
|
|
21
|
+
|
|
22
|
+
- name: Set up Python ${{ matrix.python-version }}
|
|
23
|
+
uses: actions/setup-python@v4
|
|
24
|
+
with:
|
|
25
|
+
python-version: ${{ matrix.python-version }}
|
|
26
|
+
|
|
27
|
+
- name: Install dependencies
|
|
28
|
+
run: |
|
|
29
|
+
python -m pip install --upgrade pip
|
|
30
|
+
pip install -e .
|
|
31
|
+
pip install pytest pytest-cov pytest-xdist
|
|
32
|
+
|
|
33
|
+
- name: Run tests
|
|
34
|
+
run: |
|
|
35
|
+
pytest tests/ --cov=materforge --cov-report=xml -v -m "not slow"
|
|
36
|
+
|
|
37
|
+
- name: Upload coverage reports
|
|
38
|
+
uses: codecov/codecov-action@v3
|
|
39
|
+
if: matrix.os == 'ubuntu-latest' && matrix.python-version == '3.10'
|
|
40
|
+
|
|
41
|
+
build:
|
|
42
|
+
runs-on: ubuntu-latest
|
|
43
|
+
needs: test
|
|
44
|
+
|
|
45
|
+
steps:
|
|
46
|
+
- uses: actions/checkout@v4 # Updated to v4
|
|
47
|
+
with:
|
|
48
|
+
fetch-depth: 0 # For setuptools_scm
|
|
49
|
+
|
|
50
|
+
- name: Set up Python
|
|
51
|
+
uses: actions/setup-python@v4
|
|
52
|
+
with:
|
|
53
|
+
python-version: "3.10"
|
|
54
|
+
|
|
55
|
+
- name: Build package
|
|
56
|
+
run: |
|
|
57
|
+
python -m pip install --upgrade pip build twine
|
|
58
|
+
python -m build
|
|
59
|
+
twine check dist/*
|
|
60
|
+
|
|
61
|
+
- name: Upload artifacts
|
|
62
|
+
uses: actions/upload-artifact@v4 # Updated to v4
|
|
63
|
+
with:
|
|
64
|
+
name: packages
|
|
65
|
+
path: dist/
|
|
66
|
+
|
|
67
|
+
publish:
|
|
68
|
+
runs-on: ubuntu-latest
|
|
69
|
+
needs: build
|
|
70
|
+
if: github.event_name == 'release' && github.event.action == 'published'
|
|
71
|
+
|
|
72
|
+
steps:
|
|
73
|
+
- name: Download artifacts
|
|
74
|
+
uses: actions/download-artifact@v4 # Updated to v4
|
|
75
|
+
with:
|
|
76
|
+
name: packages
|
|
77
|
+
path: dist/
|
|
78
|
+
|
|
79
|
+
- name: Publish to PyPI
|
|
80
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
81
|
+
with:
|
|
82
|
+
password: ${{ secrets.PYPI_API_TOKEN }}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Read the Docs configuration file for materforge
|
|
2
|
+
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
|
|
3
|
+
|
|
4
|
+
version: 2
|
|
5
|
+
|
|
6
|
+
# Set the OS, Python version and other tools you might need
|
|
7
|
+
build:
|
|
8
|
+
os: ubuntu-22.04
|
|
9
|
+
tools:
|
|
10
|
+
python: "3.10"
|
|
11
|
+
|
|
12
|
+
# Build documentation in the docs/ directory with Sphinx
|
|
13
|
+
sphinx:
|
|
14
|
+
configuration: docs/conf.py
|
|
15
|
+
fail_on_warning: false
|
|
16
|
+
|
|
17
|
+
# Optionally build your docs in additional formats such as PDF and ePub
|
|
18
|
+
formats:
|
|
19
|
+
- pdf
|
|
20
|
+
- epub
|
|
21
|
+
|
|
22
|
+
# Optional but recommended, declare the Python requirements required
|
|
23
|
+
# to build your documentation
|
|
24
|
+
python:
|
|
25
|
+
install:
|
|
26
|
+
- method: pip
|
|
27
|
+
path: .
|
|
28
|
+
extra_requirements:
|
|
29
|
+
- docs
|
|
30
|
+
- requirements: docs/requirements.txt
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to MaterForge will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [0.5.0] - 2025-07-30
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
- Complete rebranding from PyMatLib to MaterForge
|
|
12
|
+
- Materials Analysis & Transformation Engine functionality
|
|
13
|
+
- Enhanced symbolic computation with SymPy integration
|
|
14
|
+
- Comprehensive material property modeling
|
|
15
|
+
- Piecewise function building and regression capabilities
|
|
16
|
+
- Property visualization and plotting tools
|
|
17
|
+
- YAML-based material configuration system
|
|
18
|
+
- Support for pure metals and alloys
|
|
19
|
+
- Temperature-dependent property evaluation
|
|
20
|
+
|
|
21
|
+
### Changed
|
|
22
|
+
- Package name: `pymatlib` β `materforge`
|
|
23
|
+
- Import statements: `from pymatlib` β `from materforge`
|
|
24
|
+
- Repository structure and naming conventions
|
|
25
|
+
- Enhanced error handling and validation
|
|
26
|
+
- Improved logging and debugging capabilities
|
|
27
|
+
|
|
28
|
+
### Fixed
|
|
29
|
+
- NumPy float64 compatibility issues with SymPy
|
|
30
|
+
- Property interpolation edge cases
|
|
31
|
+
- Temperature validation and bounds checking
|
|
32
|
+
- Dependency resolution for computed properties
|
|
33
|
+
|
|
34
|
+
### Breaking Changes
|
|
35
|
+
- Package name changed from `pymatlib` to `materforge`
|
|
36
|
+
- All import statements must be updated
|
|
37
|
+
- Installation command: `pip install materforge`
|
|
38
|
+
|
|
39
|
+
### Migration Guide
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
# Old way
|
|
44
|
+
|
|
45
|
+
from pymatlib.parsing.api import create_material
|
|
46
|
+
material = create_material('steel.yaml', T)
|
|
47
|
+
|
|
48
|
+
# New way
|
|
49
|
+
|
|
50
|
+
from materforge.parsing.api import create_material
|
|
51
|
+
material = create_material('steel.yaml', T)
|
|
52
|
+
|
|
53
|
+
```
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
cff-version: 1.2.0
|
|
2
|
+
message: "If you use this software, please cite it as below."
|
|
3
|
+
authors:
|
|
4
|
+
- family-names: "Doshi"
|
|
5
|
+
given-names: "Rahil Miten"
|
|
6
|
+
email: "rahil.doshi@fau.de"
|
|
7
|
+
affiliation: "Friedrich-Alexander-UniversitΓ€t Erlangen-NΓΌrnberg"
|
|
8
|
+
orcid: "https://orcid.org/0009-0008-3570-9841"
|
|
9
|
+
title: "MaterForge: A Python Library for Temperature-Dependent Materials Property Modeling"
|
|
10
|
+
version: "0.5.5"
|
|
11
|
+
date-released: "2025-07-30"
|
|
12
|
+
url: "https://i10git.cs.fau.de/rahil.doshi/materforge"
|
|
13
|
+
repository-code: "https://i10git.cs.fau.de/rahil.doshi/materforge"
|
|
14
|
+
license: "BSD-3-Clause"
|
|
15
|
+
abstract: "A high-performance Python library for material simulation and analysis with a focus on temperature-dependent properties. MaterForge enables efficient modeling of pure metals and alloys through YAML configuration files, providing symbolic and numerical property evaluation for various material properties."
|
|
16
|
+
keywords:
|
|
17
|
+
- "materials science"
|
|
18
|
+
- "thermophysical properties"
|
|
19
|
+
- "temperature-dependent"
|
|
20
|
+
- "python"
|
|
21
|
+
- "simulation"
|
|
22
|
+
- "yaml"
|
|
23
|
+
- "symbolic mathematics"
|
|
24
|
+
- "piecewise functions"
|
|
25
|
+
type: "software"
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
# Contributing to MaterForge
|
|
2
|
+
|
|
3
|
+
Thank you for your interest in contributing to MaterForge!
|
|
4
|
+
We welcome contributions from the community and appreciate your help in making this project better.
|
|
5
|
+
|
|
6
|
+
## Getting Started
|
|
7
|
+
|
|
8
|
+
### Prerequisites
|
|
9
|
+
- Python 3.10 or higher
|
|
10
|
+
- Git
|
|
11
|
+
- Basic knowledge of Python and scientific computing
|
|
12
|
+
|
|
13
|
+
### Development Setup
|
|
14
|
+
|
|
15
|
+
1. Fork the repository on GitLab
|
|
16
|
+
2. Clone your fork locally:
|
|
17
|
+
```bash
|
|
18
|
+
git clone https://i10git.cs.fau.de/your-username/materforge.git
|
|
19
|
+
cd materforge
|
|
20
|
+
```
|
|
21
|
+
3. Create a virtual environment and install dependencies:
|
|
22
|
+
```bash
|
|
23
|
+
python -m venv venv
|
|
24
|
+
source venv/bin/activate # On Windows: venv\Scripts\activate
|
|
25
|
+
pip install -e .[dev]
|
|
26
|
+
```
|
|
27
|
+
4. Install pre-commit hooks:
|
|
28
|
+
```bash
|
|
29
|
+
pre-commit install
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Making Changes
|
|
33
|
+
|
|
34
|
+
### Branch Naming
|
|
35
|
+
- Use descriptive branch names: `feature/add-new-property`, `fix/temperature-calculation`, `docs/update-readme`
|
|
36
|
+
- Use prefixes: `feature/`, `fix/`, `docs/`, `refactor/`, `test/`
|
|
37
|
+
|
|
38
|
+
### Development Workflow
|
|
39
|
+
1. Create a new branch from `master`:
|
|
40
|
+
```bash
|
|
41
|
+
git checkout master
|
|
42
|
+
git pull origin master
|
|
43
|
+
git checkout -b feature/your-feature-name
|
|
44
|
+
```
|
|
45
|
+
2. Make your changes and test your changes thoroughly
|
|
46
|
+
3. Commit your changes with clear messages
|
|
47
|
+
4. Push to your fork and create a merge request
|
|
48
|
+
|
|
49
|
+
## Testing
|
|
50
|
+
|
|
51
|
+
### Running Tests
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
# Run all tests
|
|
55
|
+
pytest
|
|
56
|
+
|
|
57
|
+
# Run specific categories
|
|
58
|
+
pytest tests/unit/
|
|
59
|
+
pytest tests/integration/
|
|
60
|
+
pytest tests/performance/
|
|
61
|
+
|
|
62
|
+
# Run with coverage
|
|
63
|
+
pytest --cov=src/materforge
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### Code Standards
|
|
67
|
+
Python Style
|
|
68
|
+
- Follow PEP 8 guidelines
|
|
69
|
+
- Use type hints
|
|
70
|
+
- Maximum line length: 120 characters
|
|
71
|
+
- Use descriptive variable names
|
|
72
|
+
|
|
73
|
+
### Quality Tools
|
|
74
|
+
Run before submitting changes:
|
|
75
|
+
```bash
|
|
76
|
+
# Format code
|
|
77
|
+
black src/ tests/
|
|
78
|
+
isort src/ tests/
|
|
79
|
+
|
|
80
|
+
# Check linting
|
|
81
|
+
flake8 src/ tests/
|
|
82
|
+
mypy src/materforge/
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
## Submitting Changes
|
|
86
|
+
|
|
87
|
+
### Merge Request Requirements
|
|
88
|
+
1. Ensure all tests pass
|
|
89
|
+
2. Code follows style guidelines
|
|
90
|
+
3. Update documentation if necessary
|
|
91
|
+
4. Create a merge request with:
|
|
92
|
+
- Clear title and description
|
|
93
|
+
- Reference any related issues
|
|
94
|
+
- List of changes made
|
|
95
|
+
- Testing performed
|
|
96
|
+
|
|
97
|
+
### Merge Request Template
|
|
98
|
+
```markdown
|
|
99
|
+
## Description
|
|
100
|
+
Brief description of changes
|
|
101
|
+
|
|
102
|
+
## Type of Change
|
|
103
|
+
- [ ] Bug fix
|
|
104
|
+
- [ ] New feature
|
|
105
|
+
- [ ] Documentation update
|
|
106
|
+
- [ ] Performance improvement
|
|
107
|
+
|
|
108
|
+
## Testing
|
|
109
|
+
- [ ] Unit tests pass
|
|
110
|
+
- [ ] Integration tests pass
|
|
111
|
+
- [ ] Manual testing performed
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
Thank you for contributing to MaterForge! π
|
materforge-0.5.5/LICENSE
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
BSD 3-Clause License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025, Rahil Miten Doshi, Friedrich-Alexander-UniversitΓ€t Erlangen-NΓΌrnberg
|
|
4
|
+
|
|
5
|
+
Redistribution and use in source and binary forms, with or without
|
|
6
|
+
modification, are permitted provided that the following conditions are met:
|
|
7
|
+
|
|
8
|
+
1. Redistributions of source code must retain the above copyright notice, this
|
|
9
|
+
list of conditions and the following disclaimer.
|
|
10
|
+
|
|
11
|
+
2. Redistributions in binary form must reproduce the above copyright notice,
|
|
12
|
+
this list of conditions and the following disclaimer in the documentation
|
|
13
|
+
and/or other materials provided with the distribution.
|
|
14
|
+
|
|
15
|
+
3. Neither the name of the copyright holder nor the names of its
|
|
16
|
+
contributors may be used to endorse or promote products derived from
|
|
17
|
+
this software without specific prior written permission.
|
|
18
|
+
|
|
19
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
20
|
+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
21
|
+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
22
|
+
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
|
23
|
+
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
24
|
+
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
25
|
+
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
26
|
+
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
27
|
+
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
28
|
+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
include LICENSE
|
|
2
|
+
include README.md
|
|
3
|
+
include AUTHORS.txt
|
|
4
|
+
include pyproject.toml
|
|
5
|
+
include requirements.txt
|
|
6
|
+
|
|
7
|
+
# Include all source code and data files
|
|
8
|
+
graft src
|
|
9
|
+
|
|
10
|
+
# Include documentation
|
|
11
|
+
graft docs
|
|
12
|
+
|
|
13
|
+
# Exclude applications directory - not part of the library
|
|
14
|
+
prune apps
|
|
15
|
+
|
|
16
|
+
# Exclude tests directory - not needed in distribution
|
|
17
|
+
prune tests
|
|
18
|
+
|
|
19
|
+
# Global exclusions - bytecode and cache files
|
|
20
|
+
global-exclude *.py[co]
|
|
21
|
+
global-exclude __pycache__
|
|
22
|
+
global-exclude .DS_Store
|
|
23
|
+
global-exclude *.so
|
|
24
|
+
global-exclude .git*
|
|
25
|
+
global-exclude .pytest_cache
|
|
26
|
+
|
|
27
|
+
# Exclude build artifacts
|
|
28
|
+
prune build
|
|
29
|
+
prune dist
|
|
30
|
+
prune *.egg-info
|
|
31
|
+
prune src/*.egg-info
|
|
32
|
+
|
|
33
|
+
# Exclude IDE and editor files
|
|
34
|
+
global-exclude .vscode
|
|
35
|
+
global-exclude .idea
|
|
36
|
+
global-exclude *.swp
|
|
37
|
+
global-exclude *.swo
|
|
38
|
+
global-exclude *~
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: materforge
|
|
3
|
+
Version: 0.5.5
|
|
4
|
+
Summary: A high-performance Python library for material simulation and analysis
|
|
5
|
+
Author-email: Rahil Doshi <rahil.doshi@fau.de>
|
|
6
|
+
Maintainer-email: Rahil Doshi <rahil.doshi@fau.de>
|
|
7
|
+
Project-URL: Homepage, https://github.com/rahildoshi97/materforge
|
|
8
|
+
Project-URL: Repository, https://github.com/rahildoshi97/materforge
|
|
9
|
+
Project-URL: Bug Tracker, https://github.com/rahildoshi97/materforge/issues
|
|
10
|
+
Project-URL: Documentation, https://materforge.readthedocs.io
|
|
11
|
+
Project-URL: Changelog, https://github.com/rahildoshi97/materforge/blob/main/CHANGELOG.md
|
|
12
|
+
Project-URL: GitLab Mirror, https://i10git.cs.fau.de/rahil.doshi/materforge
|
|
13
|
+
Keywords: materials,thermophysical,properties,yaml,scientific-computing,piecewise,regression,sympy
|
|
14
|
+
Classifier: Development Status :: 4 - Beta
|
|
15
|
+
Classifier: Intended Audience :: Science/Research
|
|
16
|
+
Classifier: Intended Audience :: Developers
|
|
17
|
+
Classifier: License :: OSI Approved :: BSD License
|
|
18
|
+
Classifier: Operating System :: OS Independent
|
|
19
|
+
Classifier: Programming Language :: Python :: 3
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
23
|
+
Classifier: Topic :: Scientific/Engineering :: Physics
|
|
24
|
+
Classifier: Topic :: Scientific/Engineering
|
|
25
|
+
Requires-Python: >=3.10
|
|
26
|
+
Description-Content-Type: text/markdown
|
|
27
|
+
License-File: LICENSE
|
|
28
|
+
Requires-Dist: numpy<3.0.0,>=1.20.0
|
|
29
|
+
Requires-Dist: sympy<2.0.0,>=1.9.0
|
|
30
|
+
Requires-Dist: scipy<2.0.0,>=1.7.0
|
|
31
|
+
Requires-Dist: matplotlib<4.0.0,>=3.5.0
|
|
32
|
+
Requires-Dist: ruamel.yaml<1.0.0,>=0.17.0
|
|
33
|
+
Requires-Dist: pandas<3.0.0,>=1.4.0
|
|
34
|
+
Requires-Dist: openpyxl>=3.1.5
|
|
35
|
+
Requires-Dist: pwlf<3.0.0,>=2.5.1
|
|
36
|
+
Provides-Extra: dev
|
|
37
|
+
Requires-Dist: pytest>=7.0.0; extra == "dev"
|
|
38
|
+
Requires-Dist: pytest-xdist>=3.0.0; extra == "dev"
|
|
39
|
+
Requires-Dist: pytest-mock>=3.10.0; extra == "dev"
|
|
40
|
+
Requires-Dist: hypothesis>=6.0.0; extra == "dev"
|
|
41
|
+
Requires-Dist: black>=23.0.0; extra == "dev"
|
|
42
|
+
Requires-Dist: isort>=5.12.0; extra == "dev"
|
|
43
|
+
Requires-Dist: flake8>=6.0.0; extra == "dev"
|
|
44
|
+
Requires-Dist: mypy>=1.0.0; extra == "dev"
|
|
45
|
+
Requires-Dist: pre-commit>=3.0.0; extra == "dev"
|
|
46
|
+
Requires-Dist: ruff>=0.1.0; extra == "dev"
|
|
47
|
+
Provides-Extra: test
|
|
48
|
+
Requires-Dist: pytest>=7.0.0; extra == "test"
|
|
49
|
+
Requires-Dist: pytest-xdist>=3.0.0; extra == "test"
|
|
50
|
+
Requires-Dist: pytest-mock>=3.10.0; extra == "test"
|
|
51
|
+
Requires-Dist: hypothesis>=6.0.0; extra == "test"
|
|
52
|
+
Requires-Dist: pytest-benchmark>=4.0.0; extra == "test"
|
|
53
|
+
Provides-Extra: docs
|
|
54
|
+
Requires-Dist: sphinx>=6.0.0; extra == "docs"
|
|
55
|
+
Requires-Dist: sphinx-rtd-theme>=1.2.0; extra == "docs"
|
|
56
|
+
Requires-Dist: myst-parser>=1.0.0; extra == "docs"
|
|
57
|
+
Requires-Dist: sphinx-autodoc-typehints>=1.20.0; extra == "docs"
|
|
58
|
+
Requires-Dist: sphinx-copybutton>=0.5.2; extra == "docs"
|
|
59
|
+
Requires-Dist: linkify-it-py>=0.7.1; extra == "docs"
|
|
60
|
+
Provides-Extra: performance
|
|
61
|
+
Requires-Dist: line_profiler>=4.0.0; extra == "performance"
|
|
62
|
+
Requires-Dist: memory_profiler>=0.60.0; extra == "performance"
|
|
63
|
+
Requires-Dist: pytest-benchmark>=4.0.0; extra == "performance"
|
|
64
|
+
Provides-Extra: simulation
|
|
65
|
+
Requires-Dist: pystencils>=1.3.0; extra == "simulation"
|
|
66
|
+
Provides-Extra: all
|
|
67
|
+
Requires-Dist: materforge[dev,docs,performance,simulation,test]; extra == "all"
|
|
68
|
+
Dynamic: license-file
|
|
69
|
+
|
|
70
|
+
# MaterForge - Materials Formulation Engine with Python
|
|
71
|
+
|
|
72
|
+
A high-performance Python library for material simulation and analysis. MaterForge enables efficient modeling of pure metals and alloys through YAML configuration files, providing symbolic and numerical property evaluation for various material properties.
|
|
73
|
+
|
|
74
|
+
[](https://www.python.org/downloads/)
|
|
75
|
+
[](https://i10git.cs.fau.de/rahil.doshi/materforge/-/releases)
|
|
76
|
+
[](LICENSE)
|
|
77
|
+
[](https://materforge.readthedocs.io/en/latest/?badge=latest)
|
|
78
|
+
[](https://i10git.cs.fau.de/rahil.doshi/materforge/-/pipelines)
|
|
79
|
+
[](https://i10git.cs.fau.de/rahil.doshi/materforge/-/commits/master)
|
|
80
|
+
|
|
81
|
+
## Table of Contents
|
|
82
|
+
- [Key Features](#-key-features)
|
|
83
|
+
- [Installation](#-installation)
|
|
84
|
+
- [Quick Sart](#-quick-start)
|
|
85
|
+
- [YAML Configuration Format](#-yaml-configuration-format)
|
|
86
|
+
- [Documentation](#-documentation)
|
|
87
|
+
- [Contributing](#-contributing)
|
|
88
|
+
- [Known Limitations](#-known-limitations)
|
|
89
|
+
- [License](#-license)
|
|
90
|
+
- [Citation](#-citation)
|
|
91
|
+
- [Support](#-support)
|
|
92
|
+
- [Acknowledgments](#-acknowledgments)
|
|
93
|
+
|
|
94
|
+
## π Key Features
|
|
95
|
+
- **Modular Architecture**: Clean separation with algorithms, parsing, and visualization modules
|
|
96
|
+
- **Flexible Material Definition**: Support for both pure metals and alloys
|
|
97
|
+
- **YAML-Driven Configuration**: Define materials using intuitive YAML files
|
|
98
|
+
- **Temperature-Dependent Properties**: Support for complex temperature-dependent material properties
|
|
99
|
+
- **Symbolic Mathematics**: Built on SymPy for precise mathematical expressions
|
|
100
|
+
- **Piecewise Functions**: Advanced piecewise function support with regression capabilities
|
|
101
|
+
- **Property Inversion**: Create inverse functions for energy density and other properties
|
|
102
|
+
- **Visualization**: Automatic plotting of material properties with customizable options
|
|
103
|
+
- **Material Types**: Support for both pure metals and alloys with appropriate phase transition temperatures
|
|
104
|
+
- **Multiple Property Types**: Support for constants, step functions, file-based data, key-value pairs, and computed properties
|
|
105
|
+
- **Regression Analysis**: Built-in piecewise linear fitting with configurable parameters
|
|
106
|
+
|
|
107
|
+
## π¦ Installation
|
|
108
|
+
### Prerequisites
|
|
109
|
+
- Python 3.10 or higher
|
|
110
|
+
- Required dependencies: `numpy`, `sympy`, `matplotlib`, `pandas`, `ruamel.yaml`
|
|
111
|
+
|
|
112
|
+
### Install from Git Repository
|
|
113
|
+
```
|
|
114
|
+
pip install "git+https://i10git.cs.fau.de/rahil.doshi/materforge.git"
|
|
115
|
+
```
|
|
116
|
+
### Development Installation
|
|
117
|
+
```bash
|
|
118
|
+
git clone https://i10git.cs.fau.de/rahil.doshi/materforge.git
|
|
119
|
+
cd materforge
|
|
120
|
+
pip install -e .[dev]
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
## π Quick Start
|
|
124
|
+
### Basic Material Creation
|
|
125
|
+
|
|
126
|
+
```python
|
|
127
|
+
import sympy as sp
|
|
128
|
+
from materforge.parsing.api import create_material
|
|
129
|
+
|
|
130
|
+
# Create a material with symbolic temperature
|
|
131
|
+
T = sp.Symbol('T')
|
|
132
|
+
material_T = create_material('path/to/material.yaml', T)
|
|
133
|
+
|
|
134
|
+
# Create a material at specific temperature
|
|
135
|
+
material_500 = create_material('path/to/material.yaml', 500.0)
|
|
136
|
+
|
|
137
|
+
# Access properties
|
|
138
|
+
print(f"Heat capacity: {material_T.heat_capacity}")
|
|
139
|
+
print(f"Density: {material_500.density}")
|
|
140
|
+
|
|
141
|
+
# Evaluate at specific temperature
|
|
142
|
+
temp_value = 1500.0 # Kelvin
|
|
143
|
+
density_at_temp = float(material_T.density.subs(T, temp_value))
|
|
144
|
+
print(f"Density at {temp_value}K: {density_at_temp:.2f} kg/mΒ³")
|
|
145
|
+
|
|
146
|
+
# For numerical evaluation (no plots generated)
|
|
147
|
+
material_800 = create_material('aluminum.yaml', 800.0)
|
|
148
|
+
|
|
149
|
+
# For symbolic expressions with automatic plotting
|
|
150
|
+
material_with_plot = create_material('steel.yaml', T, enable_plotting=True)
|
|
151
|
+
```
|
|
152
|
+
### Working with Piecewise Inverse Functions
|
|
153
|
+
|
|
154
|
+
```python
|
|
155
|
+
from materforge.algorithms.piecewise_inverter import PiecewiseInverter
|
|
156
|
+
|
|
157
|
+
# Create inverse energy density function: T = f_inv(E)
|
|
158
|
+
if hasattr(material, 'energy_density'):
|
|
159
|
+
E = sp.Symbol('E')
|
|
160
|
+
inverse_func = PiecewiseInverter.create_energy_density_inverse(material, 'E')
|
|
161
|
+
|
|
162
|
+
# Test round-trip accuracy
|
|
163
|
+
test_temp = 500.0
|
|
164
|
+
energy_val = float(material.energy_density.subs(T, test_temp))
|
|
165
|
+
recovered_temp = float(inverse_func.subs(E, energy_val))
|
|
166
|
+
print(f"Round-trip: T={test_temp} -> E={energy_val:.2e} -> T={recovered_temp:.2f}")
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
## π YAML Configuration Format
|
|
170
|
+
### Supported Property Types
|
|
171
|
+
- **CONSTANT_VALUE**: Simple numeric values
|
|
172
|
+
- **FILE_IMPORT**: Data loaded from CSV/Excel/text files
|
|
173
|
+
- **TABULAR_DATA**: Temperature and corresponding property value pairs
|
|
174
|
+
- **STEP_FUNCTION**: Discontinuous transitions
|
|
175
|
+
- **PIECEWISE_EQUATION**: Symbolic equations over temperature ranges
|
|
176
|
+
- **COMPUTED_PROPERTY**: Properties calculated from other properties
|
|
177
|
+
|
|
178
|
+
See [the YAML schema documentation](docs/reference/yaml_schema.md) for detailed configuration options.
|
|
179
|
+
YAML configuration examples can be found here:
|
|
180
|
+
- [Pure Metals](src/materforge/data/materials/pure_metals/Al/Al.yaml)
|
|
181
|
+
- [Alloys](src/materforge/data/materials/alloys/1.4301/1.4301.yaml)
|
|
182
|
+
|
|
183
|
+
## π Documentation
|
|
184
|
+
Our documentation follows the _DiΓ‘taxis_ framework with four distinct types:
|
|
185
|
+
### Tutorials - Learning-oriented guides
|
|
186
|
+
- [Getting Started with materforge](docs/tutorials/getting_started.md)
|
|
187
|
+
- [Creating Your First Material Simulation](docs/tutorials/first_simulation.md)
|
|
188
|
+
### How-to Guides - Problem-oriented instructions
|
|
189
|
+
- [Defining Custom Material Properties](docs/how-to/define_materials.md)
|
|
190
|
+
- [Converting Between Energy Density and Temperature](docs/how-to/energy_temperature_conversion.md)
|
|
191
|
+
### Reference - Information-oriented documentation
|
|
192
|
+
- [API Reference](docs/reference/api)
|
|
193
|
+
- [YAML Configuration Schema](docs/reference/yaml_schema.md)
|
|
194
|
+
### Explanation - Understanding-oriented discussions
|
|
195
|
+
- [Material Properties Concepts](docs/explanation/material_properties.md)
|
|
196
|
+
- [Design Philosophy](docs/explanation/design_philosophy.md)
|
|
197
|
+
|
|
198
|
+
## π€ Contributing
|
|
199
|
+
Contributions are welcome! Please see our [Contributing Guide](CONTRIBUTING.md) for details on how to get started.
|
|
200
|
+
|
|
201
|
+
## π Known Limitations
|
|
202
|
+
- **Piecewise Inverter**: Currently supports only linear piecewise functions
|
|
203
|
+
- **File Formats**: Limited to CSV, Excel, and text files
|
|
204
|
+
- **Memory Usage**: Large datasets may require optimization for very high-resolution data
|
|
205
|
+
- **Regression**: Maximum 8 segments recommended for stability
|
|
206
|
+
|
|
207
|
+
## π License
|
|
208
|
+
This project is licensed under the BSD 3-Clause License. See the [LICENSE](LICENSE) file for details.
|
|
209
|
+
|
|
210
|
+
## π Citation
|
|
211
|
+
If you use MaterForge in your research, please cite it using the information in our [CITATION.cff](CITATION.cff) file.
|
|
212
|
+
|
|
213
|
+
## π Support
|
|
214
|
+
- **Author**: Rahil Doshi
|
|
215
|
+
- **Email**: rahil.doshi@fau.de
|
|
216
|
+
- **Project Homepage**: [materforge](https://i10git.cs.fau.de/rahil.doshi/materforge)
|
|
217
|
+
- **Bug Tracker**: [Issues](https://i10git.cs.fau.de/rahil.doshi/materforge/-/issues)
|
|
218
|
+
|
|
219
|
+
## π Acknowledgments
|
|
220
|
+
- Built with [SymPy](https://www.sympy.org/) for symbolic mathematics
|
|
221
|
+
- Data handling powered by [pandas](https://pandas.pydata.org/)
|
|
222
|
+
- Uses [pwlf](https://github.com/cjekel/piecewise_linear_fit_py) for piecewise linear fitting
|
|
223
|
+
- Visualization powered by [Matplotlib](https://matplotlib.org/)
|
|
224
|
+
- YAML parsing with [ruamel.yaml](https://yaml.dev/doc/ruamel.yaml/)
|
|
225
|
+
|
|
226
|
+
#### MaterForge - Empowering material simulation with Python π
|
|
227
|
+
|
|
228
|
+
---
|