Skip to main content

Streamlined microstructure modeling - A unified Python framework for materials science and mechanics research

Project description

Materialite (Alpha Release)

License: Apache 2.0 Status

Streamlined Microstructure Modeling for Materials Science and Mechanics

Overview

Materialite is a Python package that aims to integrate the fragmented landscape of microstructure modeling tools into a unified framework for materials science and mechanics research.

Purpose

Researchers in computational materials science currently rely on a patchwork of disconnected tools—MATLAB scripts, Fortran codes, C++ solvers, and various Python libraries—that are often not user-friendly and don't communicate well with each other. Entirely written in Python, Materialite provides:

  • Unified data structure that works across different modeling approaches
  • Streamlined workflows from manufacturing processes to microstructure formation to mechanical properties
  • Simplified interfaces for complex operations like tensor math and crystallography
  • Data exchange with established tools (e.g. DREAM.3D, EVP-FFT)

Current Models

  • Process Models: Grain coarsening, laser heating temperature fields, microstructure evolution from laser melting
  • Mechanical Solvers: Taylor model and small-strain FFT (Fast Fourier Transform) solver for crystal elasticity and plasticity
  • Constitutive Models: Elasticity, rate-independent plasticity, elasto-viscoplasticity with multiple hardening laws

Documentation

Documentation, demos, and examples are available at https://nasa.github.io/materialite.

Installation

⚠️ ALPHA RELEASE: This package is under active development. APIs and interfaces are subject to breaking changes without notice. Not recommended for production use.

Clone and cd into the repository

git clone https://github.com/nasa/materialite.git
cd materialite

Create and activate conda environment

conda env create -f environment.yml
conda activate materialite

Future releases will be available on conda-forge and PyPI.

Simple Example

Run a basic process-structure-property simulation using Materialite.

Import the core Material object, some models, and other required objects for model inputs.

from materialite import Material, Order4SymmetricTensor
from materialite.models import GrainCoarseningModel
from materialite.models.small_strain_fft import SmallStrainFFT, Elastic, LoadSchedule

Create a default material (generates a 16 x 16 x 16 point grid).

material = Material()

Create a model for grain coarsening (GrainCoarseningModel is a Potts Monte Carlo-based model).

grain_coarsening_model = GrainCoarseningModel(num_flip_attempts=10**5)

Run the grain coarsening model, and assign random orientations to the grains in the Material that is returned by the model.

material = grain_coarsening_model(material)
material = material.assign_random_orientations(region_label="grain")

Plot the grain ID values.

material.plot("grain")

png

Create a model that will simulate uniaxial tension (SmallStrainFFT is an FFT-based full-field mechanical simulation).

stiffness = Order4SymmetricTensor.from_cubic_constants(C11=250, C12=150, C44=120)
constant_strain_rate = LoadSchedule.from_constant_uniaxial_strain_rate(
    magnitude=0.001, direction="x"
)
mechanical_model = SmallStrainFFT(
    load_schedule=constant_strain_rate, constitutive_model=Elastic(stiffness=stiffness)
)

Run the model.

material = mechanical_model(material)

Plot the stress field in the loading direction.

material.plot("stress", component=0)

png

Development Status

This alpha release provides basic functionality for microstructure modeling workflows. Internally at NASA, further capabilities exist in the pipeline for release. Development and release priorities depend on community needs and contributor availability.

Contributing

Contributions are welcome! Please see our Contributing Guidelines for more information.

License

© Copyright 2025 United States Government as represented by the Administrator of the National Aeronautics and Space Administration.  All Rights Reserved.

The Materialite platform is licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Contact & Support

Have feedback or found issues? Please use our GitHub issue tracker - we're actively monitoring and responding to user input.

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

materialite-0.1.0.tar.gz (110.1 kB view details)

Uploaded Source

Built Distribution

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

materialite-0.1.0-py3-none-any.whl (98.2 kB view details)

Uploaded Python 3

File details

Details for the file materialite-0.1.0.tar.gz.

File metadata

  • Download URL: materialite-0.1.0.tar.gz
  • Upload date:
  • Size: 110.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.5

File hashes

Hashes for materialite-0.1.0.tar.gz
Algorithm Hash digest
SHA256 4777447a327ee85c874cf4c8cd4b639481d3e3c4a7c685d0331834679f8bc630
MD5 3d93f77204ac5fd4e934f8c51e2f303e
BLAKE2b-256 57011f1edaa95d8480bc96badbe873abacf358ce67f231a24e44b436fbe6da38

See more details on using hashes here.

File details

Details for the file materialite-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: materialite-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 98.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.5

File hashes

Hashes for materialite-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c0e266309a15f10550ee8d0181e941d36f144db1f5d6913452769b3d6fc7f7e2
MD5 50c4b3719fc5e499a03d1f06db907305
BLAKE2b-256 a2a25d6ea1c0b89445b0fe7f16f9236d53c92c47f37c42e463d62601a54c7454

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