|
[Sponsors] |
April 4, 2016, 10:54 |
Condition Number of the PPE
|
#1 |
New Member
Matthew de Haast
Join Date: Aug 2014
Location: Cape Town
Posts: 9
Rep Power: 11 |
Good day Ladies and Gentlemen
I am having an issue with the A Matrix created through the pressure poisson equation. I am finding that the condition number of this matrix can be really large and for large aspect ratios on quad meshes becomes way to large to solve. For instance if I have elements that have volume ranging from O(1e-9) to O(1e-3) I cant solve the system. Has anyone got a better idea on improving the condition number of this system. I have tried adding values to the diagonal, which does help in some instances but not the above mentioned problem. Thanks Matt |
|
April 4, 2016, 11:02 |
|
#2 | |
Senior Member
Filippo Maria Denaro
Join Date: Jul 2010
Posts: 6,768
Rep Power: 71 |
Quote:
Theoretically, the pressure equation with Neumann BC.s is singular |
||
April 4, 2016, 12:13 |
|
#3 |
New Member
Matthew de Haast
Join Date: Aug 2014
Location: Cape Town
Posts: 9
Rep Power: 11 |
Thank you I understand that but it has been and is been used in this context among many codes. How do they resolve this issue?
|
|
April 4, 2016, 12:20 |
|
#4 |
Senior Member
Filippo Maria Denaro
Join Date: Jul 2010
Posts: 6,768
Rep Power: 71 |
you can search for similar posts...
the matrix is singular but if you fulfill the compatibility condition with your Neumann BC.s, the system has infinite solutions (that means a solution apart a function of time) |
|
April 4, 2016, 13:04 |
|
#5 |
Senior Member
Michael Prinkey
Join Date: Mar 2009
Location: Pittsburgh PA
Posts: 363
Rep Power: 25 |
As Prof Denaro stated, the Neumann BCs on the pressure equation for incompressible flow is formally singular and admits solutions of the form P + C where P is a pressure field and C is an arbitrary scalar uniform constant. So, you have to lock that value of C down somehow.
OpenFOAM solvers generally set one cell pressure value if there are no pressure inlets or outlets. You can see something like this in almost every PEqn.H file: pEqn.setReference(pRefCell, pRefValue); That makes the diagonal entry in A corresponding to rRefCell equal to 1.0, all off-diagonal entries on that row equal to 0.0, and the b vector for that row equal to pRefValue. Some relaxation schemes and non-stationary solvers can get away without doing this...they naturally relax to a solution that doesn't drift with a gauge value, but you cannot necessarily count on that. |
|
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
[snappyHexMesh] snappyHexMesh sticking point | natty_king | OpenFOAM Meshing & Mesh Conversion | 11 | February 20, 2024 09:12 |
mesh file for flow over a circular cylinder | Ardalan | Main CFD Forum | 7 | December 15, 2020 13:06 |
decomposePar -allRegions | stru | OpenFOAM Pre-Processing | 2 | August 25, 2015 03:58 |
simpleFoam parallel | AndrewMortimer | OpenFOAM Running, Solving & CFD | 12 | August 7, 2015 18:45 |
SigFpe when running ANY application in parallel | Pj. | OpenFOAM Running, Solving & CFD | 3 | April 23, 2015 14:53 |