Some more info: Applying a Newton or Picard iteration produces a system of linear equations which is nonsymmetric in the presence of advection and indefinite in the presence of incompressibility. Such systems, particularly in 3D, are frequently too large for direct solvers, so iterative methods are used, either stationary methods such as successive overrelaxation or Krylov subspace methods. Krylov methods such as GMRES, typically used with preconditioning, operate by minimizing the residual over successive subspaces generated by the preconditioned operator. Multigrid has the advantage of asymptotically optimal performance on many problems. Traditional solvers and preconditioners are effective at reducing high-frequency components of the residual, but low-frequency components typically require many iterations to reduce. By operating on multiple scales, multigrid reduces all components of the residual by similar factors, leading to a mesh-independent number of iterations. For indefinite systems, preconditioners such as incomplete LU factorization, additive Schwarz, and multigrid perform poorly or fail entirely, so the problem structure must be used for effective preconditioning.[1] Methods commonly used in CFD are the SIMPLE and Uzawa algorithms which exhibit mesh-dependent convergence rates, but recent advances based on block LU factorization combined with multigrid for the resulting definite systems have led to preconditioners that deliver mesh-independent convergence rates.[2]
[1] http://journals.cambridge.org/action/displayAbstract?fromPage=online&aid=298722 [2] http://www.sciencedirect.com/science/article/pii/S0021999107004330
On Friday, 5 July 2013 17:23:57 UTC+5:30, Robert Cimrman wrote:
On Fri, 5 Jul 2013, Ankit Mahato wrote:
On Friday, 5 July 2013 15:39:07 UTC+5:30, Robert Cimrman wrote: On Thu, 4 Jul 2013, Ankit Mahato wrote:
> Hi R, > > I did some more digging from the implementation point of view and came > across some interesting things: > > This tutorial demonstrates the solution of Incompressible Navier-Stokes > Equations using Fenics. it uses Chlorin's method[1] to solve the problem. > This project was very awesome.� >
http://fenicsproject.org/documentation/dolfin/1.2.0/python/demo/pde/navier-s...
> s/python/documentation.html That looks feasible as well, although it is for time-dependent problems. A stationary solution (if existing) could be obtained by stepping in time til nothing changes. (Sidenote: fenics is a cool project with many interesting ideas - good place for insiration.)
Are you suggesting to use the dolfin module or to use Chlorin's
method?�
The method. Dolfin itself is bigger than sfepy :) �
> Other Implementations: > �* �Parallel Spectral Numerical Methods/The Two- and Three-Dimensional > � � Navier-Stokes Equations-
http://en.wikibooks.org/wiki/Parallel_Spectral_Numerical_Methods/The_Two-_an...
h > � � ree-Dimensional_Navier-Stokes_Equations > �* �2D Navier-Stokes solver implemented as a Python package with Python > � � modules and C++ extension modules. It uses the finite difference > � � method on a uniform, rectangular grid. It handles single- and > � � two-phase incompressible, Newtonian, laminar flow with obstacles. > � � -https://code.google.com/p/kmkns/ There is a thesis to download - might be interesting.
Yes, but it is using Difference method.
Ok, then it is not directly applicable.
In general, SfePy can assemble the matrices A, B forming a saddle point system with block structure [[A, B], [B^T, 0]] - methods for solving that, making use of A, B, might be usable no matter the method A, B were created (FEM, FVM, FDM).
I think it would be easier to follow a paper/thesis, as details in code often differ. But you can try, yes. Note that sfepy is BSD-licensed, so we cannot use snippets/functions from GPL-licensed codes.
So we can use any code with BSD license. right?
Yes. �
> Someone was using PyAMG to develop Jacobian-Free Newton-Krylov code to > solve the Navier Stokes equations : > https://groups.google.com/forum/#!topic/pyamg-user/HXrXTyvXPpw This could be really interesting - maybe you could ask the person on how far that project got?
i had already dropped a mail on her email-id. Waiting for her reply.
Good! �
So, it looks there are lot of things I need to look in depth now.
Yes, it is not easy to choose. For the beginning, I would rule out codes that are not FEM-based. As for algorithms, I would look at operator splitting and other iterative techniques.
Thanks for looking into this, it will be very useful.
r.