I want to simulate the shape of the free surface in a small fuel tank in microgravity, which is very slowly being emptied.

  • The tank is not symmetric, the geometry is given by CAD (e.g. step file).
  • Modelling of surface tension and contact angle is a must. The contact angle will also vary between different wall regions of the tank.
  • I don't necessarily need dynamic behaviour. I don't (right now) need a flow field solution
  • The possibility to later add a thermal simulation would be a plus.
  • An interface possibility with Python would be ideal, but driven by CLI or interface file is sufficient (for use in later optimization studies)
  • An open-source (but maintained) or free code would be ideal
  • I am not a numerical algorithms person, so it would be great if I don't have to implement a solver myself :D

The relevant equations are the Young-Laplace equation

${\displaystyle \Delta p=\rho gh-\gamma \left({\frac {1}{R_{1}}}+{\frac {1}{R_{2}}}\right)}$,

where $\Delta p$ is the pressure jump across the interface, $\rho g h$ is the hydrostatic pressure (which can be neglected in zero gravity), $\gamma$ is the surface tension, and $R_1$, $R_2$ are the principal radii of curvature of the interface at a given point; and the Young equation

${\displaystyle \gamma _{SG}\ =\gamma _{SL}+\gamma _{LG}\cos {\theta }}$,

which relates, at the contact line, the surface tensions between the three phases: solid, liquid and gas with the equilibrium contact angle $\theta$ between the solid surface and the liquid-gas interface.

What I have investigated so far:

  • Surface Evolver/SE-Fit: This looked at first glance ideal, but later on we realized that there is a reason why most of the examples featured primitive bodies/domains - working with an imported geometry is, according to a colleague, extremely cumbersome. Also, he encountered quite some problems around convex edges, instability, crashes, and generally it seems to be a pain to work with for non-primitive geometries.
  • Basilisk: Seems very nice, has a self-adaptive mesher, solves the flow field (which I don't necessary need), but while it accounts for surface tension, nicely preserves phase volume, and apparently does great interface resolution apparently does not have an implementation of the contact angle boundary condition! Also, it's unclear if it can work nicely with impoerte geometry, most of the examples are boxes or otherwise primitive geometries.
  • It's predecessor, Gerris, could be a candidate, as it can at least prescribe a contact angle in an axisymmetric case. Unfortunately, it does not seem to be developed any more.
  • Fenics looks very nice, and in Python too, but the documentation and variational formulation approach seem daunting. Also, I could not find a worked example for a surface tension interface shape problem, like sessile drop etc, and nobody seems to work in that area
  • I have also found this obscure thing called HyDro, which seems really simple and nice, but is only for flat substrates.

Am I missing any other programs or good contenders to do what I need?


1 Answer 1


It's very late to answer the questions, but it may help someone who wants to do similar stuff.

As far as this problem is concerned, I feel Surface Evolver is the best available option.

(1) It is very flexible, you can write any code according to your need.

(2) It is almost impossible to import external geometry, but if you can write a functional form for the surfaces, it is very easy to create the geometry in Evolver itself.

(3) Curved edges do present a problem, but you can use the "Convex" constraint to avoid that. The downside of this approach is that you can no longer obtain the Hessian, but still you can minimize the energy and obtain the equilibrium shapes.

(4) It is very accurate for imposing the contact angle and very complex shapes of the interface can be simulated.

With regards to Basilisk, the contact angle application is not as good as that in surface Evolver (you cannot work with very low or very high angles). If you are not concerned with the velocity profile, I think Surface Evolver is better. But if you want to the dynamics, I would suggest Basilisk.

  • $\begingroup$ I agree that it's very nice and powerful, but as I outlined above, not being able to import external geometries is a dealbreaker for many non-academic/engineering applications, at least in my experience. $\endgroup$
    – Christoph
    Dec 27, 2021 at 18:32

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.