Alex Lindsay <[email protected]> writes:
> I'm almost ashamed to share my condition number because I'm sure it must 
> be absurdly high. Without applying -ksp_diagonal_scale and 
> -ksp_diagonal_scale_fix, the condition number is around 1e25. When I do 
> apply those two parameters, the condition number is reduced to 1e17. 
> Even after scaling all my variable residuals so that they were all on 
> the order of unity (a suggestion on the Moose list), I still have a 
> condition number of 1e12. 

Double precision provides 16 digits of accuracy in the best case.  When
you finite difference, the accuracy is reduced to 8 digits if the
differencing parameter is chosen optimally.  With the condition numbers
you're reporting, your matrix is singular up to available precision.

> I have no experience with condition numbers, but knowing that perfect
> condition number is unity, 1e12 seems unacceptable. What's an
> acceptable upper limit on the condition number?  Is it problem
> dependent? Having already tried scaling the individual variable
> residuals, I'm not exactly sure what my next method would be for
> trying to reduce the condition number.

Singular operators are often caused by incorrect boundary conditions.
You should try a small and simple version of your problem and find out
why it's producing a singular (or so close to singular we can't tell)
operator.

Attachment: signature.asc
Description: PGP signature

Reply via email to