Skip to content

Commit

Permalink
Add joss paper
Browse files Browse the repository at this point in the history
  • Loading branch information
FranciscaAlves committed Feb 8, 2024
1 parent 09e00cf commit 4458a94
Show file tree
Hide file tree
Showing 3 changed files with 18,414 additions and 0 deletions.
77 changes: 77 additions & 0 deletions docs/joss_paper/paper.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
---
title: 'piglot: an Open-source Package for Derivative-free Optimisation of Numerical Responses'
tags:
- Python
- computational mechanics
- inverse problems
- derivative-free optimisation
- Bayesian optimisation
- parameter identification
authors:
- name: R. P. Cardoso Coelho
orcid: 0000-0001-9989-964X
affiliation: "1, 2"
- name: A. Francisca Carvalho Alves
orcid: 0000-0003-1214-5453
affiliation: "1, 2"
- name: F. M. Andrade Pires
orcid: 0000-0002-4802-6360
corresponding: true
affiliation: "1, 2"
affiliations:
- name: Faculty of Engineering, University of Porto, Porto, Portugal
index: 1
- name: Institute of Science and Innovation in Mechanical and Industrial Engineering, Porto, Portugal
index: 2
date: 7 February 2024
bibliography: references.bib

---

# Summary
`piglot` is an open-source Python tool taylored for the automated optimisation of responses stemming from numerical solvers. With this tool we aim at providing a simple and user-friendly interface which is also easily extendable, allowing intergration with other solvers within the community. `piglot` provides a versatile solution for solving inverse problems on several research areas, such as structural analysis, material modelling, fluid dynamics, control systems or astrophysics, using, for instance, finite element analysis, spectral methods or Monte Carlo methods. The primary emphasis is on derivative-free optimisation, ensuring compatibility with black-box solvers in scenarios where gradient information is not available, and cases where the function evaluations may be noisy.

![Logo of `piglot`. \label{fig:piglot_logo}](../source/logo.svg){width=35%}

# Statement of need

The increasingly growing interest in computational analysis for engineering problems has been driving the development of more accurate, robust and efficient methods and models.
With the advent of this technology, the application of the so-called inverse problems has been gaining traction over the last years, where one seeks optimised parameters, geometries, configurations or models for numerical problems arising in engineering.
In this context, in the past years, some packages have been developed to automate the identification of parameters [@nevergrad,@optuna_2019].
These packages, however, do not provide an interface for different solvers, so the optimisation of numerical responses is not readily available.

In this work, we present `piglot` an open-source Python package for automated optimisation of numerical responses, such as responses stemming from finite element simulations.
In particular, focus is placed on derivative-free optimisation, to allow compatibility with black-solvers where gradient information may be unavailable.
Within this setting, some solvers are already provided, namely a solver for fitting analytical functions, a solver for the in-house finite element code `Links`, a solver for the finite element software `Abaqus` and a solver for the clustering-based reduced-order model `CRATE` package [@Ferreira2023].
We also provide an extensible interface for coupling with physics solvers. As long as the solver can return a time-response for the fields of interest, it is possible to optimise it with `piglot`.

Moreover, several optimisation methods are implemented and available for usage, such as DIRECT, LIPO, Bayesian optimisation, among others.
Particularly, a significant effort has been employed into Bayesian optimisation algorithms, backed with an open-source implementation [@balandatBoTorchFrameworkEfficient2020] and allowing for single- and multi-objective optimisation of both noise-free and stochastic objectives.
Furthermore, a novel composite Bayesian optimisation strategy is available for curve-fitting problems, which, in our tests, severely outperforms classical optimisation approaches [@Coelho2023optm].

The package also provides a builtin tool `piglot-plot` to visualise the results of the optimisation.
There are native plotting utilities for the optimised responses, the parameter history, objective history and, for supported solvers, live plotting of the currently running case.
Also, an animation of the optimisation process can be exported.

In \autoref{fig:piglot_example} schematic illustration of the workflow of `piglot` is presented.

![Schematic illustration of `piglot`. \label{fig:piglot_example}](piglot.svg){width=100%}

The package also includes full documentation for a clear installation and usage, supporting a simple framework for new developments.
With this in mind, a thorough automated testing is incorporated, ensuring the compliance of new developments.


The `piglot` package has been successfully used for the identification of constitutive parameters for classical elasto-plastic models from multi-scale simulations, crystal plasticity models with mechanically-induced martensitic transformations [@cardosocoelhoMultiscaleModelCombining2023] and models for amorphous polymers [@ALVES2023112488].
Moreover, this tool has also demonstrated its potential in the material design of different microstructures, such as particulate PC/ABS polymer blends.



With this package, we aim to provide a simple and effective tool for general optimisation of numerical responses, which can be easily extended for other solvers in the community.


# Acknowledgements

R. P. Cardoso Coelho and A. Francisca Carvalho Alves gratefully acknowledge the support provided by Fundação para a Ciência e a Tecnologia (FCT) through the scholarships with references 2020.07159.BD and 2020.07279.BD, respectively.
This research has also been supported by Instituto de Ciência e Inovação em Engenharia Mecânica e Engenharia Industrial (INEGI).

# References
Loading

0 comments on commit 4458a94

Please sign in to comment.