[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