diff --git a/joss.05846/10.21105.joss.05846.crossref.xml b/joss.05846/10.21105.joss.05846.crossref.xml new file mode 100644 index 0000000000..e5673712fa --- /dev/null +++ b/joss.05846/10.21105.joss.05846.crossref.xml @@ -0,0 +1,274 @@ + + + + 20240316T224810-5dcb921fc3ac68a18d004aac11c134debf2b7dba + 20240316224810 + + JOSS Admin + admin@theoj.org + + The Open Journal + + + + + Journal of Open Source Software + JOSS + 2475-9066 + + 10.21105/joss + https://joss.theoj.org + + + + + 03 + 2024 + + + 9 + + 95 + + + + FeenoX: a cloud-first finite-element(ish) computational +engineering tool + + + + Jeremy + Theler + https://orcid.org/0000-0002-4142-4980 + + + + 03 + 16 + 2024 + + + 5846 + + + 10.21105/joss.05846 + + + http://creativecommons.org/licenses/by/4.0/ + http://creativecommons.org/licenses/by/4.0/ + http://creativecommons.org/licenses/by/4.0/ + + + + Software archive + 10.5281/zenodo.10819606 + + + GitHub review issue + https://github.com/openjournals/joss-reviews/issues/5846 + + + + 10.21105/joss.05846 + https://joss.theoj.org/papers/10.21105/joss.05846 + + + https://joss.theoj.org/papers/10.21105/joss.05846.pdf + + + + + + PETSc/TAO users manual + Balay + 10.2172/1968587 + 2023 + Balay, S., Abhyankar, S., Adams, M. +F., Benson, S., Brown, J., Brune, P., Buschelman, K., Constantinescu, +E., Dalcin, L., Dener, A., Eijkhout, V., Faibussowitsch, J., Gropp, W. +D., Hapla, V., Isaac, T., Jolivet, P., Karpeev, D., Kaushik, D., +Knepley, M. G., … Zhang, J. (2023). PETSc/TAO users manual (ANL-21/39 - +Revision 3.19). Argonne National Laboratory. +https://doi.org/10.2172/1968587 + + + Efficient management of parallelism in object +oriented numerical software libraries + Balay + Modern software tools in scientific +computing + 10.1007/978-1-4612-1986-6_8 + 1997 + Balay, S., Gropp, W. D., McInnes, L. +C., & Smith, B. F. (1997). Efficient management of parallelism in +object oriented numerical software libraries. In E. Arge, A. M. Bruaset, +& H. P. Langtangen (Eds.), Modern software tools in scientific +computing (pp. 163–202). Birkhäuser Press. +https://doi.org/10.1007/978-1-4612-1986-6_8 + + + SLEPc: A scalable and flexible toolkit for +the solution of eigenvalue problems + Hernandez + ACM Trans. Math. Software + 3 + 31 + 10.1145/1089014.1089019 + 2005 + Hernandez, V., Roman, J. E., & +Vidal, V. (2005). SLEPc: A scalable and flexible toolkit for the +solution of eigenvalue problems. ACM Trans. Math. Software, 31(3), +351–362. https://doi.org/10.1145/1089014.1089019 + + + SLEPc users manual + Roman + 2023 + Roman, J. E., Campos, C., Dalcin, L., +Romero, E., & Tomas, A. (2023). SLEPc users manual (DSIC-II/24/02 - +Revision 3.19). D. Sistemes Informàtics i Computació, Universitat +Politècnica de València. + + + NAFEMS: The standard NAFEMS +benchmarks + Finite Element Methods & Standards (Great +Britain) + 1990 + Finite Element Methods & +Standards (Great Britain), N. A. for. (1990). NAFEMS: The standard +NAFEMS benchmarks. NAFEMS. +https://books.google.com.ar/books?id=--qwHAAACAAJ + + + Coupled unstructured fine-mesh neutronics and +thermal-hydraulics methodology using open software: A +proof-of-concept + Vasconcelos + Annals of Nuclear Energy + 115 + 10.1016/j.anucene.2018.01.021 + 0306-4549 + 2018 + Vasconcelos, V., Santos, A., +Campolina, D., Theler, G., & Pereira, C. (2018). Coupled +unstructured fine-mesh neutronics and thermal-hydraulics methodology +using open software: A proof-of-concept. Annals of Nuclear Energy, 115, +173–185. +https://doi.org/10.1016/j.anucene.2018.01.021 + + + Unified form language: A domain-specific +language for weak formulations of partial differential +equations + Alnæs + ACM Trans. Math. Softw. + 2 + 40 + 10.1145/2566630 + 0098-3500 + 2014 + Alnæs, M. S., Logg, A., Ølgaard, K. +B., Rognes, M. E., & Wells, G. N. (2014). Unified form language: A +domain-specific language for weak formulations of partial differential +equations. ACM Trans. Math. Softw., 40(2). +https://doi.org/10.1145/2566630 + + + Sparselizard—the user friendly finite element +C++ library + Halbach + 2017 + Halbach, A. (2017). Sparselizard—the +user friendly finite element C++ library [PhD thesis]. Université de +Liège—Dép. d’électric., électron. et informat. +(Inst.Montefiore). + + + MoFEM: An open source, parallel finite +element library + Kaczmarczyk + The Journal of Open Source +Software + 10.21105/joss.01441 + 2020 + Kaczmarczyk, Ł., Ullah, Z., +Lewandowski, K., Meng, X., Zhou, X.-Y., Athanasiadis, I., Nguyen, H., +Chalons-Mouriesse, C.-A., Richardson, E., Miur, E., Shvarts, A., Wakeni, +M., & Pearce, C. (2020). MoFEM: An open source, parallel finite +element library. The Journal of Open Source Software. +https://doi.org/10.21105/joss.01441 + + + MFEM: A modular finite element methods +library + Anderson + Computers & Mathematics with +Applications + 81 + 10.1016/j.camwa.2020.06.009 + 2021 + Anderson, R., Andrej, J., Barker, A., +Bramwell, J., Camier, J.-S., Cerveny, J., Dobrev, V., Dudouit, Y., +Fisher, A., Kolev, Tz., Pazner, W., Stowell, M., Tomov, V., Akkerman, +I., Dahm, J., Medina, D., & Zampini, S. (2021). MFEM: A modular +finite element methods library. Computers & Mathematics with +Applications, 81, 42—74. +https://doi.org/10.1016/j.camwa.2020.06.009 + + + DOLFINx: The next generation FEniCS problem +solving environment + Baratta + 10.5281/zenodo.10447666 + 2023 + Baratta, I. A., Dean, J. P., Dokken, +J. S., Habera, M., Hale, J. S., Richardson, C. N., Rognes, M. E., +Scroggs, M. W., Sime, N., & Wells, G. N. (2023). DOLFINx: The next +generation FEniCS problem solving environment. preprint. +https://doi.org/10.5281/zenodo.10447666 + + + Gmsh: A three-dimensional finite element mesh +generator with built-in pre- and post-processing +facilities + Geuzaine + International Journal for Numerical Methods +in Engineering + 11 + 79 + 10.1016/j.camwa.2020.06.009 + 2009 + Geuzaine, C., & Remacle, J.-F. +(2009). Gmsh: A three-dimensional finite element mesh generator with +built-in pre- and post-processing facilities. International Journal for +Numerical Methods in Engineering, 79(11), 1309—1331. +https://doi.org/10.1016/j.camwa.2020.06.009 + + + The ParaView guide: A parallel visualization +application + Ayachit + 9781930934306 + 2015 + Ayachit, U. (2015). The ParaView +guide: A parallel visualization application. Kitware. +ISBN: 9781930934306 + + + The art of UNIX programming + Raymond + 2003 + Raymond, E. S. (2003). The art of +UNIX programming. Addison-Wesley. + + + + + + diff --git a/joss.05846/10.21105.joss.05846.jats b/joss.05846/10.21105.joss.05846.jats new file mode 100644 index 0000000000..5ae685f99d --- /dev/null +++ b/joss.05846/10.21105.joss.05846.jats @@ -0,0 +1,810 @@ + + +
+ + + + +Journal of Open Source Software +JOSS + +2475-9066 + +Open Journals + + + +5846 +10.21105/joss.05846 + +FeenoX: a cloud-first finite-element(ish) computational +engineering tool + + + +https://orcid.org/0000-0002-4142-4980 + +Theler +Jeremy + + + + + + +Seamplex, Argentina + + + + +Instituto Balseiro, Argentina + + + + +13 +8 +2023 + +9 +95 +5846 + +Authors of papers retain copyright and release the +work under a Creative Commons Attribution 4.0 International License (CC +BY 4.0) +2022 +The article authors + +Authors of papers retain copyright and release the work under +a Creative Commons Attribution 4.0 International License (CC BY +4.0) + + + +engineering +partial differential equations +differential algebraic equations + + + + + + Summary +

