Skip to content

Latest commit

 

History

History
171 lines (106 loc) · 8.3 KB

FAQ.md

File metadata and controls

171 lines (106 loc) · 8.3 KB
title author lang
Frequently Asked Questions about FeenoX
Jeremy Theler
en-US

What is FeenoX?

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:

How should I cite FeenoX?

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

What does FeenoX mean?

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")

How should FeenoX be pronounced?

It would be something like fee-naaks: /fiːnɒks/
But whatever works for you is fine.

double-click.md

How do I create input decks for FeenoX?

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.

The Kate Text Editor can be used to prepare input files with syntax highlighting.

Does FeenoX support beam and/or shell elements?

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.

What license does FeenoX have?

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

Why is FeenoX written in C and not in...

See the programming guide for further discussion.

C++?

Let us first start with some generalities

Why is C still in use even though we have C++?

: https://www.quora.com/Why-is-C-still-in-use-even-though-we-have-C++-Is-there-anything-that-C-can-do-but-C++-cant-or-maybe-something-that-is-easier-to-do-in-C-rather-than-C++

As a C programmer, why didn't you switch to C++ in your career?

: https://qr.ae/pGzfAO

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.

Fortran?

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 or R?

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.

Go, Rust or Julia?

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).