diff --git a/docs/source/conf.py b/docs/source/conf.py index 1580a61a..285b2faf 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -138,4 +138,4 @@ html_css_files = ['readthedocs-custom.css', 'theme_overrides.css', ] # Source: https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-html_show_sourcelink -html_show_sourcelink = True +html_show_sourcelink = False diff --git a/docs/source/img/f3dasm_logo_long.png b/docs/source/img/f3dasm_logo_long.png index afc54b8e..369cfadb 100644 Binary files a/docs/source/img/f3dasm_logo_long.png and b/docs/source/img/f3dasm_logo_long.png differ diff --git a/docs/source/rst_doc_files/general/installation.rst b/docs/source/rst_doc_files/general/installation.rst index 43ad5050..dcb2c4b4 100644 --- a/docs/source/rst_doc_files/general/installation.rst +++ b/docs/source/rst_doc_files/general/installation.rst @@ -125,7 +125,7 @@ Building from source is required to work on a contribution (bug fix, new feature 2. Install a recent version of Python (3.7, 3.8, 3.9 or 3.10) - for instance using `Miniconda3 `_. or `Mamba `_. + for instance using `Miniconda3 `_ or `Mamba `_. If you installed Python with conda, we recommend to create a dedicated conda environment with all the build dependencies of f3dasm: diff --git a/docs/source/rst_doc_files/general/overview.rst b/docs/source/rst_doc_files/general/overview.rst index 789a4fe6..00fe78fc 100644 --- a/docs/source/rst_doc_files/general/overview.rst +++ b/docs/source/rst_doc_files/general/overview.rst @@ -49,11 +49,11 @@ Computational framework - Automatic data management - - the framework automatically manages I/O processes, saving you time and effort implementing these common procedures. + - The framework automatically manages I/O processes, saving you time and effort implementing these common procedures. - :doc:`Easy parallelization ` - - the framework manages parallelization of experiments, and is compatible with both local and high-performance cluster computing. + - The framework manages parallelization of experiments, and is compatible with both local and high-performance cluster computing. - :doc:`Built-in defaults ` diff --git a/paper/data-driven-process.png b/paper/data-driven-process.png index 65adf929..c6be6a30 100644 Binary files a/paper/data-driven-process.png and b/paper/data-driven-process.png differ diff --git a/paper/f3dasm_logo_long.png b/paper/f3dasm_logo_long.png index afc54b8e..369cfadb 100644 Binary files a/paper/f3dasm_logo_long.png and b/paper/f3dasm_logo_long.png differ diff --git a/paper/paper.bib b/paper/paper.bib index 7ee0c894..95d73f4e 100644 --- a/paper/paper.bib +++ b/paper/paper.bib @@ -11,4 +11,51 @@ @Article{Bessa2017 doi = {10.1016/j.cma.2017.03.037}, file = {:home/martin/Documents/Mendeley Desktop/Bessa et al. - 2017 - A framework for data-driven analysis of materials under uncertainty Countering the curse of dimensionality.pdf:pdf}, keywords = {Design of experiments, Machine learning and data mining, Plasticity, Reduced order model, Self-consistent clustering analysis}, -} \ No newline at end of file +} + +@article{Sundberg2022, + doi = {10.21105/joss.04364}, + url = {https://doi.org/10.21105/joss.04364}, + year = {2022}, + publisher = {The Open Journal}, + volume = {7}, + number = {75}, + pages = {4364}, + author = {Jack D. Sundberg and Siona S. Benjamin and Lauren M. McRae and Scott C. Warren}, + title = {Simmate: a framework for materials science}, + journal = {Journal of Open Source Software} +} + +@article{Pietka2022, + doi = {10.21105/joss.04719}, + url = {https://doi.org/10.21105/joss.04719}, + year = {2022}, + publisher = {The Open Journal}, + volume = {7}, + number = {79}, + pages = {4719}, + author = {Isabel Pietka and Ralf Drautz and Thomas Hammerschmidt}, + title = {strucscan: A lightweight Python-based framework for high-throughput material simulation}, + journal = {Journal of Open Source Software} +} + +@article{Biscani2020, + doi = {10.21105/joss.02338}, + url = {https://doi.org/10.21105/joss.02338}, + year = {2020}, + publisher = {The Open Journal}, + volume = {5}, + number = {53}, + pages = {2338}, + author = {Francesco Biscani and Dario Izzo}, + title = {A parallel global multiobjective framework for optimization: pagmo}, + journal = {Journal of Open Source Software} +} + +@inproceedings{Akiba2019, + title={Optuna: A next-generation hyperparameter optimization framework}, + author={Akiba, Takuya and Sano, Shotaro and Yanase, Toshihiko and Ohta, Takeru and Koyama, Masanori}, + booktitle={Proceedings of the 25th ACM SIGKDD international conference on knowledge discovery \& data mining}, + pages={2623--2631}, + year={2019} +} diff --git a/paper/paper.md b/paper/paper.md index b1d0f8b6..6394a9c9 100644 --- a/paper/paper.md +++ b/paper/paper.md @@ -35,26 +35,31 @@ bibliography: paper.bib # Statement of need -In the last decades, advancements in computational resources have accelerated novel inverse design approaches for structures and materials. In particular data-driven methods leveraging machine learning techniques play a major role in shaping our design processes today. +In the last decades, advancements in computational resources have accelerated novel inverse design approaches for structures and materials. In particular, data-driven methods leveraging machine learning techniques play a major role in shaping our design processes today. -Constructing a large material response database poses practical challenges, such as proper data management, efficient parallel computing and integration with third-party software. Because most applied fields remain conservative when it comes to openly sharing databases and software, a lot of research time is instead being allocated to implement common procedures that would be otherwise readily available. This lack of shared practices also leads to compatibility issues for benchmarking and replication of results by violating the FAIR principles. +Constructing a large material response database poses practical challenges, such as proper data management, efficient parallel computing, and integration with third-party software. Because most applied fields remain conservative when it comes to openly sharing databases and software, a lot of research time is instead being allocated to implement common procedures that would be otherwise readily available. This lack of shared practices also leads to compatibility issues for benchmarking and replication of results by violating the FAIR principles. -In this work we introduce an interface for researchers and practitioners working on design and analysis of materials and structures. The package is called [`f3dasm`](https://github.com/bessagroup/f3dasm) (Framework for Data-driven Design \& Analysis of Structures and Materials) This work generalizes the original closed-source framework proposed by the Bessa and co-workers [@Bessa2017], making it more flexible and adaptable to different applications, namely by allowing the integration of different choices of software packages needed in the different steps of the data-driven process: +In this work we introduce an interface for researchers and practitioners working on the design and analysis of materials and structures. The package is called [`f3dasm`](https://github.com/bessagroup/f3dasm) (Framework for Data-driven Design \& Analysis of Structures and Materials). This work generalizes the original closed-source framework proposed by the Bessa and co-workers [@Bessa2017], making it more flexible and adaptable to different applications, namely by allowing the integration of different choices of software packages needed in the different steps of the data-driven process: -- **Design of experiments**, in which input variables describing the microstructure, properties and external conditions of the system are determined and sampled. -- **Data generation**, typically through computational analyses, resulting in the creation of a material response database. -- **Machine learning**, in which a surrogate model is trained to fit experimental findings. -- **Optimization**, where we try to iteratively improve the design +- **Design of experiments**, in which input variables describing the microstructure, properties and external conditions of the system are determined and sampled; +- **Data generation**, typically through computational analyses, resulting in the creation of a material response database; +- **Machine learning**, in which a surrogate model is trained to fit experimental findings; +- **Optimization**, where we try to iteratively improve the design. \autoref{fig:data-driven-process} provides an illustration of the stages in the data-driven process. -![Illustration of the data-driven process. \label{fig:data-driven-process}](data-driven-process.png) - +![Illustration of the `f3dasm` data-driven process. \label{fig:data-driven-process}](data-driven-process.png) [`f3dasm`](https://github.com/bessagroup/f3dasm) is an [open-source Python package](https://pypi.org/project/f3dasm/) compatible with Python 3.8 or later. The library includes a suite of benchmark functions, optimization algorithms, and sampling strategies to serve as default implementations. Furthermore, [`f3dasm`](https://github.com/bessagroup/f3dasm) offers automatic data management for experiments, easy integration with high-performance computing systems, and compatibility with the hydra configuration manager. Comprehensive [online documentation](https://f3dasm.readthedocs.io/en/latest/) is also available to assist users and developers of the framework. +In a similar scope, it is worth mentioning the projects [simmate](https://github.com/jacksund/simmate) [@Sundberg2022] and [strucscan](https://github.com/ICAMS/strucscan), as they provide tools for the management of materials science simulation and databases. However, these projects focus on the generation and retrieval of materials properties and do not include machine learning or optimization interfaces. In recent years, numerous optimization frameworks have been developed to facilitate data-driven design. [Optuna](https://optuna.org/) is a hyperparameter optimization framework that combines a variety of optimization algorithms with dynamically constructed search space [@Akiba2019] and [pygmo](https://github.com/esa/pagmo2) provides unified interfaces for parallel global optimization [@Biscani2020]. Interfaces to these and many other optimization frameworks have been integrated into a separate package [`f3dasm_optimize`](https://github.com/bessagroup/f3dasm_optimize), and can be used in conjunction with [`f3dasm`](https://github.com/bessagroup/f3dasm). + + # Acknowledgements We would express our gratitude to Jiaxiang Yi for his contributions to writing an interface with the ABAQUS simulation software. -# References \ No newline at end of file +# References + + +