FeenoX is a cloud-first free no-X uniX-like finite-element(ish) + computational engineering tool designed to solve engineering-related + problems using cloud servers in parallel in such a way that the + problem is defined in a plain-text near-English self descriptive input + file read at run time, without requiring further user intervention + after the invocation. FeenoX meets fictitious-yet-plausible Software + Requirement Specifications (SRS). The FeenoX Software Design + Specifications address each requirement of the SRS. FeenoX provides a + set of common extents, capabilities and usefulness but offers + different features (following slightly different spirits) for industry + engineers, Unix hackers and academic researchers. The main features of + this design basis are

+ + +

The tool has to be an already-compiled program (not a library) + so regular users do not have to compile anything to solve a + problem.

+
+ +

Simple problems ought to need simple input files.

+
+ +

There should be a one-to-one correspondence between the problem + definition and FeenoX’s input file, as illustrated in + fig. [le10].

+
+ +

There should be an extension mechanism to allow hackers and + researchers to add new partial differential equations to the + tool.

+
+
+ +

The NAFEMS LE10 problem statement + (Finite + Element Methods & Standards (Great Britain), 1990) and + the corresponding FeenoX input illustrating the one-to-one + correspondence between the + two.

+ +
+
+ + Statement of need +

Open-source finite-element tools are either

