[petsc-users] Solving Ill Conditioned Problems

Matthew Knepley knepley at gmail.com
Fri Oct 19 11:06:33 CDT 2012


On Fri, Oct 19, 2012 at 9:02 AM, Anton Popov <popov at uni-mainz.de> wrote:

> Of, course you have a more sophisticated case, but if you just put the
> orders of magnitude of your matrix blocks
> into a toy two-by-two matrix, i.e. (in matlab notation)
> A = [1e9, 1; 1, 1e-9]
> then it's immediately visible that A is singular (det(A) is zero)
> Symmetric scaling, that Matt suggested, just makes it more obvious, after
> scaling the matrix A will be:
> A = [1, 1; 1, 1] - clearly the rows are linearly dependent.
> Scaling may help you, but of course, this is not an always working solution
>

These are just the scales, not the values. Thus the matrix need not be
singular.

   Matt


> Anton
>
> On 10/18/12 8:38 PM, Nachiket Gokhale wrote:
>
>> On Thu, Oct 18, 2012 at 2:28 PM, Matthew Knepley <knepley at gmail.com>
>> wrote:
>>
>>> On Thu, Oct 18, 2012 at 11:07 AM, Nachiket Gokhale <gokhalen at gmail.com>
>>> wrote:
>>>
>>>> Hi,
>>>>
>>>> I am solving a Piezoelectric problem using Petsc. The structure is
>>>>
>>>> [ K_uu        K_uv ]
>>>> [K_uv ^T   -K_v,v ]
>>>>
>>>> More details about the formulation:  http://tinyurl.com/9hlbp4u
>>>>
>>>> K_uu  has elements O(1E9)  because the stiffnesses are in GPa,
>>>> K_uv   has elements O(1) because piezoelectric coefficients are of that
>>>> order
>>>> K_v,v  has  elements O(1E-9) because the dielectric constants are of
>>>> that order.
>>>>
>>>> I am using Petsc, with pc_type LU and MUMPS for the factorization,
>>>> -ksp_type gmres. I am not sure if my solution is converging. A typical
>>>> solve seems to be doing this:
>>>>
>>>> 28 KSP preconditioned resid norm 5.642364260456e-06 true resid norm
>>>> 1.228976487745e-03 ||r(i)||/||b|| 3.317409023627e-14
>>>>   29 KSP preconditioned resid norm 5.540718271043e-06 true resid norm
>>>> 1.228453548651e-03 ||r(i)||/||b|| 3.315997440178e-14
>>>>   30 KSP preconditioned resid norm 1.973052106578e-03 true resid norm
>>>> 1.220399172500e-03 ||r(i)||/||b|| 3.294256047735e-14
>>>>   31 KSP preconditioned resid norm 1.155762663956e-17 true resid norm
>>>> 2.447631111938e-04 ||r(i)||/||b|| 6.606955965570e-15
>>>>
>>>> Is there a right way to solve this set of equations? Is PCFieldSplit
>>>> the recommended way?
>>>>
>>>
>>> First, you should really non-dimensionalize. You can see what this would
>>> give
>>> you by symmetrically scaling your problem with [ 3e4 3e-4 ], namely
>>> everything
>>> will be O(1).
>>>
>>> Second, you might get something out of using FieldSplit, but its tough to
>>> tell
>>> without knowing more about the operators.
>>>
>>>     Matt
>>>
>>>  Thanks,
>>>>
>>>> -Nachiket
>>>>
>>> Oh, right, thanks. I wasn't even thinking of it that way. I'll scale
>> the variables and I'll give it a try.
>>
>> Cheers,
>>
>> -Nachiket
>>
>>
>>
>>
>>>
>>> --
>>> What most experimenters take for granted before they begin their
>>> experiments
>>> is infinitely more interesting than any results to which their
>>> experiments
>>> lead.
>>> -- Norbert Wiener
>>>
>>
>


-- 
What most experimenters take for granted before they begin their
experiments is infinitely more interesting than any results to which their
experiments lead.
-- Norbert Wiener
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20121019/cec31310/attachment-0001.html>


More information about the petsc-users mailing list