Skip to content

Commit

Permalink
suggestions from vijaysm for the joss paper draft
Browse files Browse the repository at this point in the history
  • Loading branch information
gtheler committed Oct 31, 2023
1 parent 6ff6afa commit c1fe176
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 2 deletions.
20 changes: 20 additions & 0 deletions doc/joss/paper.bib
Original file line number Diff line number Diff line change
Expand Up @@ -61,3 +61,23 @@ @article{milonga-openfoam
keywords = {Neutronics, Thermal-hydraulics, Coupling, Multi-physics, TRIGA, FOSS, Serpent, Simulation, Software},
abstract = {The development of a fine mesh coupled neutronics/thermal-hydraulics framework mainly using free open source software is presented. The proposed contributions go in two different directions: one, is the focus on the open software approach development, a concept widely spread in many fields of knowledge but rarely explored in the nuclear engineering field; the second, is the use operating system shared memory as a fast and reliable storage area to couple the computational fluid dynamics (CFD) software OpenFOAM to the free and flexible reactor core analysis code milonga. This concept was applied to model the behavior of a TRIGA-IPR-R1 reactor fuel pin in steady-state mode. The macroscopic cross-sections for the model, a set of two-group cross-sections data, were generated using the Serpent code. The results show that this coupled system gives consistent results, encouraging system further development and its use for complex geometries simulations.}
}

@article{ufl,
author = {Aln\ae{}s, Martin S. and Logg, Anders and \O{}lgaard, Kristian B. and Rognes, Marie E. and Wells, Garth N.},
title = {Unified Form Language: A Domain-Specific Language for Weak Formulations of Partial Differential Equations},
year = {2014},
issue_date = {February 2014},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
volume = {40},
number = {2},
issn = {0098-3500},
url = {https://doi.org/10.1145/2566630},
doi = {10.1145/2566630},
abstract = {We present the Unified Form Language (UFL), which is a domain-specific language for representing weak formulations of partial differential equations with a view to numerical approximation. Features of UFL include support for variational forms and functionals, automatic differentiation of forms and expressions, arbitrary function space hierarchies for multifield problems, general differential operators and flexible tensor algebra. With these features, UFL has been used to effortlessly express finite element methods for complex systems of partial differential equations in near-mathematical notation, resulting in compact, intuitive and readable programs. We present in this work the language and its construction. An implementation of UFL is freely available as an open-source software library. The library generates abstract syntax tree representations of variational problems, which are used by other software libraries to generate concrete low-level implementations. Some application examples are presented and libraries that support UFL are highlighted.},
journal = {ACM Trans. Math. Softw.},
month = {mar},
articleno = {9},
numpages = {37},
keywords = {symbolic differentiation, functional, partial differential equation, AD, index notation, automatic functional differentiation, tensor algebra, embedded language, PDE, DSEL, DSL, mixed element, weak formulation, domain specific language, discretization, weak form, finite element method, algorithmic differentiation, FEM, einstein notation, implicit summation}
}
23 changes: 21 additions & 2 deletions doc/joss/paper.md
Original file line number Diff line number Diff line change
Expand Up @@ -74,9 +74,24 @@ The most important idea is that FeenoX should give a general mathematical framew
```

- access element shape functions and its derivatives evaluated either at Gauss points or at arbitrary locations for computing elementary contributions to

* stiffness matrix
* mass matrix
* right-hand side vector

For example, this snippet would build the elemental stiffness matrix for the Laplace problem:

```c
int build_laplace_Ki(element_t *e, unsigned int q) {
double wdet = feenox_fem_compute_w_det_at_gauss(e, q);
gsl_matrix *B = feenox_fem_compute_B_at_gauss(e, q);
feenox_call(feenox_blas_BtB_accum(B, wdet, feenox.fem.Ki));
return FEENOX_OK;
}
```
The calls for computing the weights and the matrices with the shape functions and/or their derivatives currently support first and second-order iso-geometric elements, but other element types can be added as well.
More complex cases involving non-uniform material properties, volumetric sources, etc. can be found in the actual source.


- solve the discretized equations using the appropriate [PETSc](https://petsc.org/) [@petsc-user-ref;@petsc-efficient] or [SLEPc](https://slepc.upv.es/) [@slepc-manual;@slepc-toms] objects, i.e.
* [KSP](https://petsc.org/release/manual/ksp/) for linear static problems
Expand Down Expand Up @@ -104,9 +119,13 @@ Engineers, researchers, scientists, developers and/or hobbyists just need to use
* etc.
#. modify the contents of the elemental matrices in `bulk.c` in the FEM formulation of the problem being added
#. modify the contents of how the boundary conditions are parsed and set in `bc.c`
#. re-run `autogen.sh`, `./configure` and `make` to get a FeenoX executable with support for the new PDE.
#. re-run `autogen.sh`, `./configure` and `make` to get a FeenoX executable with support for the new PDE.

This comment has been minimized.

Copy link
@vijaysm

vijaysm Oct 31, 2023

PDE solver

This comment has been minimized.

Copy link
@gtheler

gtheler Oct 31, 2023

Author Contributor

I'm not sure that "PDE solver" is the right wording.
After running autogen, configure and make one gets "a FeenoX executable with support for the new PDE" not "a new PDE solver."


FeenoX's main focus is on flexibility. Its applications range from coupling neutronics with CFD in nuclear reactors [@milonga-openfoam] to providing a back end to [web-based thermo-mechanical solvers](https://www.caeplex.com).
FeenoX's main goal is to keep things simple as possible from the user’s point of view without sacrificing flexibility.
There exist other tools which are similar in functionality but differ in the way the problem is set up.
For example, [FeniCSx](https://fenicsproject.org/) uses the Unified Form Language where the PDE being solved has to be written by the user in weak form [@ufl].
This approach is very flexible, but even simple problems end up with non-trivial input files so it does not fulfill the first requirement stated in the summary.
As simple as it is, FeenoX is still pretty flexible. A prove of this fact is that its applications range from coupling neutronics with CFD in nuclear reactors [@milonga-openfoam] to providing a back end to [web-based thermo-mechanical solvers](https://www.caeplex.com).

This comment has been minimized.

Copy link
@vijaysm

vijaysm Oct 31, 2023

"proof" instead of "prove"

This comment has been minimized.

Copy link
@gtheler

gtheler Oct 31, 2023

Author Contributor

thanks, fixed in 9d014eb



# References
Expand Down

0 comments on commit c1fe176

Please sign in to comment.