1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668
|
FeenoX: A cloud-first free no-fee no-X uniX-like finite-element(ish) computational engineering tool
- 1 About FeenoX
- 1.1 Extents
- 1.1.1 Examples
- 1.1.2 Tutorials
- 1.1.3 Tests
- 1.2 Capabilities
- 1.3 Usefulness
- 2 Documentation
- 3 Quickstart
- 3.1 Install from apt
- 3.2 Download
- 3.3 Git repository
- 4 Licensing
- 4.1 Contributing
- 5 Further information
[DOI]
[1 About FeenoX]: #about-feenox
[1.1 Extents]: #extents
[1.1.1 Examples]: #examples
[1.1.2 Tutorials]: #tutorials
[1.1.3 Tests]: #tests
[1.2 Capabilities]: #capabilities
[1.3 Usefulness]: #usefulness
[2 Documentation]: #documentation
[3 Quickstart]: #quickstart
[3.1 Install from apt]: #install-from-apt
[3.2 Download]: #download
[3.3 Git repository]: #git-repository
[4 Licensing]: #licensing
[4.1 Contributing]: #sec:contributing
[5 Further information]: #further-information
[DOI]: https://joss.theoj.org/papers/10.21105/joss.05846/status.svg
[1]: https://doi.org/10.21105/joss.05846
About FeenoX
FeenoX is a cloud-first free and open source tool to solve
engineering-related problems using a computer (or many computers in
parallel) with a particular design basis.
Consider the following input file:
PROBLEM mechanical MESH box.msh
T(x,y,z) = sqrt(x^2 + y^2) + z # non-trivial temperature distribution
E = 200e3 * (1-T(x,y,z)/300) # temperature-dependent Young modulus
nu = 0.3
BC left fixed # left face fully fixed
BC top p=1e4*(1+x) # top face with a triapezoidal load
WRITE_RESULTS FORMAT vtu
Note that
- The input file is made of simple self-descriptive English keywords
- Material properties and boundary conditions can be expressions of x, y
and z
- Input mesh is is Gmsh’s format .msh
- Output results are in Paraview’s .vtk/.vtu formats
Each of these items has a lot of design and usage implications,
thoroughly discussed in the Software Design Specification, ranging from
integrating FeenoX as a back end for different front ends with a
reasonably low effort (e.g. SunCAE), down to suitability for interaction
with Large Language Models. As a reference, the reader is encouraged to
compare the above input syntax with any other FEA solver and then
consider how to ask ChatGPT & friends for help to create an input file
from scratch. Or how to write a Graphical User Interface that would need
to create something the solver can read. Plus, it can be installed with
apt install feenox
------------------------------------------------------------------------
Choose your background for further details about the what, how and whys:
- Industry Engineer
- Unix Hacker
- Academic Professor
See the following paper for a brief summary (and to cite FeenoX in your
work):
- Theler J, “FeenoX: a cloud-first finite-element(ish) computational
engineering tool,” Journal of Open Source Software, vol. 9, no. 95,
p. 5846, Mar. 2024, doi: 10.21105/joss.05846.
News
- First non-trivial large-deformation mechanical example: NAFEMS GNL5
“Large-deformation beam”
-
FeenoX is now in Debian (testing) and Ubuntu 25.04!
You can install FeenoX from APT
sudo apt install feenox
Check progress on the following pages:
- https://packages.debian.org/unstable/science/feenox
- https://launchpad.net/ubuntu/+source/feenox
-
Open-source web-based UX for FeenoX.
Take a look at SunCAE for an example of how to write a front end
for FeenoX.
-
IB students
Remember that your first read should be the 0-th tutorial,
Setting up your workspace
[FeenoX]: https://seamplex.com/feenox
[cloud-first]: https://seamplex.com/feenox/doc/sds.html#cloud-first
[free and open source]: #licensing
[engineering-related problems]: #extents
[many computers in parallel]: https://www.seamplex.com/feenox/doc/sds.html#sec:scalability
[particular design basis]: https://seamplex.com/feenox/doc/sds.html
[input file]: https://www.seamplex.com/feenox/doc/sds.html#sec:input
[simple]: https://www.seamplex.com/feenox/doc/sds.html#sec:simple
[self-descriptive English]: https://www.seamplex.com/feenox/doc/sds.html#sec:sugar
[keywords]: https://www.seamplex.com/feenox/doc/sds.html#sec:nouns_verbs
[Material properties and boundary conditions]: https://www.seamplex.com/feenox/doc/sds.html#sec:flexibility
[expressions of x, y and z]: https://www.seamplex.com/feenox/doc/sds.html#sec:expression
[Gmsh’s format .msh]: https://www.seamplex.com/feenox/doc/sds.html#sec:interoperability
[Software Design Specification]: https://www.seamplex.com/feenox/doc/sds.html
[SunCAE]: https://www.seamplex.com/suncae
[Industry Engineer]: ./README4engineers.md
[Unix Hacker]: ./README4hackers.md
[Academic Professor]: ./README4academics.md
[cite FeenoX in your work]: ./doc/FAQ.md#how-should-i-cite-feenox
[10.21105/joss.05846]: https://doi.org/10.21105/joss.05846
[NAFEMS GNL5 “Large-deformation beam”]: https://www.seamplex.com/feenox/examples/mechanical.html#nafems-gnl5-large-deformation-beam
[Setting up your workspace]: https://www.seamplex.com/feenox/doc/tutorials/000-setup/
Extents
Examples
- Basic mathematics
- Systems of ODEs/DAEs
- Laplace’s equation
- Heat conduction
- Elasticity (small and large strain)
- Modal analysis
- Neutron diffusion
- Neutron SN
[Basic mathematics]: https://seamplex.com/feenox/examples/basic.html
[Systems of ODEs/DAEs]: https://seamplex.com/feenox/examples/daes.html
[Laplace’s equation]: https://seamplex.com/feenox/examples/laplace.html
[Heat conduction]: https://seamplex.com/feenox/examples/thermal.html
[Elasticity (small and large strain)]: https://seamplex.com/feenox/examples/mechanical.html
[Modal analysis]: https://seamplex.com/feenox/examples/modal.html
[Neutron diffusion]: https://seamplex.com/feenox/examples/neutron_diffusion.html
[Neutron SN]: https://seamplex.com/feenox/examples/neutron_sn.html
Tutorials
0. Setting up your workspace
1. Overview: the tensile test case
2. Fun & games: solving mazes with PDES instead of AI
3. Heat conduction
[2]: https://www.seamplex.com/feenox/doc/tutorials/000-setup
[Overview: the tensile test case]: https://www.seamplex.com/feenox/doc/tutorials/110-tensile-test
[Fun & games: solving mazes with PDES instead of AI]: https://www.seamplex.com/feenox/doc/tutorials/120-mazes
[3]: https://www.seamplex.com/feenox/doc/tutorials/320-thermal
Tests
The tests directory in the repository has hundreds of
- grep-able examples
- unit and regression tests,
- (crude) mathematical & code verification tests (as in “are we solving
right the equations?”),
- subdirectories with further case studies
- mms
- thermal
- 2d
- 3d
- mechanical
- sdef
- ldef
- nafems
- le10
[tests]: https://github.com/seamplex/feenox/tree/main/tests
[unit and regression tests]: https://seamplex.com/feenox/doc/compilation.html#sec:test-suite
[mms]: https://github.com/seamplex/feenox/tree/main/tests/mms
[thermal]: https://github.com/seamplex/feenox/tree/main/tests/mms/thermal
[2d]: https://github.com/seamplex/feenox/tree/main/tests/mms/thermal/2d
[3d]: https://github.com/seamplex/feenox/tree/main/tests/mms/thermal/3d
[mechanical]: https://github.com/seamplex/feenox/tree/main/tests/mms/mechanical
[sdef]: https://github.com/seamplex/feenox/tree/main/tests/mms/thermal/sdef
[ldef]: https://github.com/seamplex/feenox/tree/main/tests/mms/thermal/ldef
[nafems]: https://github.com/seamplex/feenox/tree/main/tests/nafems
[le10]: https://github.com/seamplex/feenox/tree/main/tests/nafems/le10
Capabilities
- Both free as in “free speech” and in “free beer”
- The problem to solve is defined through a syntactically-sugared
self-descriptive English-like plain-text input file that should
resemble the original human-friendly problem formulation as much as
possible:
- no need to recompile if the problem changes (FeenoX is a program,
not a library)
- nouns are definitions and verbs are instructions
- simple problems need simple inputs
- everything is an expression
- 100%-defined user output (no PRINT nor WRITE_RESULTS instructions,
no output)
- Cloud-first design (cloud friendliness is not enough)
- MPI parallelization
- Leverages high-quality well-established free and open source libraries
to solve…
- general mathematical problems using GNU GSL
- sets of ODEs/DAEs using SUNDIALS
- PDEs formulated with the finite element method
- reads mesh in Gmsh format
- uses PETSc/SLEPc to solve
- linear systems (KSP)
- non-linear systems (SNES)
- time-dependent systems (TS)
- generalized eigen-value problems (EPS)
- writes results in Gmsh’s .msh format and/or Paraview’s VTU/VTK
formats
- Focuses on flexibility, especially when defining non-uniform
multi-solid material properties from ASME tables
- Follows the Unix programming philosophy
- rule of separation
- rule of silence
- rule of economy
- Each PDE (i.e. from Laplace downward in the list of examples) is
implemented in a subdirectory within src/pde of the source tree
- any subdirectory can be removed if a particular PDE is not needed
- any subdirectory can be used as a template to add a new PDE to the
capabilities
- Space, time and/or solution-dependent material properties and boundary
conditions
- algebraic expressions, and/or
- point-wise interpolated data
- Command-line argument expansion for
- increased flexibility,
- parametric sweeps, and/or
- optimization loops
- Steady-state, [quasi-static] and/or transient problems
- Linear and non-linear problems
- Possibility to verify the code using the Method of Manufactured
Solutions
- Separate repository to profile and study code performance using
Google’s benchmark library
[problem]: https://www.seamplex.com/feenox/doc/feenox-manual.html#problem
[syntactically-sugared]: https://seamplex.com/feenox/doc/sds.html#sec:syntactic
[self-descriptive English-like plain-text input file]: https://seamplex.com/feenox/doc/sds.html#sec:input
[resemble the original human-friendly problem formulation]: https://seamplex.com/feenox/doc/sds.html#sec:matching-formulations
[no need to recompile if the problem changes]: https://seamplex.com/feenox/doc/sds.html#sec:introduction
[nouns are definitions and verbs are instructions]: https://seamplex.com/feenox/doc/sds.html#sec:nouns_verbs
[simple problems need simple inputs]: https://seamplex.com/feenox/doc/sds.html#sec:simple
[everything is an expression]: https://seamplex.com/feenox/doc/sds.html#sec:expression
[100%-defined user output]: https://seamplex.com/feenox/doc/sds.html#sec:output
[WRITE_RESULTS]: https://www.seamplex.com/feenox/doc/feenox-manual.html#write_results
[Cloud-first design]: https://seamplex.com/feenox/doc/sds.html#cloud-first
[MPI parallelization]: https://seamplex.com/feenox/doc/sds.html#sec:scalability
[general mathematical problems]: https://seamplex.com/feenox/examples/basic.html
[GNU GSL]: https://www.gnu.org/software/gsl/
[sets of ODEs/DAEs]: https://seamplex.com/feenox/examples/daes.html
[SUNDIALS]: https://computing.llnl.gov/projects/sundials
[PDEs]: https://github.com/seamplex/feenox/tree/main/src/pdes
[finite element method]: https://en.wikipedia.org/wiki/Finite_element_method
[Gmsh]: http://gmsh.info/
[PETSc]: https://petsc.org/release/
[SLEPc]: https://slepc.upv.es/
[KSP]: https://petsc.org/release/manual/ksp/
[SNES]: https://petsc.org/release/manual/snes/
[TS]: https://petsc.org/release/manual/ts/
[EPS]: https://slepc.upv.es/documentation/current/docs/manualpages/EPS/index.html
[.msh]: http://gmsh.info/doc/texinfo/gmsh.html#MSH-file-format
[Paraview]: https://www.paraview.org/
[VTU/VTK]: https://docs.vtk.org/en/latest/design_documents/VTKFileFormats.html
[flexibility]: https://seamplex.com/feenox/doc/sds.html#sec:flexibility
[non-uniform multi-solid material properties from ASME tables]: https://www.seamplex.com/feenox/doc/tutorials/320-thermal/#from-a-steady-state
[Unix programming philosophy]: https://seamplex.com/feenox/doc/sds.html#sec:unix
[rule of separation]: https://seamplex.com/feenox/doc/sds.html#sec:separation
[rule of silence]: https://seamplex.com/feenox/doc/sds.html#sec:silence
[rule of economy]: https://seamplex.com/feenox/doc/sds.html#sec:economy
[is implemented in a subdirectory]: https://seamplex.com/feenox/doc/sds.html#sec:extensibility
[Space]: https://github.com/seamplex/feenox/blob/main/tests/thermal-two-squares-material-explicit-space.fee
[time]: https://github.com/seamplex/feenox/blob/main/tests/nafems-t3-1d.fee
[material properties]: https://github.com/seamplex/feenox/blob/main/tests/wilson-2d.fee
[boundary conditions]: https://github.com/seamplex/feenox/blob/main/tests/radiation-as-convection-celsius.fee
[algebraic expressions]: https://seamplex.com/feenox/examples/mechanical.html#parallelepiped-whose-youngs-modulus-is-a-function-of-the-temperature
[point-wise interpolated data]: https://seamplex.com/feenox/examples/mechanical.html#temperature-dependent-material-properties
[Command-line argument expansion]: https://seamplex.com/feenox/doc/sds.html#sec:run-time-arguments
[increased flexibility]: https://seamplex.com/feenox/examples/basic.html#computing-the-derivative-of-a-function-as-a-unix-filter
[parametric sweeps]: https://seamplex.com/feenox/doc/sds.html#sec:parametric
[optimization loops]: https://seamplex.com/feenox/doc/sds.html#optimization-loops
[Steady-state]: https://www.seamplex.com/feenox/doc/tutorials/120-mazes/#solving-the-steady-state-laplace-equation
[transient problems]: https://www.seamplex.com/feenox/doc/tutorials/320-thermal/#sec:transient
[Linear]: https://www.seamplex.com/feenox/doc/tutorials/320-thermal/#linear-steady-state-problems
[non-linear]: https://www.seamplex.com/feenox/doc/tutorials/320-thermal/#non-linear-state-state-problems
[Method of Manufactured Solutions]: https://github.com/seamplex/feenox/tree/main/tests/mms
[repository to profile and study code performance]: https://github.com/seamplex/feenox-benchmark
[Google’s benchmark library]: https://github.com/google/benchmark
Usefulness
- CAEplex: a web-based thermo-mechanical solver running on the cloud
- Non-conformal mesh mapping
- ASME stress linearization for pressurized pipes and vessels
- Assessment of material properties from tabulated sources
- Environmentally-assisted fatigue analysis in dissimilar interfaces of
nuclear pipes
- Neutron transport in the cloud
- Solving mazes without AI
- Parametric NAFEMS LE10 benchmark: comparison of resource consumption
for different FEA programs
- Some Youtube videos
[CAEplex]: https://www.caeplex.com
[web-based thermo-mechanical solver running on the cloud]: https://www.youtube.com/watch?v=DOnoXo_MCZg
[Non-conformal mesh mapping]: https://github.com/gtheler/feenox-non-conformal-mesh-interpolation
[ASME stress linearization for pressurized pipes and vessels]: https://github.com/seamplex/pipe-linearize
[Assessment of material properties from tabulated sources]: https://seamplex.com/feenox/examples/basic.html#on-the-evaluation-of-thermal-expansion-coefficients
[Environmentally-assisted fatigue analysis in dissimilar interfaces of nuclear pipes]:
https://github.com/seamplex/piping-asme-fatigue
[Neutron transport in the cloud]: https://seamplex.com/thesis/html/front/abstract.html
[Solving mazes without AI]: https://www.linkedin.com/feed/update/urn:li:activity:6973982270852325376/
[Parametric NAFEMS LE10 benchmark: comparison of resource consumption for different FEA programs]:
https://seamplex.com/feenox/tests/nafems/le10/
[Some Youtube videos]: https://seamplex.com/feenox/doc/#sec:youtube
Documentation
Browse through the documentation index and/or the doc subdirectory of
the Github repository for
- FAQs, including what FeenoX means
- Manual
- Description
- Software Design Requirements
- Software Design Specification
- Unix man page (accessible through man feenox after installation)
- History
- Compilation guide
- Programming guide
[documentation index]: doc
[doc]: https://github.com/seamplex/feenox/tree/main/doc
[Github repository]: https://github.com/seamplex/feenox/
[FAQs]: ./doc/FAQ.md
[what FeenoX means]: https://seamplex.com/feenox/doc/FAQ.html#what-does-feenox-mean
[Manual]: https://seamplex.com/feenox/doc/feenox-manual.html
[Description]: https://www.seamplex.com/feenox/doc/feenox-desc.html
[Software Design Requirements]: https://seamplex.com/feenox/doc/srs.html
[4]: https://seamplex.com/feenox/doc/sds.html
[Unix man page]: https://seamplex.com/feenox/doc/feenox.1.html
[History]: ./doc/history.md
[Compilation guide]: ./doc/compilation.md
[Programming guide]: ./doc/programming.md
Quickstart
Install from apt
If you use Debian (either Sid, or Trixie with backports) or Ubuntu 25.04
or higher, you can do
sudo apt install feenox
See these links for details about the packages:
- https://packages.debian.org/unstable/science/feenox
- https://launchpad.net/ubuntu/+source/feenox
[Debian]: https://www.debian.org
[Sid]: https://wiki.debian.org/DebianUnstable
[Trixie]: https://www.debian.org/releases/trixie
[backports]: https://backports.debian.org
[Ubuntu 25.04]: https://releases.ubuntu.com/plucky
Download
----------------------------- -----------------------------------------------------
Debian package https://packages.debian.org/unstable/science/feenox
Ubuntu package https://launchpad.net/ubuntu/+source/feenox
GNU/Linux binaries https://www.seamplex.com/feenox/dist/linux
Source tarballs https://www.seamplex.com/feenox/dist/src
Github repository https://github.com/seamplex/feenox/
----------------------------- -----------------------------------------------------
Generic GNU/Linux binaries are provided as statically-linked executables
for convenience. They do not support MUMPS nor MPI and have only basic
optimization flags. Please compile from source for high-end
applications. See detailed compilation instructions.
- Be aware that FeenoX does not have a GUI. Read the documentation,
especially the description and the FAQs. Ask for help on the GitHub
discussions page if you do now understand what this means.
- You can still use FeenoX through a web-based UI through SunCAE.
[detailed compilation instructions]: doc/compilation.md
[documentation]: https://seamplex.com/feenox/doc/
[description]: https://www.seamplex.com/feenox/doc/feenox-desc.html
[5]: https://seamplex.com/feenox/doc/FAQ.html
[GitHub discussions page]: https://github.com/seamplex/feenox/discussions
[SunCAE]: https://www.seamplex.com/suncae
Git repository
The Git repository has the latest sources repository. To compile,
proceed as follows. If something goes wrong and you get an error, do not
hesitate to ask in FeenoX’s discussion page.
If you do not have Git or Autotools, download a source tarball and
proceed with the usual configure & make procedure. See these
instructions.
1. Install mandatory dependencies
sudo apt-get update
sudo apt-get install git build-essential make automake autoconf libgsl-dev
If you cannot install libgsl-dev but still have git and the build
toolchain, you can have the configure script to download and compile
it for you. See point 4 below.
2. Install optional dependencies (of course these are optional but
recommended)
sudo apt-get install libsundials-dev petsc-dev slepc-dev
3. Clone Github repository
git clone https://github.com/seamplex/feenox
4. Bootstrap, configure, compile & make
cd feenox
./autogen.sh
./configure
make -j4
If you cannot (or do not want to) use libgsl-dev from a package
repository, call configure with --enable-download-gsl:
./configure --enable-download-gsl
If you do not have Internet access, get the tarball manually, copy
it to the same directory as configure and run again. See the
detailed compilation instructions for an explanation.
5. Run test suite (optional)
make check
6. Install the binary system wide (optional)
sudo make install
If you do not have root permissions, configure with your home
directory as prefix and then make install as a regular user:
./configure --prefix=$HOME
make
make install
To stay up to date, pull and then autogen, configure and make (and
optionally install):
git pull
./autogen.sh
./configure
make -j4
sudo make install
See the download page and the compilation guide for detailed
information.
[discussion page]: https://github.com/seamplex/feenox/discussions
[source tarball]: https://seamplex.com/feenox/dist/src/
[these instructions]: doc/source.md
[6]: compilation.md
[download page]: https://seamplex.com/feenox/download.html
[compilation guide]: ./doc/compilation.md
Licensing
FeenoX is distributed under the terms of the GNU General Public License
version 3 or (at your option) any later version. The following text was
borrowed from the Gmsh documentation. Replacing “Gmsh” with “FeenoX”
(using Unix’s sed) gives:
FeenoX is “free software”; this means that everyone is free to use it
and to redistribute it on a free basis. FeenoX is not in the public
domain; it is copyrighted and there are restrictions on its
distribution, but these restrictions are designed to permit everything
that a good cooperating citizen would want to do. What is not allowed
is to try to prevent others from further sharing any version of FeenoX
that they might get from you.
Specifically, we want to make sure that you have the right to give
away copies of FeenoX, that you receive source code or else can get it
if you want it, that you can change FeenoX or use pieces of FeenoX in
new free programs, and that you know you can do these things.
To make sure that everyone has such rights, we have to forbid you to
deprive anyone else of these rights. For example, if you distribute
copies of FeenoX, you must give the recipients all the rights that you
have. You must make sure that they, too, receive or can get the source
code. And you must tell them their rights.
Also, for our own protection, we must make certain that everyone finds
out that there is no warranty for FeenoX. If FeenoX is modified by
someone else and passed on, we want their recipients to know that what
they have is not what we distributed, so that any problems introduced
by others will not reflect on our reputation.
The precise conditions of the license for FeenoX are found in the
General Public License that accompanies the source code. Further
information about this license is available from the GNU Project
webpage http://www.gnu.org/copyleft/gpl-faq.html.
FeenoX is licensed under the terms of the GNU General Public License
version 3 or, at the user convenience, any later version. This means
that users get the four essential freedoms:[1]
0. The freedom to run the program as they wish, for any purpose.
1. The freedom to study how the program works, and change it so it does
their computing as they wish.
2. The freedom to redistribute copies so they can help others.
3. The freedom to distribute copies of their modified versions to
others.
So a free program has to be open source, but it also has to explicitly
provide the four freedoms above both through the written license and
through appropriate mechanisms to get, modify, compile, run and document
these modifications using well-established and/or reasonable
straightforward procedures. That is why licensing FeenoX as GPLv3+ also
implies that the source code and all the scripts and makefiles needed to
compile and run it are available for anyone that requires it (i.e. it is
compiled with ./configure && make). Anyone wanting to modify the program
either to fix bugs, improve it or add new features is free to do so. And
if they do not know how to program, the have the freedom to hire a
programmer to do it without needing to ask permission to the original
authors. Even more, the documentation is released under the terms of the
Creative Commons Attribution-ShareAlike 4.0 International License so
these new (or modified) features can be properly documented as well.
Nevertheless, since these original authors are the copyright holders,
they still can use it to either enforce or prevent further actions from
the users that receive FeenoX under the GPLv3+. In particular, the
license allows re-distribution of modified versions only if
a. they are clearly marked as different from the original, and
b. they are distributed under the same terms of the GPLv3+.
There are also some other subtle technicalities that need not be
discussed here such as
- what constitutes a modified version (which cannot be redistributed
under a different license)
- what is an aggregate (in which each part be distributed under
different licenses)
- usage over a network and the possibility of using AGPL instead of GPL
to further enforce freedom
These issues are already taken into account in the FeenoX licensing
scheme.
It should be noted that not only is FeenoX free and open source, but
also all of the libraries it depends on (and their dependencies) also
are. It can also be compiled using free and open source build tool
chains running over free and open source operating systems.
[1] There are some examples of pieces of computational software which
are described as “open source” in which even the first of the four
freedoms is denied. The most iconic case is that of Android, whose
sources are readily available online but there is no straightforward way
of updating one’s mobile phone firmware with a customized version, not
to mention vendor and hardware lock ins and the possibility of bricking
devices if something unexpected happens. In the nuclear industry, it is
the case of a Monte Carlo particle-transport program that requests users
to sign an agreement about the objective of its usage before allowing
its execution. The software itself might be open source because the
source code is provided after signing the agreement, but it is not free
(as in freedom) at all.
[GNU General Public License]: http://www.gnu.org/copyleft/gpl.html
[Gmsh documentation]: http://gmsh.info/doc/texinfo/gmsh.html#Copying-conditions
[General Public License]: https://github.com/seamplex/feenox/blob/master/COPYING
[7]: https://www.gnu.org/licenses/gpl-3.0
[the documentation]: https://seamplex.com/feenox/doc/
[Creative Commons Attribution-ShareAlike 4.0 International License]: https://creativecommons.org/licenses/by-sa/4.0/
[AGPL]: https://en.wikipedia.org/wiki/GNU_Affero_General_Public_License
Contributing
Contributions from hackers and/or academics are welcome, especially new
types of PDEs and new formulations of existing PDEs. For elliptic
operators feel free to use the Laplace equation at src/pdes/laplace as a
template.
1. Read the Programming Guide.
2. Browse Github discussions and open a new thread explaining what you
want to do and/or asking for help.
3. Fork the Git repository under your Github account
4. Create a pull request, including
- code,
- documentation, and
- tests.
5. Follow up the review procedure.
Note that
- It is mandatory to observe the Code of Conduct.
- The contributed code has to be compatible with the GPLv3+ license.
- Each author keeps the copyright of the contribution.
- You can ask!
[hackers]: README4hackers.html
[academics]: README4academics.html
[src/pdes/laplace]: https://github.com/seamplex/feenox/tree/main/src/pdes/laplace
[8]: https://seamplex.com/feenox/doc/programming.html
[Github discussions]: https://github.com/seamplex/feenox/discussions
[Git repository]: https://github.com/seamplex/feenox/
[Code of Conduct]: https://seamplex.com/feenox/doc/CODE_OF_CONDUCT.html
[GPLv3+ license]: https://www.seamplex.com/feenox/#sec:licensing
Further information
Home page: https://www.seamplex.com/feenox
Repository: https://github.com/seamplex/feenox
Bug reporting: https://github.com/seamplex/feenox/issues
Discussions: https://github.com/seamplex/feenox/discussions
Follow us: YouTube LinkedIn Github
------------------------------------------------------------------------
FeenoX is licensed under GNU GPL version 3 or (at your option) any later
version.
FeenoX is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
[YouTube]: https://www.youtube.com/channel/UCC6SzVLxO8h6j5rLlfCQPhA
[LinkedIn]: https://www.linkedin.com/company/seamplex/
[Github]: https://github.com/seamplex
[GNU GPL version 3]: http://www.gnu.org/copyleft/gpl.html
|