diff --git a/.github/workflows/JOSS.yml b/.github/workflows/JOSS.yml new file mode 100644 index 0000000..9524280 --- /dev/null +++ b/.github/workflows/JOSS.yml @@ -0,0 +1,20 @@ +name: JOSS Paper +on: [push] + +jobs: + paper: + runs-on: ubuntu-latest + name: JOSS Paper + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Build draft PDF + uses: openjournals/openjournals-draft-action@master + with: + journal: joss + paper-path: paper/paper.md + - name: Upload + uses: actions/upload-artifact@v1 + with: + name: JOSS Paper + path: paper/paper.pdf \ No newline at end of file diff --git a/paper/paper.bib b/paper/paper.bib new file mode 100644 index 0000000..168a1e2 --- /dev/null +++ b/paper/paper.bib @@ -0,0 +1,126 @@ +@Article{DuneFEM, +author={Dedner, Andreas +and Kl{\"o}fkorn, Robert +and Nolte, Martin +and Ohlberger, Mario}, +title={A generic interface for parallel and adaptive discretization schemes: abstraction principles and the Dune-Fem module}, +journal={Computing}, +year={2010}, +month={Nov}, +day={01}, +volume={90}, +number={3}, +pages={165-196}, +abstract={Starting from an abstract mathematical notion of discrete function spaces and operators, we derive a general abstraction for a large class of grid-based discretization schemes for stationary and instationary partial differential equations. Special emphasis is put on concepts for local adaptivity and parallelization with dynamic load balancing. The concepts are based on a corresponding abstract definition of a parallel and hierarchical adaptive grid given in Bastian et al. (Computing 82(2--3):103--119, 2008). Based on the abstract framework, we describe an efficient object oriented implementation of a generic interface for grid-based discretization schemes that is realized in the Dune-Fem library (http://dune.mathematik.uni-freiburg.de). By using interface classes we manage to separate functionality from data structures. Efficiency is obtained by using modern template based generic programming techniques, including static polymorphism, the engine concept, and template metaprogramming. We present numerical results for several benchmark problems and some advanced applications.}, +issn={1436-5057}, +doi={10.1007/s00607-010-0110-3}, +url={https://doi.org/10.1007/s00607-010-0110-3} +} +@Article{DealII, + title = {The \texttt{deal.II} Library, Version 9.5}, + author = {Daniel Arndt and Wolfgang Bangerth and Maximilian Bergbauer and + Marco Feder and Marc Fehling and Johannes Heinz and + Timo Heister and Luca Heltai and Martin Kronbichler and + Matthias Maier and Peter Munch and Jean-Paul Pelteret and + Bruno Turcksin and David Wells and Stefano Zampini}, + journal = {Journal of Numerical Mathematics}, + year = {2023}, + doi = {10.1515/jnma-2023-0089}, + pages = {231--246}, + volume = {31}, + number = {3}, + url = {https://dealii.org/deal95-preprint.pdf} +} +@article{Basix, + title = {Basix: a runtime finite element basis evaluation library}, + author = {M. W. Scroggs and I. A. Baratta and C. N. Richardson and G. N. Wells}, + journal = {Journal of Open Source Software}, + year = {2022}, + volume = {7}, + number = {73}, + doi = {10.21105/joss.03982}, + pages = {3982} +} +@article{UFL, + title = {Unified Form Language: A domain-specific language for weak formulations of partial differential equations}, + author = {M. S. Alnaes and A. Logg and K. B. Ølgaard and M. E. Rognes and G. N. Wells}, + journal = {{ACM} Transactions on Mathematical Software}, + year = {2014}, + volume = {40}, + doi = {10.1145/2566630}, +} +@article{FEniCS, + title = {The {FEniCS} Project Version 1.5}, + author = {M. S. Alnaes and J. Blechta and J. Hake and A. Johansson and B. Kehlet and A. Logg and C. Richardson and J. Ring and M. E. Rognes and G. N. Wells}, + journal = {Archive of Numerical Software}, + year = {2015}, + volume = {3}, + doi = {10.11588/ans.2015.100.20553}, +} +@incollection{Kirby, + title = {{FIAT:} Numerical Construction of Finite Element Basis Functions}, + author = {R. C. Kirby}, + year = {2012}, + booktitle = {Automated Solution of Differential Equations by the Finite Element Method}, + publisher = {Springer}, + series = {Lecture Notes in Computational Science and Engineering}, + volume = {84}, + chapter = {13}, + editor = {A. Logg and {K.-A.} Mardal and G. N. Wells}, +} +@manual{Firedrake, + title = {Firedrake User Manual}, + author = {David A. Ham and Paul H. J. Kelly and Lawrence Mitchell and Colin J. Cotter and Robert C. Kirby and Koki Sagiyama and Nacime Bouziani and Sophia Vorderwuelbecke and Thomas J. Gregory and Jack Betteridge and Daniel R. Shapero and Reuben W. Nixon-Hill and Connor J. Ward and Patrick E. Farrell and Pablo D. Brubeck and India Marsden and Thomas H. Gibson and Miklós Homolya and Tianjiao Sun and Andrew T. T. McRae and Fabio Luporini and Alastair Gregory and Michael Lange and Simon W. Funke and Florian Rathgeber and Gheorghe-Teodor Bercea and Graham R. Markall}, + organization = {Imperial College London and University of Oxford and Baylor University and University of Washington}, + edition = {First edition}, + year = {2023}, + month = {5}, + doi = {10.25561/104839}, +} +@misc{DuneVEM, + title={A framework for implementing general virtual element spaces}, + author={Andreas Dedner and Alice Hodson}, + year={2023}, + eprint={2208.08978}, + archivePrefix={arXiv}, + primaryClass={math.NA} +} +@Article{Netgen, + author={Sch{\"o}berl, Joachim}, + title={NETGEN An advancing front 2D/3D-mesh generator based on abstract rules}, + journal={Computing and Visualization in Science}, + year={1997}, + month={Jul}, + day={01}, + volume={1}, + number={1}, + pages={41-52}, + abstract={In this paper, the algorithms of the automatic mesh generator NETGEN are described. The domain is provided by a Constructive Solid Geometry (CSG). The whole task of 3D mesh generation splits into four subproblems of special point calculation, edge following, surface meshing and finally volume mesh generation. Surface and volume mesh generation are based on the advancing front method. Emphasis is given to the abstract structure of the element generation rules. Several techniques of mesh optimization are tested and quality plots are presented.}, + issn={1432-9360}, + doi={10.1007/s007910050004}, + url={https://doi.org/10.1007/s007910050004} +} +@article{NGSolve, + title={C++ 11 implementation of finite elements in NGSolve}, + author={Sch{\"o}berl, Joachim}, + journal={Institute for analysis and scientific computing, Vienna University of Technology}, + volume={30}, + year={2014}, + publisher={Citeseer} +} +@TechReport{PETSc, + author = {Satish Balay and Shrirang Abhyankar and Mark~F. Adams and Steven Benson and Jed + Brown and Peter Brune and Kris Buschelman and Emil Constantinescu and Lisandro + Dalcin and Alp Dener and Victor Eijkhout and Jacob Faibussowitsch and William~D. + Gropp and V\'{a}clav Hapla and Tobin Isaac and Pierre Jolivet and Dmitry Karpeev + and Dinesh Kaushik and Matthew~G. Knepley and Fande Kong and Scott Kruger and + Dave~A. May and Lois Curfman McInnes and Richard Tran Mills and Lawrence Mitchell + and Todd Munson and Jose~E. Roman and Karl Rupp and Patrick Sanan and Jason Sarich + and Barry~F. Smith and Stefano Zampini and Hong Zhang and Hong Zhang and Junchao + Zhang}, + title = {{PETSc/TAO} Users Manual}, + institution = {Argonne National Laboratory}, + number = {ANL-21/39 - Revision 3.20}, + doi = {10.2172/1968587}, + year = {2023} +} \ No newline at end of file diff --git a/paper/paper.md b/paper/paper.md new file mode 100644 index 0000000..e96052d --- /dev/null +++ b/paper/paper.md @@ -0,0 +1,48 @@ +--- +title: 'ngsPETSc: Yet an other NGSolve/Netgen -- PETSc interface' +tags: + - Python + - PDE + - FEM + - Mesh +authors: + - name: Patrick E. Farrell + orcid: 0000-0002-1241-7060 + equal-contrib: true + affiliation: 1 + - name: Joachim Schöberl + equal-contrib: true + affiliation: 2 + - name: Stefano Zampini + orcid: 0000-0002-0435-0433 + equal-contrib: true + affiliation: 3 + - name: Umberto Zerbinati + orcid: 0000-0002-2577-1106 + equal-contrib: true + corresponding: true + affiliation: 1 +affiliations: + - name: University of Oxford, United Kingdom + index: 1 + - name: TU Wien, Austria + index: 2 + - name: King Abdullah University of Science and Technology, Saudi Arabia + index: 3 +date: 13 August 2017 +bibliography: paper.bib + +--- + +# Summary + +There are few common ingredients in any Finite Element (FE) simulation, among these common ingredients there are a mesh generation and an efficient linear or non-linear solve. +Furthermore in recent years that have been an increasing focus in the development of finite element solvers both as useful research tool and also to solve real-life application, just to mention a few: Deal II [@DealII], Dune[@DuneFEM; @DuneVEM], FEniCSx [@Basix; @UFL], FEniCS [@FEniCS], Firedrake [@Firedrake] and NGSolve [@NGSolve]. +Among the previously mentioned software package there those whose strength lies in their intimate nature with the liner and non-linear solver such as Firedrake, FEniCS and FEnniCSx, which relies on PETSc [@PETSc] as solver. +Other software package such as NGSolve found their strength in their relation with the Netgen [@Netgen] mesh generator. +`NGSPETSc` is a Python software package that improves mesh generation capabilities of PETSc based solvers, such as Firedrake or FEniCS, while at the same giving access to PETSc preconditioner together with linear and non-linear solvers to NGSolve. + +# Statement of need + + +# References \ No newline at end of file