Recent Posts
Elmer vs FEniCS - Part 3
In the Elmer vs FEniCS - Part 2 episode we studied the effect of mesh size on accuracy. We largely found the same results observed in the Mesh Order and Accuracy episode. We also confirmed that the agreement between FEniCS
and Elmer
is very good. However, we noticed that FEniCS
was significantly slower than Elmer
. This because we used a MUMPS
direct method on FEniCS
and a BiCGStabl
iterative method on Elmer
. In this episode we will explore the iterative solver options for FEniCS
and attempt to optimize execution time for our simulation.
Elmer vs FEniCS - Part 2
In the Elmer vs FEniCS - Part 1 episode we solved the Pulsating Sphere problem over a fairly coarse mesh. We solved the problem both with Elmer
and acoupy_helmholtz
, our FEniCS
based Helmholtz solver. We found that Elmer
and FEniCS
produce the same solution. This solution compares well to the exact solution, but has some appreciable magnitude error. In this episode we will study how this error changes with mesh size, and whether Elmer
and FEniCS
keep on providing the same solution.
Elmer vs FEniCS - Part 1
In the Writing Your Packages - Part 1 and Writing Your Packages - Part 2 episodes we introduced the most important concepts in writing your own simulation packages. We chosen Python
as a language and implemented two simple packages, acoupy_meshutil
and acoupy_helmholtz
. In this episode we will use the Pulsating Sphere benchmark problem to compare acoupy_helmholtz
to our old trustworthy Elmer
. Since our software is little more than syntactic sugar around FEniCS
this will allow us to compare with FEniCS
directly.
Writing Your Packages - Part 2
In the last episode we explained why we might want to make our own packages. We selected Python
as a language for this series as we will be writing software to facilitated FEniCS
simulations. In this episode we will take a look at the outline of the acoupy_meshutil
and acoupy_helmholtz
packages. We will not go into the details of creating Python
packages. For more information about that you can see Hosting Python Packages on Git Repositories. Instead, we will explain the basic outline of the packages.
Writing Your Packages - Part 1
In the last three episodes about FEniCS
we introduced the software and installed it. We also derived the weak form for the Helmholtz equation and developed some code to solve it. This is all nice and good, but writing scripts from scratch every time can be tedious and error prone. We can help ourselves by writing reusable code packages to serve as tools. For example, we could write a software package to solve the Helmholtz equation with FEniCS
. Or any other package we might find useful. The idea is that we can create an entire toolbox to deal with common tasks when creating simulations. We started the development of some tools under the acoupy
project. This series of articles will serve as a sort of “development” diary, illustrating how the packages are being developed and why. This will allow us to illustrate how to develop scientific software.
Intro to FEniCS - Part 3
In the Intro to FEniCS
- Part 2 episode we completed the first step in developing a FEniCS
model. We characterised the domain. Then, we selected a governing PDE. We then provided suitable boundary conditions. Finally, we expressed the PDE in weak form. We chosen a generalised Helmholtz equation as our PDE. In this episode we will start using the resulting weak form to develop a model.
Intro to FEniCS - Part 2
In the Intro to FEniCS
- Part 1 episode we introduced FEniCS
. We compared it to Elmer and covered how to install it on an Ubuntu workstation. This episode will cover the process of deriving the weak form for the Helmholtz equation. We will focus on the mathematics, which are advanced. Still, we will attempt to present the formalism in an approachable manner.
Intro to FEniCS - Part 1
In the previous episodes we used Elmer to develop a few different acoustics models. We were able to verify the accuracy of Elmer with few benchmark problems. Additionally, we studied the effect of mesh order and size on the accuracy. Finally, we started probing vibro-acoustic problems. We only scratched the surface of Elmer capabilities in this field. Still, it is worth to take a step back and reconsider these problems under a different light. The FEniCS
project is perfect for this. We will be introducing FEniCS
in this episode.
Animations With Paraview
In many of the previous episodes we produced animations of steady state Elmer FEM solutions. For simplicity we did not discuss the details of how to prepare them. The process is actually very simple, but there are few tips and tricks to keep in mind. This episode aims to provide a concise introduction to animations with ParaView.
Tuning Fork - Part 4
In the Tuning Fork - Part 3 episode we seen how to setup a weak vibroacoustic coupling problem. We applied an harmonic body force to our tuning fork, and used its displacement field to wake the acoustic field within a coupled volume of air. In this episode we will review the results.
Tuning Fork - Part 3
In the Tuning Fork - Part 1 and Tuning Fork - Part 2 we set up and solved an Elmer study for the modes of vibration of a tuning fork. We learned that the principal mode of the fork, the one related to the nominal frequency of the fork, is very marginally affected by boundary conditions affecting the handle of the fork. In this episode we will attempt studying the acoustic field emitted by the fork in the surrounding air. In other words, we will start exploring the coupling of vibration and acoustics.
Tuning Fork - Part 2
In the Tuning Fork - Part 1 episode we setup a new study for the determination of the elastic modes of vibration of a tuning fork. Our study made use a few meshing and solver setting ideas we learned along the way, including the use of $p$-elements. In this episode we will examine the results from the Elmer simulation.