<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/265294</link>
    <title>MATLAB Central Newsreader - condition number of FE matrix -&gt; improving iterative solver</title>
    <description>Feed for thread: condition number of FE matrix -&gt; improving iterative solver</description>
    <language>en-us</language>
    <copyright>&amp;copy;1994-2012 by MathWorks, Inc.</copyright>
    <webmaster>webmaster@mathworks.com</webmaster>
    <generator>MATLAB Central Newsreader</generator>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <ttl>60</ttl>
    <image>
      <title>MathWorks</title>
      <url>http://www.mathworks.com/images/membrane_icon.gif</url>
    </image>
    <item>
      <pubDate>Sun, 08 Nov 2009 15:50:02 -0500</pubDate>
      <title>condition number of FE matrix -&gt; improving iterative solver</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/265294#693017</link>
      <author>A B</author>
      <description>Hi,&lt;br&gt;
&lt;br&gt;
I'm working on a FE software and right now I'm stuck with the solver.&lt;br&gt;
&lt;br&gt;
I'm both trying cholmod2 (from Tim Davis' package) and standard pcg.&lt;br&gt;
Right now, i've got a text matrix, which is just a beam with about 30 000dof and cholmod2 wins hands down. However, when using larger matrices, I can't use cholmod2 because there isn't sufficient memory.&lt;br&gt;
&lt;br&gt;
However, I noted a few things which actually surpise me.&lt;br&gt;
First of all, when using condest on my FE matrix of the beam, the condition number is in the order of 1e8. When checking the statistics of cholmod2, it returns the reciprocal of the condition number as about 1e-3. What is the cause for the big difference in the condition number? I have been told that the condition number for structural problem usually is somewhere arounc 1e4 to 1e5, so I think that the 1e8 is rather high. Especially since it's a simple problem with a regular mesh.&lt;br&gt;
&lt;br&gt;
For the pcg I'm using a incomplete lu factorization with zero fill-in. Why is pcg so much slower than the direct solver, even if I use a preconditioner?&lt;br&gt;
&lt;br&gt;
Are there any other tricks to improve the condition number of the my FE matrix, or ways to improve the solution speed of pcg? I need it for problems with more dof? Or is there a way to make cholmod2 use less memory (though it already applies reordering...)&lt;br&gt;
&lt;br&gt;
Thanks for any help on my problem!!</description>
    </item>
    <item>
      <pubDate>Mon, 09 Nov 2009 07:26:02 -0500</pubDate>
      <title>Re: condition number of FE matrix -&gt; improving iterative solver</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/265294#693145</link>
      <author>Bruno Luong</author>
      <description>&quot;A B&quot; &amp;lt;gitsnedbutzi@hotmail.com&amp;gt; wrote in message &amp;lt;hd6pba$84c$1@fred.mathworks.com&amp;gt;...&lt;br&gt;