+ + +

libraries which need code to use them such as

+ + +

Sparselizard + (Halbach, + 2017)

+
+ +

MoFEM + (Kaczmarczyk + et al., 2020)

+
+ +

FEniCS + (Baratta + et al., 2023)

+
+ +

MFEM + (Anderson + et al., 2021)

+
+
+
+ +

end-user programs which need a GUI such as

+ + +

CalculiX

+
+ +

CodeAster

+
+
+
+
+

FeenoX sits in the middle. First, it can solve

+ + +

Basic + mathematics

+
+ +

Systems + of ODEs/DAEs

+
+ +

Laplace’s + equation

+
+ +

Heat + conduction

+
+ +

Linear + elasticity

+
+ +

Modal + analysis

+
+ +

Neutron + diffusion

+
+ +

Neutron + discrete ordinates

+
+
+

Second, it is the only free and open-source tool that satisfies the + Software + Requirement Specifications, including that…

+ + +

in order to solve a problem one needs to prepare a (relatively) + simple input file (not a script nor a deck) which is read at + run-time (not code which calls a library). For example, + considering the + NAFEMS + LE10 Benchmark problem from + fig. [le10], FeenoX works as + two “glue layers” + (Raymond, + 2003)

+ + +

between the mesher + Gmsh + (Geuzaine + & Remacle, 2009) and the + PETSc + library + (Balay + et al., 1997, + 2023)

+
+ +

between the PETSc library and a post-processor such as + Paraview + (Ayachit, + 2015)

+
+
+

 

+
+ +

these input files can expand generic command-line options using + Bash syntax as $1, + $2, etc., which allow parametric or + optimization loops driven by higher-level scripts.

+
+ +

for solving partial differential equations (PDEs), the input + file has to refer to at least one Gmsh .msh + file that defines the domain where the PDE is solved.

+
+ +

the material properties and boundary conditions are defined + using physical groups and not individual nodes nor elements, so + the input file is independent of the mesh and thus can be tracked + with Git to increase traceability and repeatability.

+
+ +

it follows the Unix philosophy + (Raymond, + 2003) which, among others, separates policy from mechanism + rendering FeenoX as a natural choice for web-based interfaces like + CAEplex + (fig. [caeplex]).

+
+
+ +

CAEplex + is a web-based interface to solve thermo-mechanical problems in the + cloud that uses FeenoX as the back + end.

+ +
+

FeenoX tries to achieve its goals by…

+ + +

standing on both ethical (since it is free) and technical + (since it is open source) grounds while interacting with other + free and open operating systems, libraries, compilers and pre and + post-processing tools, thus encouraging science and engineering to + shift from privative environments into the free world.

+
+ +

leveraging the Unix programming philosophy to come up with a + cloud-first tool suitable to be automatically deployed and serve + as the back end of web-based interfaces such as CAEplex.

+
+ +

providing a ready-to-run program that reads an input file at + run time (and not a library that has to be linked for each + particular problem to be solved) as a deliberate design decision + discussed in the + Software + Design Specifications.

+
+ +

designing and implementing an extensibility mechanism to allow + hackers and/or academics to add new PDE formulations by adding a + new subdirectory to + src/pdes + in the repository and then

+ + +

re-bootstrapping with + autogen.sh,

+
+ +

re-configuring with configure, + and

+
+ +

re-compiling with make

+
+
+
+
+

