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
Last synced: 9 months ago · JSON representation ·

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
Created 11 months ago · Last pushed 9 months ago
Metadata Files
Readme Changelog Contributing License Citation Authors

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.

Python Latest Release License Documentation Status Pipeline Status Code Coverage

Table of Contents

🚀 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

🤝 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

JOSS Publication

MaterForge: Materials Formulation Engine with Python
Published
May 13, 2026
Volume 11, Issue 121, Page 9909
Authors
Rahil Miten Doshi ORCID
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
Harald Koestler ORCID
Chair for System Simulation, Friedrich-Alexander-Universität Erlangen-Nürnberg, Germany, Erlangen National High Performance Computing Center (NHR@FAU), Erlangen, Germany
Matthias Markl ORCID
Chair of Materials Science and Engineering for Metals, Friedrich-Alexander-Universität Erlangen-Nürnberg, Germany
Editor
Sarath Menon ORCID
Tags
materials science symbolic computation scientific computing YAML configuration high-performance computing

Citation (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
  • Versions: 6
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 512 Last month
Rankings
Dependent packages count: 8.8%
Average: 29.0%
Dependent repos count: 49.3%
Maintainers (1)
Last synced: 9 months ago

Dependencies

.github/workflows/compile-paper.yml actions
  • EndBug/add-and-commit v9 composite
  • actions/checkout v4 composite
  • actions/upload-artifact v4 composite
  • openjournals/openjournals-draft-action master composite