title | author | lang |
---|---|---|
Frequently Asked Questions about FeenoX |
Jeremy Theler |
en-US |
It is "cloud-first a free no-fee no-X uniX-like finite-element(ish) computational engineering tool." Essentially, a finite-element program with a particular design basis:
FeenoX is to finite-element programs and libraries what Markdown is to word processors (like Word) and typesetting systems (like TeX), respectively.
In increasing order of complexity and comprehensiveness, these resources explain what FeenoX is:
-
The examples will give a brief overview of what FeenoX can do.
-
The tutorials will walk your through how to use FeenoX to solve problems.
-
The README in the GitHub repository has a brief introduction (after explaining why).
-
Theler, J. (2024). FeenoX: a cloud-first finite-element(ish) computational engineering tool. Journal of Open Source Software, 9(95), 5846. https://doi.org/10.21105/joss.05846
-
There is also a description in the documentation.
-
FeenoX is an "offer" to a fictitious "tender" for a computational tool. The RFQ is the Software Requirements Specification and the explanation of how FeenoX addresses each requirement is the Software Design Specification.
-
This presentation from August 2021 explains the SRS/SDS pair. The sources and the examples can be found in this Github repository. There is a recording of the presentation (audio is in Spanish).
-
Finally the manual will be the ultimate guide.
If you use FeenoX and need to cite it, use this BiBTeX entry that points to the 2024 paper in JOSS:
@article{feenox-2024,
author = {Theler, Jeremy},
doi = {10.21105/joss.05846},
journal = {Journal of Open Source Software},
month = mar,
number = {95},
pages = {5846},
title = {{FeenoX: a cloud-first finite-element(ish) computational engineering tool}},
url = {https://joss.theoj.org/papers/10.21105/joss.05846},
volume = {9},
year = {2024}
}
If you are not using BiBTeX (which you should), just use the plain-text APA format:
Theler, J. (2024). FeenoX: a cloud-first finite-element(ish) computational engineering tool. Journal of Open Source Software, 9(95), 5846. https://doi.org/10.21105/joss.05846
It does not mean anything particular, but
- The last X makes it rhyme with Unix and Linux.
- "noX" means that there is no graphical (i.e. X) interface
- Fee-no means that there are no fees involved (free as in "free beer")
- FeenoX is the successor of the now-superseded FEA program Fino
- It rhymes with FEniCS
- With some luck one can read "Finite ElEments NO-X"
- With mode luck, "FrEE" (as in "free speech")
It would be something like fee-naaks: /fiːnɒks/
But whatever works for you is fine.
double-click.md
FeenoX does not have "input decks." It has "input files," which are syntactically-sugared English-like plain-text ASCII files that describe the problem to be solved. First see the examples and the test directory. Then read the documentation.
There are syntax highlighting files for Kate and for Vim that helps the edition of input files. Contributions for other editors (emacs?) are welcome.
No, it currently supports solid elements only. Therefore, three-dimensional problems need to have tetrahedra, hexahedra, prisms and/or pyramids; and two-dimensional problems need to have triangles or quadrangles.
It might support non-solid elements for elasticity in future versions, though. Contributions are welcome. Check out the contributing guidelines.
TL;DR:
- The code is GPLv3+: you can use it, modify it and re-distribute it freely (as in free speech) as long as you keep the same licensing terms.
- The documentation is released under the terms of the Creative Commons Attribution-ShareAlike 4.0 International License (CC BY-SA 4.0)
licensing.md
See the programming guide for further discussion.
Let us first start with some generalities
Why is C still in use even though we have C++?
As a C programmer, why didn't you switch to C++ in your career?
Why is PETSc programmed in C, instead of Fortran or C++?
: C enables us to build data structures for storing sparse matrices, solver information, etc. in ways that Fortran simply does not allow. ANSI C is a complete standard that all modern C compilers support. The language is identical on all machines. C++ is still evolving and compilers on different machines are not identical. Using C function pointers to provide data encapsulation and polymorphism allows us to get many of the advantages of C++ without using such a large and more complicated language. It would be natural and reasonable to have coded PETSc in C++; we opted to use C instead.
: https://www.mcs.anl.gov/petsc/documentation/faq.html#why-c
Why Git is written in C and not in C++, by Linus Torvalds
: C++ is a horrible language. It's made more horrible by the fact that a lot of substandard programmers use it, to the point where it's much much easier to generate total and utter crap with it. Quite frankly, even if the choice of C were to do nothing but keep the C++ programmers out, that in itself would be a huge reason to use C.
: http://harmful.cat-v.org/software/c++/linus
In particular, I think that even though object-oriented programming does provide a heck of a paradigm (hey, I actually rewrote my Blackjack engine in C++ from its first version in C), it might subtly “force” people to do stuff that is either way too
- convoluted
- artificial
- hard to debug
- long to compile
I nevertheless think that
- std containers are pretty cool
- templating can give and edge on some cases
- sometimes OOP may be a better approach to the Unix rule of representation (sometimes)
However, the pros of C++ do not outweigh its cons for a cloud-first finite-elementish tool. Also, the name C++ is lame.
Because I am not insane (yet). I do not know any sane person that would start writing a piece of software from scratch using Fortran in the 21st century AD.
Python was not designed to perform actual computations but to add another layer so as to ease some (and only some) tasks. The actual computations are written in low-level languages, not in Python (nor Octave, R, etc.) And even if it was, I would not choose a language where scope depends on the indentation.
I don't know them in detail so I cannot tell if any of these languages would be a good fit for FeenoX. Keep in mind that it took me a while to know why not Fortran nor C++ even though there are people that would choose them over C. Maybe something of the sort happens with these new ideas (or not, I don't know).