FreeFem++ Source Code Review
05 Feb 2016
This post is an ongoing effort to document my findings as I walk through the source code of a tool I really like, FreeFem++.
more ...This post is an ongoing effort to document my findings as I walk through the source code of a tool I really like, FreeFem++.
more ...In this post I’m going to illustrate how to implement a finite element simulation of an alternator in motion coupled to a linear electrical circuit.
more ...Here is a sci-fi-ish coastal scene I’m currently working on. It’s using results from the shallow water simulator.
more ...In this post we upgrade the mild-slope equation we solved previously with a generic energy dissipation term:
where \(W( \eta )\)
can account for the energy dissipated by:
We experiment with a non-linear energy dissipation model of bottom friction implemented using simple Picard iteration. We discuss how to optimize the non-linear loop, in particular the assembly on the GPU by using graph coloring techniques.
Engage !
more ...In this post I will describe how to add a new modifier similar to the ocean modifier into Blender.
more ...In this post I will show you how to use a USB capable AVR MCU such as the atmega 32u4 and the LUFA framework in order to create USB joystick and joypad HID adapters.
more ...In this third mini post, I will tackle the weak formulation of the linear mild-slope equation and introduce the boundary conditions. The linear version of the equation takes into account the following physical phenomena:
Here is the equatiom:
where
\(\eta : \Omega(\mathbb{R} \times \mathbb{R}) \to \mathbb{C}\)
is the unknown complex amplitude of the water free-surface elevation within the domain \(\Omega\)
;\(k \in \mathbb{R}^{+}\)
is the wave number;\(c_p, c_g : \Omega(\mathbb{R} \times \mathbb{R}) \to \mathbb{R}^{+}\)
are respectively the phase and group velocities of the prescribed wave.The boundary conditions will be introduced too.
I won’t discuss the derivation of the governing equation in this post.
If everything goes smoothly, at the end of that post, we should see how a monochromatic wave behaves in the Lyttelton port.
more ...In this second mini-post, I’m not going to talk about the mild-slope equation : this will be for the third post. One of the main reason I’m postponing it, is that I’ve been granted access, for a limited amount of time, to a Tesla-accelerated compute cluster (kudos to Mike and Eliot). I gratefully acknowledge Microway for providing access to a Tesla-accelerated compute cluster.
The plan is to first implement a prototype of the parallel solver in Octave and then rewrite it in C++ to target the cluster.
Even though I stick to the Poisson equation, all the material presented in this post will still be usable when switching to the mild-slope equation in mini-post 3.
more ...In this series of mini-posts, I will try to create a wave penetration simulator, a baby version of HARES.
For this kickoff post I will focus on retrieving the Lyttelton port geometry, generate a mesh, partition it into more than two subdomains (5 for example) and modify the Perl scripts we used in the first Schur complement post in order to deal with many subdomains. I will also demonstrate how we can use the Google Maps JavaScript API, the OpenStreetMap tiles as well as WebGL to display the mesh and the sudomains.
more ...We continue our informal study of domain decomposition methods (DDMs).
We will describe non-overlaping DDMs in terms of differential operators as opposed to basic linear algebra operations. This will later allow us to easily describe more sophisticated parallel algorithms such as the Dirichlet-Neuman and Neuman-Neuman algorithms.
In order to go one step further in that study it is necessary to introduce some PDE related theory and lingo. However I will try to keep it light and will just introduce what is necessary to build an intuition.
more ...I’m starting growing Bhut Jolokia and other peppers out of seeds. I would like to automate, monitor and document as much as possible the process so that I decided to build an overkill programable power board out of stuff I ordered some time ago from DX as well as some scrap parts. This includes:
For this first milestone, I only want to be able to schedule events like turn heater, lighting or irrigation circuits on & off independantly.
Later I would like to take advantage of the remaining inputs of the embeded MCU
to read temperature and humidity
sensors like this one for example.
This post is going to illustrate the primal Schur complement method briefly described here. The Schur complement method is a strategy one can use to divide a finite element problem into independant sub-problems. It’s not too involved but requires good understanding of block Gaussian elimination, reordering degrees of freedom plus a few “tricks of the trade” to avoid computing inverse of large sparse matrices.
more ...Welcome to my blog. More to come soon …
more ...