In effect, FeenoX provides a general mathematical framework to + solve PDEs with a bunch of entry points (as C functions) where new + types of PDEs (e.g. electromagnetism, fluid mechanics, etc.) can be + added to the set of what FeenoX can solve. This general framework + provides means to

+ + +

parse + the input file, + handle + command-line arguments, + read + mesh files, + assign + variables, + evaluate + conditionals, + write + results, etc.

+

+ PROBLEM laplace 2D +READ_MESH square-$1.msh +[...] +WRITE_RESULTS FORMAT vtk +

+
+ +

handle + material + properties given as + algebraic + expressions involving pointwise-defined functions of + space, + temperature, + time, + etc.

+

+ MATERIAL steel E=210e3*(1-1e-3*(T(x,y,z)-20)) nu=0.3 +MATERIAL aluminum E=69e3 nu=7/25 +

+
+ +

read problem-specific + boundary + conditions as algebraic expressions

+

+ sigma = 5.670374419e-8 # W m^2 / K^4 as in wikipedia +e = 0.98 # non-dimensional +T0 = 1000 # K +Tinf = 300 # K + +BC left T=T0 +BC right q=sigma*e*(Tinf^4-T(x,y,z)^4) +

+
+ +

access 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:

+

+ 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 + examples, + tutorials + and + tests.

+
+ +

solve the discretized equations using the appropriate PETSc + (Balay + et al., 1997, + 2023) + or + SLEPc + (Hernandez + et al., 2005; + Roman + et al., 2023) objects, i.e.

+ + +

KSP + for + linear + static problems

+
+ +

SNES + for + non-linear + static problems

+
+ +

TS + for + transient + problems

+
+ +

EPS + for + eigenvalue + problems

+
+
+
+
+

The particular functions that implement each problem type are + located in subdirectories + src/pdes, + namely

+ + +

laplace

+
+ +

thermal

+
+ +

mechanical

+
+ +

modal

+
+ +

neutron_diffusion

+
+ +

neutron_sn

+
+
+

Researchers with both knowledge of mathematical theory of finite + elements and programming skills might, with the aid of + the + community, add support for other PDEs. They might do that + by using one of these directories (say + laplace) + as a template and

+ + +

replace every occurrence of laplace in + symbol names with the name of the new PDE

+
+ +

modify the initialization functions in + init.c and set

+ + +

the names of the unknowns

+
+ +

the names of the material properties

+
+ +

the mathematical type and characteristics of problem

+
+ +

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.

+
+
+

The addition of non-trivial PDEs is not straightforward, but + possible. The + programming + guide contains further details about how to contribute to + the code base.

+
+ + Conclusions +

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 uses the Unified Form + Language where the PDE being solved has to be written by the user in + weak form + (Alnæs et + al., 2014). 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 proof of this fact is that its + applications range from coupling neutronics with CFD in nuclear + reactors + (Vasconcelos + et al., 2018) to providing a back end to + web-based + thermo-mechanical solvers.

