Impose perfect-slip boundary conditions for velocity on a boundary

Hello,
Given two-dimensional PDEs for a velocity field \bf v and pressure p in a closed domain \Omega, I want to impose perfect-slip boundary conditions on \partial \Omega:

\hat{\bf n} \cdot {\bf v} = 0 \, \textrm{ on } \partial \Omega,

where \hat {\bf n} is the unit normal to \partial \Omega.

I have looked online this topic, but the answers are not clear to me. Note that in my case the variational problem does not allow to impose the BC (boundary condition) as a natural BC because \hat{\bf n} \cdot {\bf v} does not appear in the variational formulation.

How can I impose this slip BC? It looks like one can manually add a term to the variational functional F that enforces the BC (Nitsche’s method (?)) but may you please tell me what is the exact form of this term? Is it

F = \cdots + g ({\bf v} \cdot {\hat {\bf n}} )ds

? How should g be defined in the code ?

Thank you !

You can use DOLFINx_MPC for this, which adds an additional equation on the degree of freedom level, see: Stokes flow with slip conditions — DOLFINx-MPC: An extension to DOLFINx for multi point constraints

I don’t know how to use Dolfinx, I am using the legacy version. Is there a similar function for the legacy version ?

I have an idea on how to implement this:

What if I introduced an additional variable \omega defined by \omega = \hat{\bf n} \cdot {\bf v}, which I add to my set of equations, and imposed the boundary condition
\omega =0 on \partial \Omega?

Hi.

You can follow the lines of the code provided in https://github.com/MiroK/fenics-nitsche/blob/master/stokes/stokes_freeslip.py which impose a slip boundary by means of the symmetric form of the Nitsche method.

A nice result for the Nitsche’s trick and Navier-Stokes equations with curved boundaries can be found in the Gjerde and Scott paper. They also have a repo for their code in https://zenodo.org/records/4591766.

Cheers.

1 Like