&amp;gt; Hi,&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; I'm working on a FE software and right now I'm stuck with the solver.&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; I'm both trying cholmod2 (from Tim Davis' package) and standard pcg.&lt;br&gt;
&amp;gt; Right now, i've got a text matrix, which is just a beam with about 30 000dof and cholmod2 wins hands down. However, when using larger matrices, I can't use cholmod2 because there isn't sufficient memory.&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; However, I noted a few things which actually surpise me.&lt;br&gt;
&amp;gt; First of all, when using condest on my FE matrix of the beam, the condition number is in the order of 1e8. When checking the statistics of cholmod2, it returns the reciprocal of the condition number as about 1e-3. What is the cause for the big difference in the condition number? I have been told that the condition number for structural problem usually is somewhere arounc 1e4 to 1e5, so I think that the 1e8 is rather high. Especially since it's a simple problem with a regular mesh.&lt;br&gt;
&lt;br&gt;
The condition number get bad if you forget to impose appropriate (boundary) condition to make the problem well posed. If boundary is correctly setup, then note that the condition number goes up when mesh size decreases. However a typical characteristic is the smallest eigenvalue of your stiffness matrix is inferior bounded, and the largest eigenvalue goes to infinity as the square of the mesh size for a second order operator.&lt;br&gt;
&lt;br&gt;
If you have the mass matrix, check for the first eigenmode, which is the lowest &quot;resonance&quot; mode of your operator. The shape of such eigenmode should look *physical*, whatever it means. This ensures that the boundary condition is correctly setup.&lt;br&gt;
&lt;br&gt;
Bruno&lt;br&gt;
&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; For the pcg I'm using a incomplete lu factorization with zero fill-in. Why is pcg so much slower than the direct solver, even if I use a preconditioner?&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; Are there any other tricks to improve the condition number of the my FE matrix, or ways to improve the solution speed of pcg? I need it for problems with more dof? Or is there a way to make cholmod2 use less memory (though it already applies reordering...)&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; Thanks for any help on my problem!!</description>
    </item>
    <item>
      <pubDate>Mon, 09 Nov 2009 15:10:44 -0500</pubDate>
      <title>Re: condition number of FE matrix -&gt; improving iterative solver</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/265294#693232</link>
      <author>Penny Anderson</author>
      <description>&quot;A B&quot; &amp;lt;gitsnedbutzi@hotmail.com&amp;gt; wrote in message &lt;br&gt;
news:hd6pba$84c$1@fred.mathworks.com...&lt;br&gt;
&amp;gt; Hi,&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; I'm working on a FE software and right now I'm stuck with the solver.&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; I'm both trying cholmod2 (from Tim Davis' package) and standard pcg.&lt;br&gt;
&amp;gt; Right now, i've got a text matrix, which is just a beam with about 30 &lt;br&gt;
&amp;gt; 000dof and cholmod2 wins hands down. However, when using larger matrices, &lt;br&gt;
&amp;gt; I can't use cholmod2 because there isn't sufficient memory.&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; However, I noted a few things which actually surpise me.&lt;br&gt;
&amp;gt; First of all, when using condest on my FE matrix of the beam, the &lt;br&gt;
&amp;gt; condition number is in the order of 1e8. When checking the statistics of &lt;br&gt;
&amp;gt; cholmod2, it returns the reciprocal of the condition number as about 1e-3. &lt;br&gt;
&amp;gt; What is the cause for the big difference in the condition number? I have &lt;br&gt;
&amp;gt; been told that the condition number for structural problem usually is &lt;br&gt;
&amp;gt; somewhere arounc 1e4 to 1e5, so I think that the 1e8 is rather high. &lt;br&gt;
&amp;gt; Especially since it's a simple problem with a regular mesh.&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; For the pcg I'm using a incomplete lu factorization with zero fill-in. Why &lt;br&gt;
&amp;gt; is pcg so much slower than the direct solver, even if I use a &lt;br&gt;
&amp;gt; preconditioner?&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; Are there any other tricks to improve the condition number of the my FE &lt;br&gt;
&amp;gt; matrix, or ways to improve the solution speed of pcg? I need it for &lt;br&gt;
&amp;gt; problems with more dof? Or is there a way to make cholmod2 use less memory &lt;br&gt;
&amp;gt; (though it already applies reordering...)&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; Thanks for any help on my problem!!&lt;br&gt;
&lt;br&gt;
Hi,&lt;br&gt;
&lt;br&gt;
Be careful what you are comparing. cond, condest and rcond in MATLAB all &lt;br&gt;
compute different things.&lt;br&gt;
&lt;br&gt;
1-norm and 2-norm, the quantity or its reciprocal, &quot;exact&quot; or estimate.&lt;br&gt;
&lt;br&gt;
The doc will help you distinguish. Add another package like cholmod2 to the &lt;br&gt;
mix, and you have more information to read.&lt;br&gt;
&lt;br&gt;
In general, the (preconditioned) iterative methods only win when you do not &lt;br&gt;
have the memory to compute the factorization via a direct solve method. Yes, &lt;br&gt;
they are slow, but you get there eventually, which is faster than not at all &lt;br&gt;
:-)&lt;br&gt;
&lt;br&gt;
Good luck.&lt;br&gt;
&lt;br&gt;
Penny.</description>
    </item>
    <item>
      <pubDate>Mon, 09 Nov 2009 15:18:04 -0500</pubDate>
      <title>Re: condition number of FE matrix -&gt; improving iterative solver</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/265294#693234</link>
      <author>A B</author>
      <description>&quot;Bruno Luong&quot; &amp;lt;b.luong@fogale.findmycountry&amp;gt; wrote in message &amp;lt;hd8g6a$pi7$1@fred.mathworks.com&amp;gt;...&lt;br&gt;