+
+ + + + + + + BalaySatish + AbhyankarShrirang + AdamsMark F. + BensonSteven + BrownJed + BrunePeter + BuschelmanKris + ConstantinescuEmil + DalcinLisandro + DenerAlp + EijkhoutVictor + FaibussowitschJacob + GroppWilliam D. + HaplaV’aclav + IsaacTobin + JolivetPierre + KarpeevDmitry + KaushikDinesh + KnepleyMatthew G. + KongFande + KrugerScott + MayDave A. + McInnesLois Curfman + MillsRichard Tran + MitchellLawrence + MunsonTodd + RomanJose E. + RuppKarl + SananPatrick + SarichJason + SmithBarry F. + ZampiniStefano + ZhangHong + ZhangHong + ZhangJunchao + + PETSc/TAO users manual + Argonne National Laboratory + 2023 + 10.2172/1968587 + + + + + + BalaySatish + GroppWilliam D. + McInnesLois Curfman + SmithBarry F. + + Efficient management of parallelism in object oriented numerical software libraries + Modern software tools in scientific computing + + ArgeE. + BruasetA. M. + LangtangenH. P. + + Birkhäuser Press + 1997 + 10.1007/978-1-4612-1986-6_8 + 163 + 202 + + + + + + HernandezVicente + RomanJose E. + VidalVicente + + SLEPc: A scalable and flexible toolkit for the solution of eigenvalue problems + ACM Trans. Math. Software + 2005 + 31 + 3 + 10.1145/1089014.1089019 + 351 + 362 + + + + + + RomanJ. E. + CamposC. + DalcinL. + RomeroE. + TomasA. + + SLEPc users manual + D. Sistemes Informàtics i Computació, Universitat Politècnica de València + 2023 + + + + + + Finite Element Methods & Standards (Great Britain)National Agency for + + NAFEMS: The standard NAFEMS benchmarks + NAFEMS + 1990 + https://books.google.com.ar/books?id=--qwHAAACAAJ + + + + + + VasconcelosVitor + SantosAndré + CampolinaDaniel + ThelerGermán + PereiraClaubia + + Coupled unstructured fine-mesh neutronics and thermal-hydraulics methodology using open software: A proof-of-concept + Annals of Nuclear Energy + 2018 + 115 + 0306-4549 + https://www.sciencedirect.com/science/article/pii/S0306454918300215 + 10.1016/j.anucene.2018.01.021 + 173 + 185 + + + + + + AlnæsMartin S. + LoggAnders + ØlgaardKristian B. + RognesMarie E. + WellsGarth N. + + Unified form language: A domain-specific language for weak formulations of partial differential equations + ACM Trans. Math. Softw. + Association for Computing Machinery + New York, NY, USA + 201403 + 40 + 2 + 0098-3500 + https://doi.org/10.1145/2566630 + 10.1145/2566630 + + + + + + HalbachAlexandre + + Sparselizard—the user friendly finite element C++ library + Université de Liège—Dép. d’électric., électron. et informat. (Inst.Montefiore) + 2017 + + + + + + KaczmarczykŁukasz + UllahZahur + LewandowskiKarol + MengXuan + ZhouXiao-Yi + AthanasiadisIgnatios + NguyenHoang + Chalons-MouriesseChristophe-Alexandre + RichardsonEuan + MiurEuan + ShvartsAndrei + WakeniMebratu + PearceChris + + MoFEM: An open source, parallel finite element library + The Journal of Open Source Software + 2020 + https://joss.theoj.org/papers/10.21105/joss.01441 + 10.21105/joss.01441 + + + + + + AndersonR. + AndrejJ. + BarkerA. + BramwellJ. + CamierJ.-S. + CervenyJ. + DobrevV. + DudouitY. + FisherA. + KolevTz. + PaznerW. + StowellM. + TomovV. + AkkermanI. + DahmJ. + MedinaD. + ZampiniS. + + MFEM: A modular finite element methods library + Computers & Mathematics with Applications + 2021 + 81 + 10.1016/j.camwa.2020.06.009 + 42—74 + + + + + + + BarattaIgor A. + DeanJoseph P. + DokkenJørgen S. + HaberaMichal + HaleJack S. + RichardsonChris N. + RognesMarie E. + ScroggsMatthew W. + SimeNathan + WellsGarth N. + + DOLFINx: The next generation FEniCS problem solving environment + preprint + 2023 + 10.5281/zenodo.10447666 + + + + + + GeuzaineC. + RemacleJ.-F. + + Gmsh: A three-dimensional finite element mesh generator with built-in pre- and post-processing facilities + International Journal for Numerical Methods in Engineering + 2009 + 79 + 11 + 10.1016/j.camwa.2020.06.009 + 1309—1331 + + + + + + + AyachitUtkarsh + + The ParaView guide: A parallel visualization application + Kitware + 2015 + 9781930934306 + + + + + + RaymondEric S. + + The art of UNIX programming + Addison-Wesley + 2003 + + + + +
diff --git a/joss.05846/10.21105.joss.05846.pdf b/joss.05846/10.21105.joss.05846.pdf new file mode 100644 index 0000000000..753f260441 Binary files /dev/null and b/joss.05846/10.21105.joss.05846.pdf differ diff --git a/joss.05846/media/caeplex-ipad.jpg b/joss.05846/media/caeplex-ipad.jpg new file mode 100644 index 0000000000..b01d701af6 Binary files /dev/null and b/joss.05846/media/caeplex-ipad.jpg differ diff --git a/joss.05846/media/nafems-le10-problem-input.svg b/joss.05846/media/nafems-le10-problem-input.svg new file mode 100644 index 0000000000..df1303ab84 --- /dev/null +++ b/joss.05846/media/nafems-le10-problem-input.svg @@ -0,0 +1,954 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + diff --git a/joss.05846/media/transfer-le10-zoom.svg b/joss.05846/media/transfer-le10-zoom.svg new file mode 100644 index 0000000000..5c574445a9 --- /dev/null +++ b/joss.05846/media/transfer-le10-zoom.svg @@ -0,0 +1,1064 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + nafems-le10.geo + + + Gmsh + + nafems-le10.msh + nafems-le10.fee + + nafems-le10.vtk + stdout + + Paraview + + FeenoX + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + PETSc + + + + + + + + + + + +