Dear Zizhou, Along with several collaborators, I have worked on preconditioners for the Navier--Stokes equations in Firedrake. You can see our most recent results in e.g. the tables in https://arxiv.org/abs/2004.09398 . We solved a problem with over one billion degrees of freedom with a low-order discretisation in https://arxiv.org/abs/1810.03315 . You can find our implementation at https://github.com/florianwechsung/alfi . In particular we have a lid-driven cavity set up in 2D and 3D, along with Reynolds-robust solvers for them. You can see some of the command lines that work in examples/Makefile; to start with, look at the command lines with --problem ldc2d. (Solving the Navier-Stokes is hard, and the preconditioner has to change a fair bit with the discretisation employed: the relaxation, prolongation, stabilisation, at least. In alfi you drive all this from the command line.) Hope this helps! Patrick On 12/04/2021 18:42, Ed Bueler wrote:
Zizhou --
The Stokes (not NS) 2D lid-driven cavity example in Chapter 14 of my book focuses on algorithmic and parallel scaling relevant to your NS case. I look at block and multigrid preconditioner combinations that give good performance at high resolutions. (The runs shown in the text, done on my desktop, go up to 4 x 10^7 degrees of freedom.) See https://github.com/bueler/p4pdes/tree/master/python/ch14 for the code, which includes some good solver-option combinations, and here for the book https://my.siam.org/Store/Product/viewproduct/?ProductId=32850137 This may help a little, but as usual no magic bullets.
Ed
On Mon, Apr 12, 2021 at 7:01 AM Zizhou Huang <zizhou@nyu.edu <mailto:zizhou@nyu.edu>> wrote:
To one whom it may concern,
I'm a PhD student at NYU. I'm working on a project on solving the Navier-Stokes equation with FEM, so I'm really interested in the amazing demo of solving the Navier-Stokes equation on the website. (https://www.firedrakeproject.org/demos/navier_stokes.py.html)
I modified the code to solve the 3d lid-driven cavity problem with a uniform grid of size 40x40x40, and found that it takes extremely long time and large memory. I had the same issue with my code of similar sizes, which uses Pardiso to solve the linear system. I'm wondering if fem is indeed unsolvable for a large problem like this? Do you have any experience to make it faster by changing the parameters in the linear solver?
Looking forward to hearing from you.
Best, Zizhou _______________________________________________ firedrake mailing list firedrake@imperial.ac.uk <mailto:firedrake@imperial.ac.uk> https://mailman.ic.ac.uk/mailman/listinfo/firedrake
-- Ed Bueler Dept of Mathematics and Statistics University of Alaska Fairbanks Fairbanks, AK 99775-6660 306C Chapman
_______________________________________________ firedrake mailing list firedrake@imperial.ac.uk https://mailman.ic.ac.uk/mailman/listinfo/firedrake