When using switching BC like Seepage face or River BC, we can end up with the Neumann BC applied on the whole boundary, which leads to badly posed problem. Possible steps to treat this problem includes:
The problem appears only in steady case. The assembly should know if we are in steady or unsteady anyway.
We need a detection of neumann only BC in steady case. First, we consider connected domain
so during assembly we can count number of faces where we apply non-neumann BC.
In the case of the domain consisting of more components (i.e. not domain anymore), we need an algorithm to identify components of individual faces and count every component independently.
Simplest solution: in the steady case and first iteration force Dirichlet type for Seepage and Newton type for River, relax in further iterations.
Elegant way is consistent adoption of Nitchse BC. Providing also smoothed version of the Seepage face switching.
First makea study in this direction using a 1D or 2d Fenics implementaion.
When using switching BC like Seepage face or River BC, we can end up with the Neumann BC applied on the whole boundary, which leads to badly posed problem. Possible steps to treat this problem includes: