Dear all,
I am trying to solve the Navier-Stokes (NS) equations for a two-dimensional fluid. The fluid does not live on a plane, but on a two-dimensional manifold (like a sphere, or ellipsoid) embedded in three-dimensional space.
The shape of the manifold is known and fixed. The ordinary derivatives appearing in the standard NS equations are replaced by covariant derivatives, which depend on the manifold shape.
I have been trying to solve this problem with the IPCS scheme, as it is done in this Fenics example for the NS equations in two dimensions. I solve the NS equations for the two components v^i of the velocity vector tangent to the manifold, as well as for the surface tension \sigma, which is a scalar on the manifold. This scheme works only when the manifold is close enough to flat. Otherwise, the method crashes and I get the error message
Starting time iteration ...
0.78 %
1.56 %
2.34 %
Traceback (most recent call last):
File "navier_stokes_membrane.py", line 280, in <module>
solve(A1v, v_.vector(), b1v, 'bicgstab', 'hypre_amg')
File "/usr/local/lib/python3.6/dist-packages/dolfin/fem/solving.py", line 227, in solve
return dolfin.la.solver.solve(*args)
File "/usr/local/lib/python3.6/dist-packages/dolfin/la/solver.py", line 72, in solve
return cpp.la.solve(A, x, b, method, preconditioner)
RuntimeError:
*** -------------------------------------------------------------------------
*** DOLFIN encountered an error. If you are not able to resolve this issue
*** using the information listed below, you can ask for help at
***
*** fenics-support@googlegroups.com
***
*** Remember to include the error message listed below and, if possible,
*** include a *minimal* running example to reproduce the error.
***
*** -------------------------------------------------------------------------
*** Error: Unable to solve linear system using PETSc Krylov solver.
*** Reason: Solution failed to converge in 0 iterations (PETSc reason DIVERGED_NANORINF, residual norm ||r|| = 0.000000e+00).
*** Where: This error was encountered inside PETScKrylovSolver.cpp.
*** Process: 0
***
*** DOLFIN version: 2019.1.0
*** Git changeset: 74d7efe1e84d65e9433fd96c50f1d278fa3e3f3f
*** -------------------------------------------------------------------------
after a few iterations in time. Decreasing the time step \Delta t does not help.
Are you aware of a substitute of the IPCS scheme that is adapted to my problem ? Or do you know how to pin down the source of this error ?
Best,
Michele