[petsc-users] Why use MATMPIBAIJ?

Hoang Giang Bui hgbk2008 at gmail.com
Mon Jan 18 09:42:00 CST 2016


Why P2/P2 is not for co-located discretization? However, it's not my
question. The P2/P1 which I used generate variable block size at each node.
That was fine if I used PCFieldSplitSetIS for each components,
displacements and pressures. But how to set the block size (3) for
displacement block?

Giang

On Mon, Jan 18, 2016 at 3:58 PM, Matthew Knepley <knepley at gmail.com> wrote:

> On Mon, Jan 18, 2016 at 8:29 AM, Hoang Giang Bui <hgbk2008 at gmail.com>
> wrote:
>
>>
>>
>> On Thu, Jan 14, 2016 at 8:08 PM, Barry Smith <bsmith at mcs.anl.gov> wrote:
>>
>>>
>>> > On Jan 14, 2016, at 12:57 PM, Jed Brown <jed at jedbrown.org> wrote:
>>> >
>>> > Hoang Giang Bui <hgbk2008 at gmail.com> writes:
>>> >> One more question I like to ask, which is more on the performance of
>>> the
>>> >> solver. That if I have a coupled problem, says the point block is
>>> [u_x u_y
>>> >> u_z p] in which entries of p block in stiffness matrix is in a much
>>> smaller
>>> >> scale than u (p~1e-6, u~1e+8), then AMG with hypre in PETSc still
>>> scale?
>>> >
>>> > You should scale the model (as Barry says).  But the names of your
>>> > variables suggest that the system is a saddle point problem, in which
>>> > case there's a good chance AMG won't work at all.  For example,
>>> > BoomerAMG produces a singular preconditioner in similar contexts, such
>>> > that the preconditioned residual drops smoothly while the true residual
>>> > stagnates (the equations are not solved at all).  So be vary careful if
>>> > you think it's "working".
>>>
>>>
>>
>> Using block size 4 with the scaling, the hypre AMG does not converge. So
>> it's somehow right.
>>
>>
>>
>>>    The PCFIEDSPLIT preconditioner is designed for helping to solve
>>> saddle point problems.
>>>
>>>
>>>
>>
>> Does PCFIELDSPLIT support variable block size? For example using P2/P1
>> discretization, the number of nodes carrying [u_x u_y u_z] is different
>> with number of nodes carrying p. PCFieldSplitSetBlockSize would not be
>> correct in this case.
>>
>
> You misunderstand the blocking. You would put ALL velocities (P2) in one
> block and ALL pressure (P1) in another.
> The PCFieldSplitSetBlockSize() call is for co-located discretizations,
> which P2/P2 is not.
>
>    Matt
>
>
>> Giang
>>
>>
>
>
> --
> 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/20160118/640b427c/attachment-0001.html>


More information about the petsc-users mailing list