materforge
Science Score: 44.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
○Academic publication links
-
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (14.7%) to scientific vocabulary
Repository
Basic Info
- Host: GitHub
- Owner: rahildoshi97
- License: bsd-3-clause
- Language: Python
- Default Branch: master
- Size: 7.45 MB
Statistics
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
- Releases: 0
Metadata Files
README.md
MaterForge - Materials Formulation Engine with Python
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.
Table of Contents
- Key Features
- Installation
- Quick Sart
- YAML Configuration Format
- Documentation
- Contributing
- Known Limitations
- License
- Citation
- Support
- Acknowledgments
🚀 Key Features
- Modular Architecture: Clean separation with algorithms, parsing, and visualization modules
- Flexible Material Definition: Support for both pure metals and alloys
- YAML-Driven Configuration: Define materials using intuitive YAML files
- Temperature-Dependent Properties: Support for complex temperature-dependent material properties
- Symbolic Mathematics: Built on SymPy for precise mathematical expressions
- Piecewise Functions: Advanced piecewise function support with regression capabilities
- Property Inversion: Create inverse functions for energy density and other properties
- Visualization: Automatic plotting of material properties with customizable options
- Material Types: Support for both pure metals and alloys with appropriate phase transition temperatures
- Multiple Property Types: Support for constants, step functions, file-based data, key-value pairs, and computed properties
- Regression Analysis: Built-in piecewise linear fitting with configurable parameters
📦 Installation
Prerequisites
- Python 3.10 or higher
- Required dependencies:
numpy,sympy,matplotlib,pandas,ruamel.yaml
Install using pip
pip install materforge
Development Installation
bash
git clone https://i10git.cs.fau.de/rahil.doshi/materforge.git
cd materforge
pip install -e .[dev]
🏃 Quick Start
Basic Material Creation
```python import sympy as sp from materforge.parsing.api import create_material
Create a material with symbolic temperature
T = sp.Symbol('T') materialT = creatematerial('path/to/material.yaml', T)
Access properties
print(f"Heat capacity: {materialT.heatcapacity}")
Evaluate at specific temperature
tempvalue = 1500.0 # Kelvin densityattemp = materialT.evaluatepropertiesattemperature(tempvalue) print(f"Density at {tempvalue}K: {densityat_temp:.2f} kg/m³")
For symbolic expressions with automatic plotting
materialwithplot = creatematerial('steel.yaml', T, enableplotting=True) ```
Working with Piecewise Inverse Functions
```python from materforge.algorithms.piecewise_inverter import PiecewiseInverter
Create inverse energy density function: T = f_inv(E)
if hasattr(material, 'energydensity'): E = sp.Symbol('E') inversefunc = PiecewiseInverter.createenergydensity_inverse(material, 'E')
# Test round-trip accuracy
test_temp = 500.0
energy_val = float(material.energy_density.subs(T, test_temp))
recovered_temp = float(inverse_func.subs(E, energy_val))
print(f"Round-trip: T={test_temp} -> E={energy_val:.2e} -> T={recovered_temp:.2f}")
```
📋 YAML Configuration Format
Supported Property Types
- CONSTANT_VALUE: Simple numeric values
- FILE_IMPORT: Data loaded from CSV/Excel/text files
- TABULAR_DATA: Temperature and corresponding property value pairs
- STEP_FUNCTION: Discontinuous transitions
- PIECEWISE_EQUATION: Symbolic equations over temperature ranges
- COMPUTED_PROPERTY: Properties calculated from other properties
See the YAML schema documentation for detailed configuration options. YAML configuration examples can be found here: - Pure Metals - Alloys
📚 Documentation
Our documentation follows the Diátaxis framework with four distinct types:
Tutorials - Learning-oriented guides
- Getting Started with materforge
- Creating Your First Material Simulation ### How-to Guides - Problem-oriented instructions
- Defining Custom Material Properties
- Converting Between Energy Density and Temperature ### Reference - Information-oriented documentation
- API Reference
- YAML Configuration Schema ### Explanation - Understanding-oriented discussions
- Material Properties Concepts
- Design Philosophy
🤝 Contributing
Contributions are welcome! Please see our Contributing Guide for details on how to get started.
🐛 Known Limitations
- Piecewise Inverter: Currently supports only linear piecewise functions
- File Formats: Limited to CSV, Excel, and text files
- Memory Usage: Large datasets may require optimization for very high-resolution data
- Regression: Maximum 8 segments recommended for stability
📄 License
This project is licensed under the BSD 3-Clause License. See the LICENSE file for details.
📖 Citation
If you use MaterForge in your research, please cite it using the information in our CITATION.cff file.
📞 Support
- Author: Rahil Doshi
- Email: rahil.doshi@fau.de
- Project Homepage: materforge
- Bug Tracker: Issues
🙏 Acknowledgments
- Built with SymPy for symbolic mathematics
- Data handling powered by pandas
- Uses pwlf for piecewise linear fitting
- Visualization powered by Matplotlib
- YAML parsing with ruamel.yaml
MaterForge - Empowering material simulation with Python 🚀
Owner
- Login: rahildoshi97
- Kind: user
- Repositories: 1
- Profile: https://github.com/rahildoshi97
JOSS Publication
MaterForge: Materials Formulation Engine with Python
Authors
Chair for System Simulation, Friedrich-Alexander-Universität Erlangen-Nürnberg, Germany, Chair of Materials Science and Engineering for Metals, Friedrich-Alexander-Universität Erlangen-Nürnberg, Germany
Tags
materials science symbolic computation scientific computing YAML configuration high-performance computingCitation (CITATION.cff)
cff-version: 1.2.0
message: "If you use this software, please cite it as below."
authors:
- family-names: "Doshi"
given-names: "Rahil Miten"
email: "rahil.doshi@fau.de"
affiliation: "Friedrich-Alexander-Universität Erlangen-Nürnberg"
orcid: "https://orcid.org/0009-0008-3570-9841"
title: "MaterForge: Materials Formulation Engine with Python"
version: "0.6.0"
date-released: "2025-08-20"
url: "https://i10git.cs.fau.de/rahil.doshi/materforge"
repository-code: "https://i10git.cs.fau.de/rahil.doshi/materforge"
license: "BSD-3-Clause"
abstract: "MaterForge is an extensible, open-source Python library that streamlines the definition and use of material properties in numerical simulations. The library converts user-friendly YAML configuration files into symbolic mathematical expressions, supports multiple property definition methods, and automatically resolves dependencies. It is designed for high-performance computing applications and serves as a bridge between experimental data and numerical simulation."
keywords:
- "python"
- "materials science"
- "symbolic computation"
- "scientific computing"
- "YAML configuration"
- "high-performance computing"
- "thermophysical properties"
- "simulation"
- "piecewise functions"
- "material properties"
- "numerical simulation"
- "dependency resolution"
type: "software"
GitHub Events
Total
- Delete event: 8
- Push event: 131
- Create event: 9
Last Year
- Delete event: 8
- Push event: 131
- Create event: 9
Packages
- Total packages: 1
-
Total downloads:
- pypi 512 last-month
- Total dependent packages: 0
- Total dependent repositories: 0
- Total versions: 6
- Total maintainers: 1
pypi.org: materforge
A high-performance Python library for material simulation and analysis
- Homepage: https://github.com/rahildoshi97/materforge
- Documentation: https://materforge.readthedocs.io
- License: BSD 3-Clause License Copyright (c) 2025, Rahil Miten Doshi, Friedrich-Alexander-Universität Erlangen-Nürnberg Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
Latest release: 0.6.0
published 10 months ago
Rankings
Maintainers (1)
Dependencies
- EndBug/add-and-commit v9 composite
- actions/checkout v4 composite
- actions/upload-artifact v4 composite
- openjournals/openjournals-draft-action master composite