&amp;gt; &quot;A B&quot; &amp;lt;gitsnedbutzi@hotmail.com&amp;gt; wrote in message &amp;lt;hd6pba$84c$1@fred.mathworks.com&amp;gt;...&lt;br&gt;
&lt;br&gt;
&amp;gt; The condition number get bad if you forget to impose appropriate (boundary) condition to make the problem well posed. If boundary is correctly setup, then note that the condition number goes up when mesh size decreases. However a typical characteristic is the smallest eigenvalue of your stiffness matrix is inferior bounded, and the largest eigenvalue goes to infinity as the square of the mesh size for a second order operator.&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; If you have the mass matrix, check for the first eigenmode, which is the lowest &quot;resonance&quot; mode of your operator. The shape of such eigenmode should look *physical*, whatever it means. This ensures that the boundary condition is correctly setup.&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; Bruno&lt;br&gt;
&lt;br&gt;
A number of appropriate boundary conditions is imposed, to lock rigid body motions, and so there isn't a solution which would result in a zero energy. Unfortunatly I'm not calculating the mass matrix, so I can't check the lowest mode.&lt;br&gt;
&lt;br&gt;
What I noticed however is that incomplete factorization lead don't result in good preconditioners, no matter how I set the drop tolerance and other options. Using pcg without any preconditioners surprisingly gives better results. If I rescale the matrix with a left and right preconditioner, being the inverse of the square root of the main diagonal elements (as a result the main diagonal will be scaled to ones), the convergence slightly improves.&lt;br&gt;
&lt;br&gt;
Why is it that incomplete factorization preconditioners don't perform that well?&lt;br&gt;
Aren't they well suited for problems from structural mechanics?</description>
    </item>
    <item>
      <pubDate>Mon, 09 Nov 2009 15:24:02 -0500</pubDate>
      <title>Re: condition number of FE matrix -&gt; improving iterative solver</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/265294#693238</link>
      <author>John D'Errico</author>
      <description>&quot;A B&quot; &amp;lt;gitsnedbutzi@hotmail.com&amp;gt; wrote in message &amp;lt;hd9brc$7gk$1@fred.mathworks.com&amp;gt;...&lt;br&gt;
