simple immersed boundary method implemented for imposing zero velocity in the solid

258 views
Skip to first unread message

张元

unread,
Oct 20, 2023, 12:19:16 AM10/20/23
to basilisk-fr
Dear Basilisk users,
I'm going to simulate melting ice, and to make sure that the ice doesn't warp, the velocity inside the ice has to be zero. There's a simple way to do this, just set the velocity of the ice to zero, and then project it so that the divergence of the velocity is zero.

However, I don't understand the solving process of ns equation in centered.h, and I don't know how to implement it.

I noticed that there was simple IBM in thereBasilisk - sandbox/popinet/movingcylinder.c,.But this does not guarantee velocity divergence-free.

Lucas Prouvost

unread,
Oct 20, 2023, 4:02:57 AM10/20/23
to 张元, basilisk-fr
Hello,

regarding the solver, centered.h is a projection-based incompressible NS solver. It can be described in three steps : advection step (solves advection equation), a prediction step (which provides a non-divergence free updated velocity), a projection step (computes the pressure and makes the velocity divergence free). Please have a look at the source code of centered.h (http://basilisk.fr/src/navier-stokes/centered.h) and the references listed in the webpage for a more complete description.

Regards,
Lucas



--
You received this message because you are subscribed to the Google Groups "basilisk-fr" group.
To unsubscribe from this group and stop receiving emails from it, send an email to basilisk-fr...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/basilisk-fr/d4defb15-021a-4610-942e-7eff392dda89n%40googlegroups.com.

张元

unread,
Oct 20, 2023, 5:01:57 AM10/20/23
to basilisk-fr

Hello, Lucas
      Thank you for your reply!
      It is difficult for me to read the source code(centered.h).eg.Why do we need  correction(dt)  after projection .
     In centered.h, I have tried to force the velocity inside the ice to be zero in the event projection (I ++,last), but the result was wrong.

Regards, Zhangyuan

Lucas Prouvost

unread,
Oct 20, 2023, 10:25:16 AM10/20/23
to 张元, basilisk-fr
Hello,

please read the 3 papers of Popinet and Lagrée et al. cited at the beginning of centered.h to understand the details of the equations discretization and the computation of the intermediate and updated variables.
Also make sure to distinguish in the source code the cell centered variables (for example u) and the face centered variables (for example uf )

Regards,
Lucas

Haochen Huang

unread,
Oct 24, 2023, 2:24:02 AM10/24/23
to basilisk-fr
Hi Zhangyuan
The answer to your question about correction(dt) can be quite complicated. You may find comment useful in another corresponding solver double-projection. Where the updated $g$ is used to updated $\mathbf{u}^{n+1}$ at cell centered. Besides, face-centered $\mathbf{uf}$ computed from $\mathbf{u}^{n}$ is used to update $g$ itself.

As for total understanding  of 'centered.h', you may need to at least go through strong related headfiles i.e. 'poisson.h', 'bcg.h' and 'viscosity.h' to understand which variables has been output or updated. Besides those three paper Lucas recommended, a deep understanding will be obtained by reading a series of work from Lawrence Berkeley National Laboratory e.g. Almgren et.al. to figure out the approximate projection method and its form (incremental form, pressure form etc. and is related to your question about correction(dt)).

A little reminder, 'centered.h' applies approximate projection method but not exact projection method which indicates that divergence-free is not strictly followed by centered $\mathbf{u}$.

Regards,
Haochen
Reply all
Reply to author
Forward
0 new messages