Discussion:
[ff3d-users] solve problem with choleski preconditioner
Fedechicco
16 years ago
Permalink
Hello,
I have some problems in extending the navier-stokes example: I wanted
to simulate a round tube with an obstacle instead of a
square-sectioned tube.
I managed to write a suitable POV file and I loaded it.
Then I tried to use it, but it fails on this section:

<------- code --------->
solve(v) in Omega by M

krylov(type=cg,precond=ichol)

{

pde(v)

(P/dt)*v - div(mu*grad(v))

= ((1/dt)*convect([u0,v0,w0],dt,v0) - dy(p0));

v = 0 on <1,0,0>;

v = 0 on M xmin;

};
<------- end code --------->

and if I change the precondictioner from ichol to diagonal it works.
I had this problem on windows as well on linux.

This is some output with verbosity 10:

<----- output --------->
========== Navier-Stokes step 1
Setting krylov::precond to ichol
Setting krylov::type to cg
* algebraic simplification of -mu
* algebraic simplification of --0.1
Solving Problem:

Unknowns: [u:P1]
Problem:
pde(u):
(P/0.01)*u - div(mu{mu}*grad(u)) = ((100*convect([u0,v0,w0],0.01,u0))-dx(p0))
u = uin{uin} on 0
u = 0 on (1,0,0)


Using FEM fictitious domain discretization:
Method: Elimination
Adding Characteristic function of the domain to PDEs
Computing degrees of freedom positions...
- number of degrees of freedom positions: 3969
Computing degrees of freedom positions: done
* algebraic simplification of 0.1 * {fem-P0}
Adding Characteristic function of the domain to PDEs: done
Using 4999 DOF over 5000 available!
Fictitious domain method: discretization...
- assembling matrix
- assembling matrix: done [cost: time: 1s - CPU time: 0.15s]
- assembling second member
Starting connectivity builder
- building face to cells mapping...
- FacesBuilder: building...
- FacesBuilder: done
done
- Storing cell to cells connectivity
Connectivity builder finished
- assembling second member: done [cost: time: 0s - CPU time: 0.13s]
- discretizing boundary conditions
Generating Surface Meshes
Starting connectivity builder
- Storing cell to edges connectivity
- EdgesBuilder: building...
- EdgesBuilder: done
Connectivity builder finished
Marching tetrahedra
Marching tetrahedra: done
Marching cube sur 0x4758ba0
Sets 1 References
nb tot vertices 4958
nb tot cells 9868
- second member modification
./BoundaryConditionDiscretizationElimination.hpp:76
########################################################
Implementation not finished! use of dofPosition required
########################################################
./BoundaryConditionDiscretizationElimination.hpp:76
########################################################
Implementation not finished! use of dofPosition required
########################################################
- matrix modification
Fictitious domain method: discretization done
- matrix copy time: time: 0s - CPU time: 0.08s
Krylov solver
- number of unknowns: 4999
- preconditioner: incomplete Choleski factorization
- preconditioner initialization

SparseMatrix.hpp:265:
cannot access element (8,8)


UNEXPECTED ERROR: this should not occure, please report it
<----- output --------->

I hope this can help,
sincerely
Federico
Stephane Del Pino
16 years ago
Permalink
Dear Federico

Can you send the .ff and .pov files so that I inverstigrate the problem?

Best regards,
Stéphane.
Stephane Del Pino
16 years ago
Permalink
Dear Federico,

I have looked to your problem concerning the Incomplete Choleski
preconditioner. It is very strange. In fact, the matrix size (number of lines)
is bigger than the number of degrees of freedom. Thus some lines are just
zeros. And IC fails. When you use the diagonal preconditioner, these 0 values
on the diagonal is replaced by 1. And then it works.

I am quite involved on other topics than ff3d now and I cannot tell you when
this will be fixed. I am not able to measure the work it represent to find this
bug.

I will keep you informed when it is fixed.

Best regards and thank you for the report,
Stéphane.

Loading...