heco

A julia package for linear Homogenization using FFT technique with CPU/GPU.

https://github.com/h06e/heco

Science Score: 67.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
    Found 7 DOI reference(s) in README
  • Academic publication links
    Links to: zenodo.org
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (13.2%) to scientific vocabulary

Keywords

mechanical-homogenization
Last synced: 6 months ago · JSON representation ·

Repository

A julia package for linear Homogenization using FFT technique with CPU/GPU.

Basic Info
  • Host: GitHub
  • Owner: h06e
  • License: mit
  • Language: Julia
  • Default Branch: main
  • Homepage:
  • Size: 1.34 MB
Statistics
  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • Open Issues: 0
  • Releases: 0
Topics
mechanical-homogenization
Created 10 months ago · Last pushed 10 months ago
Metadata Files
Readme License Citation

README.md

Heco.jl

DOI

Heco.jl (Homogenization of Elastic COmposite materials) is a Julia package for performing FFT-based linear homogenization of multi-phase elastic materials. It supports both real and complex materials, with efficient implementations for CPU and GPU architectures.

Although Heco.jl is applicable to a wide range of materials, it was initially developed with a focus on unidirectional composites featuring transversely isotropic fibers—such as carbon-fiber-reinforced systems.

If you use Heco.jl in your work, please consider citing the following:

📖 Valmalette, R. (2025). Heco.jl: A Real and Complex CPU–GPU Solver for FFT-Based Linear Homogenization. Zenodo. https://doi.org/10.5281/zenodo.15349930


⚙️ Installation

First, install Julia.

To install Heco.jl, run the following command in the Julia REPL:

julia julia> ]add "https://github.com/h06e/Heco"

[!tip] GPU acceleration requires an NVIDIA GPU with CUDA support. If no compatible GPU is available, the package can still be used via the CPU implementation. Some warning messages may appear when running in CPU-only mode.

📘 Recommendation:
For a complete and interactive walkthrough, download the notebook available at:
examples/basics.ipynb

It presents a full example of using Heco.jl, including microstructure generation, material setup, homogenization, and result visualization.


✨ Features

🧩 Microstructure Generation

Heco.jl includes a basic Representative Volume Element (RVE) generator tailored for continuous fiber composites. The generator uses a particle-based method, which is particularly efficient for high fiber volume fractions.

RVE Generation

🛠️ Material Behavior

The package currently supports linear elastic materials: - Isotropic - Transversely isotropic (with the symmetry axis aligned with the 3rd axis)

Elasticity tensors can be either real or complex-valued. Complex tensors are typically used for modeling viscoelastic behavior in the Laplace-Carson domain.

⚡FFT-Based Solver

The solver is built upon the foundational Moulinec and Suquet (1994) scheme. Its key features include: - Support for strain-controlled or stress-controlled loading (non-mixed modes). - Compatibility with isotropic or transversely isotropic reference media (aligned along the 3rd axis). - Convergence criteria based on the methods of Bellis and Suquet (2019), as well as stress-criteria criteria for stress-controlled loading.

Owner

  • Name: Robin Valmalette
  • Login: h06e
  • Kind: user

Citation (CITATION.bib)

@software{valmalette_2025_15349930,
  author       = {Valmalette, Robin},
  title        = {Heco.jl: A Real and Complex CPU–GPU Solver for
                   FFT-Based Linear Homogenization
                  },
  month        = may,
  year         = 2025,
  publisher    = {Zenodo},
  doi          = {10.5281/zenodo.15349930},
  url          = {https://doi.org/10.5281/zenodo.15349930},
}

GitHub Events

Total
  • Public event: 1
  • Push event: 3
  • Create event: 1
Last Year
  • Public event: 1
  • Push event: 3
  • Create event: 1