Skip to content

Commit

Permalink
Updated JOSS paper.
Browse files Browse the repository at this point in the history
  • Loading branch information
BernardoFerreira committed Jul 5, 2023
1 parent fe81812 commit 9ba3b5e
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 5 deletions.
13 changes: 8 additions & 5 deletions docs/joss_paper/paper.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,19 +29,22 @@ bibliography: references.bib

# Summary

CRATE (Clustering-based Nonlinear Analysis of Materials) is a Python project (package `cratepy`) developed in the context of computational mechanics [@ferreira:2022a] to aid the design and development of new materials. Its main purpose is performing multi-scale nonlinear analyses of heterogeneous materials through a suitable coupling between first-order computational homogenization and clustering-based reduced-order modeling. This means that, given a representative volume element of the material micro-structure and the corresponding material phase properties, `cratepy` computes the material's effective mechanical response under a given loading by leveraging a so-called clustering-based reduced-order model (CROM).
[CRATE](https://github.com/bessagroup/CRATE) (Clustering-based Nonlinear Analysis of Materials) is a Python project (package [`cratepy`](https://pypi.org/project/cratepy/)) developed in the context of computational mechanics [@ferreira:2022a] to aid the design and development of new materials. Its main purpose is performing multi-scale nonlinear analyses of heterogeneous materials through a suitable coupling between first-order computational homogenization and clustering-based reduced-order modeling. This means that, given a representative volume element of the material micro-structure and the corresponding material phase properties, [`cratepy`](https://pypi.org/project/cratepy/) computes the material's effective mechanical response under a given loading by leveraging a so-called clustering-based reduced-order model (CROM).

![Logo of CRATE (`cratepy`). \label{fig:crate_logo_horizontal_long}](crate_logo_horizontal_long.png)
![Logo of CRATE ([`cratepy`](https://pypi.org/project/cratepy/)). \label{fig:crate_logo_horizontal_long}](crate_logo_horizontal_long.png)

# Statement of need

CRATE (Clustering-based Nonlinear Analysis of Materials) is a Python project (package `cratepy`) developed in the field of computational mechanics and material science. To the best of the authors' knowledge, it is a first-of-its-kind open-source software that allows any material development enthusiast to perform multi-scale analyses of materials by taking advantage of the recent family of clustering-based reduced-order models (CROMs). \autoref{fig:crate_conceptual_scheme} provides a simple illustration of a CRATE simulation. It is worth remarking that CRATE is supported by a rich documentation that provides a conceptual overview of the project, clear installation instructions, a step-by-step basic workflow description, and detailed guidelines for advanced customized developments. Moreover, `cratepy` relies solely on a few well-established third-party Python scientific computing packages, such as `numpy` [@harris2020array] and `scipy` [@2020SciPy-NMeth], `cratepy`'s modules are extensively documented, and the automatically generated API provides a complete and updated description of the underlying object-oriented implementation, including LaTeX rendered formulae to improve comprehension.
CRATE (Clustering-based Nonlinear Analysis of Materials) is a Python project (package [`cratepy`](https://pypi.org/project/cratepy/)) developed in the field of computational mechanics and material science. To the best of the authors' knowledge, it is a first-of-its-kind open-source software that allows any material development enthusiast to perform multi-scale analyses of materials by taking advantage of the recent family of clustering-based reduced-order models (CROMs). \autoref{fig:crate_conceptual_scheme} provides a simple illustration of a CRATE simulation. It is worth remarking that CRATE is supported by a rich documentation that provides a conceptual overview of the project, clear installation instructions, a step-by-step basic workflow description, and detailed guidelines for advanced customized developments. Moreover, [`cratepy`](https://pypi.org/project/cratepy/) relies solely on a few well-established third-party Python scientific computing packages, such as [`numpy`](https://pypi.org/project/numpy/) [@harris2020array] and [`scipy`](https://pypi.org/project/scipy/) [@2020SciPy-NMeth], [`cratepy`](https://pypi.org/project/cratepy/)'s modules are extensively documented, and the automatically generated API provides a complete and updated description of the underlying object-oriented implementation, including LaTeX rendered formulae to improve comprehension.

`cratepy` is essentially a numerical tool for any application that requires material multi-scale simulations. Given the intrinsic clustering-based reduced-order modeling approach (e.g., SCA [@liu:2016], ASCA [@ferreira:2022b]), CRATE is mostly useful in applications where the computational cost of standard simulation methods is prohibitive, namely to solve lower-scales in coupled hierarchical multi-scale simulations (e.g., @ferreira:2022a) and to generate large material response databases for data-driven frameworks based on machine learning (e.g., @bessa:2017). CROMs achieve a striking balance between accuracy and computational cost by first performing a clustering-based domain decomposition of the material model and then solving the equilibrium problem formulated over the resulting reduced model. In the particular case of a research environment, `cratepy` is designed to easily accommodate further developments, either by improving the already implemented methods or by including new numerical models and techniques. It also provides all the fundamental means to perform comparisons with alternative methods, both in terms of accuracy and computational cost. In a teaching environment, `cratepy` is a readily available tool for demonstrative purposes and/or academic work proposals in solid mechanics and material-related courses.
`cratepy` is essentially a numerical tool for any application that requires material multi-scale simulations. Given the intrinsic clustering-based reduced-order modeling approach (e.g., SCA [@liu:2016], ASCA [@ferreira:2022b]), CRATE is mostly useful in applications where the computational cost of standard simulation methods is prohibitive, namely to solve lower-scales in coupled hierarchical multi-scale simulations (e.g., @ferreira:2022a) and to generate large material response databases for data-driven frameworks based on machine learning (e.g., @bessa:2017). CROMs achieve a striking balance between accuracy and computational cost by first performing a clustering-based domain decomposition of the material model and then solving the equilibrium problem formulated over the resulting reduced model. In a similar scope, it is worth mentioning the projects [`fibergen`](https://github.com/fospald/fibergen) (@Ospald2019) and [`FFTHomPy`](https://github.com/vondrejc/FFTHomPy) that, although not relying on a clustering-based reduced-order modeling approach, implement homogenization methods to extract effective material parameters.


In the particular case of a research environment, [`cratepy`](https://pypi.org/project/cratepy/) is designed to easily accommodate further developments, either by improving the already implemented methods or by including new numerical models and techniques. It also provides all the fundamental means to perform comparisons with alternative methods, both in terms of accuracy and computational cost. In a teaching environment, [`cratepy`](https://pypi.org/project/cratepy/) is a readily available tool for demonstrative purposes and/or academic work proposals in solid mechanics and material-related courses.

We hope that CRATE contributes effectively to the development of new materials and encourages other researchers to share their own projects.

![Schematic illustration of CRATE (`cratepy`) simulation.\label{fig:crate_conceptual_scheme}](crate_conceptual_scheme.png)
![Schematic illustration of CRATE ([`cratepy`](https://pypi.org/project/cratepy/)) simulation.\label{fig:crate_conceptual_scheme}](crate_conceptual_scheme.png)


# Acknowledgements
Expand Down
12 changes: 12 additions & 0 deletions docs/joss_paper/references.bib
Original file line number Diff line number Diff line change
Expand Up @@ -107,3 +107,15 @@ @article{scikit-learn
pages={2825--2830},
year={2011}
}

@article{Ospald2019,
author = {F. Ospald},
title = {fibergen: An introductory tool for {FFT}-based material homogenization},
year = {2019},
publisher = {The Open Journal},
journal = {Journal of Open Source Software},
volume = {4},
number = {34},
pages = {1027},
doi = {10.21105/joss.01027}
}

0 comments on commit 9ba3b5e

Please sign in to comment.