&amp;gt; &quot;Bruno Luong&quot; &amp;lt;b.luong@fogale.findmycountry&amp;gt; wrote in message &amp;lt;hd8g6a$pi7$1@fred.mathworks.com&amp;gt;...&lt;br&gt;
&amp;gt; &amp;gt; &quot;A B&quot; &amp;lt;gitsnedbutzi@hotmail.com&amp;gt; wrote in message &amp;lt;hd6pba$84c$1@fred.mathworks.com&amp;gt;...&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; &amp;gt; The condition number get bad if you forget to impose appropriate (boundary) condition to make the problem well posed. If boundary is correctly setup, then note that the condition number goes up when mesh size decreases. However a typical characteristic is the smallest eigenvalue of your stiffness matrix is inferior bounded, and the largest eigenvalue goes to infinity as the square of the mesh size for a second order operator.&lt;br&gt;
&amp;gt; &amp;gt; &lt;br&gt;
&amp;gt; &amp;gt; If you have the mass matrix, check for the first eigenmode, which is the lowest &quot;resonance&quot; mode of your operator. The shape of such eigenmode should look *physical*, whatever it means. This ensures that the boundary condition is correctly setup.&lt;br&gt;
&amp;gt; &amp;gt; &lt;br&gt;
&amp;gt; &amp;gt; Bruno&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; A number of appropriate boundary conditions is imposed, to lock rigid body motions, and so there isn't a solution which would result in a zero energy. Unfortunatly I'm not calculating the mass matrix, so I can't check the lowest mode.&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; What I noticed however is that incomplete factorization lead don't result in good preconditioners, no matter how I set the drop tolerance and other options. Using pcg without any preconditioners surprisingly gives better results. If I rescale the matrix with a left and right preconditioner, being the inverse of the square root of the main diagonal elements (as a result the main diagonal will be scaled to ones), the convergence slightly improves.&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; Why is it that incomplete factorization preconditioners don't perform that well?&lt;br&gt;
&amp;gt; Aren't they well suited for problems from structural mechanics?&lt;br&gt;
&lt;br&gt;
Actually, I found that the best preconditioner for a pccgls&lt;br&gt;
solver on some of my problems was indeed an incomplete&lt;br&gt;
cholesky.&lt;br&gt;
&lt;br&gt;
John</description>
    </item>
    <item>
      <pubDate>Mon, 09 Nov 2009 16:28:03 -0500</pubDate>
      <title>Re: condition number of FE matrix -&gt; improving iterative solver</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/265294#693254</link>
      <author>A B</author>
      <description>&amp;gt; Actually, I found that the best preconditioner for a pccgls&lt;br&gt;
&amp;gt; solver on some of my problems was indeed an incomplete&lt;br&gt;
&amp;gt; cholesky.&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; John&lt;br&gt;
&lt;br&gt;
Hi John,&lt;br&gt;
&lt;br&gt;
was this also for structural mechanics?&lt;br&gt;
For thermal problems it works great (though they also have less dof), but for structural I can't seem to get them working right.</description>
    </item>
    <item>
      <pubDate>Mon, 09 Nov 2009 16:48:01 -0500</pubDate>
      <title>Re: condition number of FE matrix -&gt; improving iterative solver</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/265294#693258</link>
      <author>Bruno Luong</author>
      <description>FYI, I have solved structural problems with stiffness matrix of size about 70000. I can't recall having problem with PCG.&lt;br&gt;
&lt;br&gt;
Bruno</description>
    </item>
    <item>
      <pubDate>Tue, 25 May 2010 15:31:08 -0400</pubDate>
      <title>Re: condition number of FE matrix -&gt; improving iterative solver</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/265294#748655</link>
      <author>A B</author>
      <description>&quot;Bruno Luong&quot; &amp;lt;b.luong@fogale.findmycountry&amp;gt; wrote in message &amp;lt;hd9h40$f7s$1@fred.mathworks.com&amp;gt;...&lt;br&gt;
&amp;gt; FYI, I have solved structural problems with stiffness matrix of size about 70000. I can't recall having problem with PCG.&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; Bruno&lt;br&gt;
&lt;br&gt;
I'm still having trouble with the same problem, hower now with +200kdof.&lt;br&gt;
Now I can't use a direct solver on a 32bit system anymore, even with metis or similiar as it will run ouf of memory.&lt;br&gt;
&lt;br&gt;
I'm looking into suitable preconditioners for structural mechanics problems. Jacobi and incomplete factoriations aren't well-suited, especially for ill-conditioned problems.&lt;br&gt;
&lt;br&gt;
ANSYS also includes a special preconditioner, which seems to be somehow element based, for such kind of problems. Has anyone got an idea, on what kind of preconditioner they might be using?&lt;br&gt;
&lt;br&gt;
Any ideas on better preconditioners, eventually also toolboxes etc.?&lt;br&gt;
&lt;br&gt;
Thanks</description>
    </item>
  </channel>
</rss>

