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 😀
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?