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...
Then a stackoverflow question where someone says that fenics wasn't fast. http://stackoverflow.com/questions/4768045/fluid-flow-heat-transfer-and-pyth...
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...
- 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/
- Finite Volume Based - http://www.ctcms.nist.gov/fipy/
Here is a list of Open Source CFD codes. Maybe we can fork a repo and use it or learn from it: http://www.cfd-online.com/Wiki/Codes
According to people iNavier and dolphyn are promising: http://www.cfd-online.com/Forums/main/13529-colver-code-c-c.html
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 is everything I could harness till now. I hope something useful comes out of these. Also I am currently narrowing down and rigorously searching a way to implementing SIMPLE in the FE context.
[1] http://en.wikipedia.org/wiki/Projection_method_%28fluid_dynamics%29
On Thursday, 4 July 2013 19:29:04 UTC+5:30, Ankit Mahato wrote:
On Thursday, 4 July 2013 19:02:50 UTC+5:30, Robert Cimrman wrote:
On 07/04/2013 03:02 PM, Ankit Mahato wrote:
Hi R,
For our Navier-Stokes currently we use the Newton method with backtracking line-search.
Yes, in sfepy we use that.
in OpenFoam and most of the CFD code the linearization approach is based on Patankar's SIMPLE algorithm.1 I talked to my professor who told me that SIMPLE is used in commercial softwares like FLUENT too.
Do you think you could then try implementing SIMPLE in the FE context?
I will search more in this context and let you know in a few hours.
I found few papers which tells us some other approaches. Do have a look at them and lend your views:
-
-
http://numerik.iwr.uni-heidelberg.de/Oberwolfach-Seminar/CFD-Course.pdf
-
http://dspace.uta.edu/bitstream/handle/10106/5144/JIAJAN_uta_2502M_10764.pdf
- http://www.reaction-eng.com/downloads/nksolver_pernice.pdf -
http://aero-comlab.stanford.edu/Papers/birkenjamesonproceedings09.pdf
- https://cs.uwaterloo.ca/research/tr/1993/02/CS-93-02.pdf - http://www.cs.sandia.gov/~rstumin/backtrack.pdf -
http://repository.cmu.edu/cgi/viewcontent.cgi?article=1032&context=math
-
http://www8.cs.umu.se/kurser/5DA001/HT07/lectures/newton-handouts.pdf
[1]:
http://www.cfd-online.com/Forums/openfoam-solving/60167-how-nonlinear-discre...
Nice list. I will try to look at it, but doubt that I will be of much help in deciding what path to pursue. We need something that could be implemented in a reasonable time. IMHO that rules out the multigrid-based solvers, unless a prepared solution like pyamg could be used directly.
Okie.
PS: For the python 3 fix which I had forgotten earlier :( . While going through the codes I came across that we use output() in base.py to print. You have already called if sys.version[0] < '3': basestr = basestring else: basestr = str So basically we know the python version and call the print function according to the python version. If I am correct it is quite easy to fix then, am I?
In the sfepy codebase, there should be no print statements - output() should be used everywhere (if it is not, it's a bug), so yes, updating that for python 3 should be pretty easy.
Cool :)
r.