no-slip boundary condition in axi-symmetric flow

468 views
Skip to first unread message

David Pekker

unread,
Jan 5, 2018, 3:18:28 AM1/5/18
to basilisk-fr
Hi, 

I am trying to solve the Stokes problem of flow around a sphere (similar to the Gerris calculation in www.lmm.jussieu.fr/~lagree/COURS/M2MHP/petitRe.pdf). 

For small Re (I am using Re=0.1) the pressure on the surface of a unit sphere should be close to the Stokes solution: P=-(3 Cos[\theta])/(2 Re). Running the problem with Gerris I indeed obtain something that looks like the Stokes solution, but using Basilisk (see image) I obtain something quite different.

Interestingly, if instead of defining a boundary I just set the velocities inside the sphere to zero I recover the correct behavior of the pressure on the surface of the sphere using Basilisk.

Any pointers as to what has gone wrong would be greatly appreciated.

Sincerely,

David


CDsphere3.c

Antoon van Hooft

unread,
Jan 5, 2018, 5:00:38 AM1/5/18
to basilisk-fr
Hallo David,

Maybe it is due to inconsistent boundary conditions; Unless you set it explicitly, the sphere will use the default scalar conditions for the pressure ( i.e. neumann(0.)).
You could easily set it the Stokes solution, but that does not seem very attractive.

However, the NS-solver page has a special note on this 'issue':

For the default symmetric boundary conditions, we need to ensure that the normal component of the velocity is zero after projection. This means that, at the boundary, the acceleration a must be balanced by the pressure gradient. Taking care of boundary orientation and staggering of a, this can be written

  p[right] = neumann(a.n[ghost]*fm.n[ghost]/α.n[ghost]);
p
[left] = neumann(-a.n[]*fm.n[]/α.n[]);

#if AXI
uf
.n[bottom] = 0.;
#else // !AXI
# if dimension > 1
p
[top] = neumann(a.n[ghost]*fm.n[ghost]/α.n[ghost]);
p
[bottom] = neumann(-a.n[]*fm.n[]/α.n[]);
# endif
# if dimension > 2
p
[front] = neumann(a.n[ghost]*fm.n[ghost]/α.n[ghost]);
p
[back] = neumann(-a.n[]*fm.n[]/α.n[]);
# endif
#endif


I do not know how this should be extended easily for non-grid-aligned boundaries like the sphere.

Luckily, you already found the solution by not using mask.

Antoon

John Dalton

unread,
May 8, 2019, 5:08:02 AM5/8/19
to basilisk-fr
I have just started learning Basilisk and would like to study the (axisymmetric) stokes flow past a sphere, and then I found this post and example.

The provided code simulates a half sphere, but I would like to see the whole sphere. I am totally puzzled by why I get "Floating point exception (core dumped)" if I change just the origin from 

origin(-L0/2., 0) 
to
origin(-L0/2., -L0/2.) 

Any pointers? anyone?

Best,

John
Reply all
Reply to author
Forward
0 new messages