Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 1 addition & 6 deletions index1.html
Original file line number Diff line number Diff line change
@@ -1,10 +1,5 @@

<center><h1>Information</h1></center>

<i>pyoomph</i> is a object-oriented multi-physics finite element framework. It is mainly a custom high level python frontend for the main functionalities of the powerful C++ library <a href="https://oomph-lib.github.io/oomph-lib/doc/html/">oomph-lib</a>. While pyoomph does not support the entire plethora of features provided by oomph-lib, pyoomph follows a complementary approach, allowing for rapid development and e.g. automatic nondimensionalization and advanced stability analysis beyond oomph-lib's native capabilities.

<br>
<br>

For performance reasons, pyoomph uses <a href="https://www.ginac.de">GiNaC</a> and <a href="https://www.ginac.de/CLN/">CLN</a> to automatically generate C code for the equations you have entered in python. It automatically generates C code for symbolically derived Jacobian matrices, parameter derivatives and Hessians. These even include the complicated derivatives with respect to the moving mesh coordinates on a symbolical level. The generated code is compiled and linked back to the running python script, either with the <a href="https://bellard.org/tcc/">TinyC compiler</a> (invoked by <a href="https://github.com/metab0t/tccbox">tccbox</a>) or, when installed, with a more performant alternative like <a href="https://gcc.gnu.org/">gcc</a>, <a href="https://clang.llvm.org/">LLVM/clang</a> or <a href="https://docs.microsoft.com/visualstudio/msbuild/msbuild">MSBuild</a>.
<i>pyoomph</i> is an <b>o</b>bject-<b>o</b>riented <b>m</b>ulti-<b>ph</b>ysics finite element framework for <b>Py</b>thon. It is mainly a custom high level frontend for the prime functionalities of the powerful C++ library <a href="https://oomph-lib.github.io/oomph-lib/doc/html/">oomph-lib</a>. While pyoomph does not support the entire plethora of features provided by oomph-lib, pyoomph follows a complementary approach, allowing for rapid development and e.g. automatic nondimensionalization and advanced stability analysis beyond oomph-lib's native capabilities.

3 changes: 1 addition & 2 deletions index2.html
Original file line number Diff line number Diff line change
Expand Up @@ -42,9 +42,8 @@
</center>

<center><h1>How it works</h1></center>
Formulating custom equations, meshes, problems and materials properties is directly done in Python. Subsequently, once the problem is assembled, the monolithic Jacobian matrix is symbolically derived. To speed up the assembly process, C code is automatically generated, compiled and loaded. Thereby, pyoomph is on par with hand-written implementations in a compiled programming language.
Formulating custom equations, meshes, problems and materials properties is directly done in Python. Subsequently, once the problem is assembled, the monolithic Jacobian matrix is symbolically derived. To speed up the assembly process, C code to fill the residuals and the Jacobian matrix is automatically generated, compiled and loaded back to the running program. For the code generation, pyoomph makes use of <a href="https://www.ginac.de">GiNaC</a> and <a href="https://www.ginac.de/CLN/">CLN</a>. Besides symbolically derived Jacobian matrices, also parameter derivatives and Hessians, even including the complicated derivatives with respect to the moving mesh coordinates on a symbolical level, are transferred to performant C code. The generated code is compiled and linked back to the running python script, either with the <a href="https://bellard.org/tcc/">TinyC compiler</a> (invoked by <a href="https://github.com/metab0t/tccbox">tccbox</a>) or, when installed, with a more performant alternative like <a href="https://gcc.gnu.org/">gcc</a>, <a href="https://clang.llvm.org/">LLVM/clang</a> or <a href="https://docs.microsoft.com/visualstudio/msbuild/msbuild">MSBuild</a>. Thereby, pyoomph is on par with hand-written implementations in a compiled programming language, yet with the ease of Python as scripting language. This approach allows for rapid development of complicated multi-physics and multi-domain problems, including physical dimensions (units) and realistic material properties, varying e.g. with the temperature or the composition. <br><br>

<center><img src="media/framework.gif" width="80%"><p>[From our paper <a href="https://doi.org/10.1016/j.jcp.2024.113306">Christian Diddens and Duarte Rocha, <i>Bifurcation tracking on moving meshes and with consideration of azimuthal symmetry breaking instabilities</i>, J. Comput. Phys. <b>518</b>, 113306, (2024).</a>]</p></center>

This approach allows for rapid development of complicated multi-physics and multi-domain problems, including physical dimensions (units) and realistic material properties, varying e.g. with the temperature or the composition.

Loading