Dear all,

I have to deal with a large number of very small linear systems A*a=b; I 
need to solve this system for each vertex of my triangulation. 
The matrix A is purely determinand by dyadic products of certain quadrature 
points.
Example: Point<dim> qp =[x,y]; Vector<double> qp_ = [1, x, y, xy, x^2, 
y^2]^T
-> A = A + qp_*qp_^T
The number of qps is restricted to the qps of those cells which are in the 
patch. For instance there are 16 qps when using Q2 elements in 2d with 
reduced integration (QGauss<dim>(2)).

First I decided to actually invert the matrix A, 
i.e. A.invert(A)...., 
but the computation of the inverse introduced too much numerical errors. 
Hence I decided to switch to LAPACKFullMatrix, computed LU factorization 
and finally solved the system via the .solve() member functions. 

Switching to LAPACK made my results much better but I still reach a point 
(fine meshes) where the LU decomposition fails. For nearly each vertex the 
reciprocal condition number reaches the machine accuracy.
I guess the problem is that fine meshes lead to large differences in the x- 
and y-coordinates of  the qps (Point<dim> dummy = [x,y] = [10.0 ,0.01]) so 
that some entries in the A matrix are close to zero and others in turn 
become very large. IMHO the LU decomposition becomes more demanding if the 
entries in A differ by several orders. Here is a typical example for A 
(lowest order e-01 , highest order e+02):

1.600e+01  6.099e+01  3.798e+00  2.327e+02  1.203e+00  1.449e+01 
 6.099e+01  2.327e+02  1.449e+01  8.884e+02  4.594e+00  5.532e+01 
 3.798e+00  1.449e+01  1.203e+00  5.532e+01  4.292e-01  4.594e+00 
 2.327e+02  8.884e+02  5.532e+01  3.395e+03  1.755e+01  2.114e+02 
 1.203e+00  4.594e+00  4.292e-01  1.755e+01  1.632e-01  1.640e+00 
 1.449e+01  5.532e+01  4.594e+00  2.114e+02  1.640e+00  1.755e+01 

My question is if I can give some "massage" to A before calling the LU 
decomposition? What I mean is something like a preconditioner which are 
often used when talking about iterative solvers. But when checking the 
documentation I couldn't find certain functionalities for the Matrix 
classes.
For me it would be great to know if the A matrix could be "rescued" somehow 
by certain solution techniques, preconditioning or whatever. Otherwise I 
have to think about the way of constructing A itself.

Thanks for giving me feedback!

Best
Simon

-- 
The deal.II project is located at http://www.dealii.org/
For mailing list/forum options, see 
https://groups.google.com/d/forum/dealii?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"deal.II User Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/dealii/80e9dfe5-29ca-4414-9db2-5420caf3ab31n%40googlegroups.com.

Reply via email to