[ANN] SurfaceTopology.jl, LaplaceBIE.jl and ElTopo.jl

During my last Master year, I worked on the simulation of a magnetic liquid droplet in a fast rotating field where experimentally star instability was observed. During this project, I had to find a way to calculate surface magnetic field values which makes up a force deforming a droplet, and I had to find a way to keep the triangular mesh in a good quality during its shape deformations. The project was successful, and now I present three packages SurfaceTopology.jl, LaplaceBIE.jl, ElTopo.jl which should help to build uppon the success we had.

Erdmanis, J. & Kitenbergs, G. & Perzynski, R. & Cebers, A. (2017) Magnetic micro-droplet in rotating field: numerical simulation and comparison with experiment

One of the annoying things implementing a boundary integral solver like one found in LaplaceBIE.jl is that one needs to query mesh topology about the surrounding vertices of a given vertex. Putting in such kind of routine things makes code obscure and fails at the principle of reusability. This is where package SurfaceTopology.jl shines by providing iterator and circulator types for common triangular mesh data structures.

The package LaplaceBIE.jl implements a boundary integral solver for the Laplace equation for arbitrary source with a jump boundary condition for a normal derivative. Such formulations appear for dielectric (ferromagnetic) bodies in an electric (magnetic) field, where one wants to calculate the exerted force. That may deform the shape of the body or attract it to the source which could be a point charge, a magnet, current loop and etc. as long as one has an unperturbed solution.

And the last of the packages I want to announce is ElTopo.jl. A wrapper package for tracking dynamic surfaces represented as triangle meshes. In this case, the animation is more valuable than words:

Enright.gif

At the moment the package works only on Linux as I could not figure out how to resolve compilation issues on MacOS and __gxx_personality_v0 issue on Windows. Thus, for now, it needs to be installed from git repository. Ideas and suggestions welcome.

18 Likes

Very cool!

1 Like