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.
