Hi everyone,
I am working on two-phase simulations in Basilisk that involve contact-line dynamics with high-viscosity fluids. I am trying to impose a static contact angle of 90°, but the contact line remains effectively pinned, and the apparent contact angle deviates from 90°, especially at high viscosity.
Setup:I am using a Navier slip boundary condition at the wall:
Definitions:
Far-field boundary conditions:
The contact line appears pinned (wall-adjacent cells do not move).
The measured contact angle deviates from the imposed 90°.
The issue becomes more pronounced as viscosity increases and also at high contact angles ~135 degree at high refinement ~2.5 microns
.
Is the slip length (λ = 5Δ) too small for resolving contact line motion in Basilisk?
For high viscosity flows, what is a recommended range of slip length relative to grid size?
Could this be primarily a resolution issue near the wall/interface?
Are there recommended practices in Basilisk for ensuring accurate contact angle imposition with moving contact lines?
Any suggestions or references would be very helpful.
Thanks in advance!
--
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 visit https://groups.google.com/d/msgid/basilisk-fr/6af6a67b-64d9-4d43-8322-d499797e15cen%40googlegroups.com.
Dear Dr. Yadav,
Thank you for your response. I have already implemented the contact angle using the height function exactly as shown in the Basilisk examples.
vector h[];
h.t[left] = contact_angle(theta_e * pi / 180.);
f.height = h;
There is no Dirichlet BC on f anywhere in the code. The issue persists specifically for high-viscosity fluids (Oh > 0.004) despite correct implementation. My problem is drop impact spreading.
Is there anything additional that needs to be done differently in Basilisk for high-viscosity flows to ensure correct contact angle imposition and contact line motion?
Best regards,
Gopal Chakka
We have the definition of Navier slip boundary condition as u_slip = u_wall = lambda*(d u_t / dn)
Now u_wall = (u.t[left]+u.y[])/2.0 and d u_t / dn = (u.y[] - u.t[left])/mesh
Putting these, we get the relation
u.t[left] = u.y[]*( (2.0*lambda - mesh)/(2.0*lambda + mesh) );
You have to enforce the above relation inside an event through a foreach_boundary loop as shown below (It should work I think...)
event navier_slip (i++)
{
foreach_boundary(left) {
u.t[ghost] = u.y[]*( (2.0*lambda - mesh)/(2.0*lambda + mesh) );
//u.t[-1,0] = u.y[]*( (2.0*lambda - mesh)/(2.0*lambda + mesh) );
}
}
Try one of the above forms...
See if it gives better results...
Best wishes
Dear Dr. Yadav,
Thank you very much for your suggestion. The Navier-slip formulation you provided is working correctly and the contact line pinning issue has been resolved.
I sincerely appreciate your time and help.
Best regards,
Ramgopal
To view this discussion visit https://groups.google.com/d/msgid/basilisk-fr/3b42ef29-bb56-4f4a-8a93-ba6414ede34en%40googlegroups.com.