[petsc-users] Scale the diagonal entries of a Mat

Jed Brown jedbrown at mcs.anl.gov
Sat Feb 23 07:37:12 CST 2013


(You should really not use penalties, but if you insist on doing it, you
should implement it the way I describe. There is no point assembling before
imposing boundary conditions.)
On Feb 23, 2013 7:32 AM, "Jed Brown" <jedbrown at mcs.anl.gov> wrote:

> You should really use MatSetValuesLocal with ADD_VALUES *before*
> assembling.
> On Feb 23, 2013 7:28 AM, "Hui Zhang" <mike.hui.zhang at hotmail.com> wrote:
>
>>
>> On Feb 23, 2013, at 1:37 PM, Matthew Knepley wrote:
>>
>> > On Sat, Feb 23, 2013 at 7:35 AM, Hui Zhang <mike.hui.zhang at hotmail.com>
>> wrote:
>> >
>> > On Feb 23, 2013, at 1:32 PM, Matthew Knepley wrote:
>> >
>> > > On Sat, Feb 23, 2013 at 7:29 AM, Hui Zhang <
>> mike.hui.zhang at hotmail.com> wrote:
>> > > I want to implement diagonal penalty method for enforcing the
>> Dirichlet boundary conditions.  That is, the diagonal entries corresponding
>> to Dirichlet boundary are going to be scaled by a large number.
>> > >
>> > > What is the easiest way to do this?  Thanks!
>> > >
>> > >
>> http://www.mcs.anl.gov/petsc/petsc-dev/docs/manualpages/Mat/MatDiagonalScale.html
>> >
>> > But it seems not what I want.  That routine scales all the entries of a
>> mat.  I want to scale only the diagonal entries.
>> >
>> > Then use
>> http://www.mcs.anl.gov/petsc/petsc-dev/docs/manualpages/Mat/MatDiagonalSet.html
>>
>> I want to do the following on an already assembled matrix
>> (FINAL_ASSEMBLY).
>>
>> MatGetLocalSubMatrix .. to get 'submat',
>> MatGetDiagonal .. to get diagonal vector 'diag',
>> VecScale .. to scale 'diag'
>> MatDiagonalSet .. to set scaled 'diag' to 'submat'
>> MatRestoreLocalSubMatrix .. to restore 'submat'
>>
>> After the above process, do I need MatAssemblyBegin/End again?  I do not
>> know why the penalty method is bad.  Maybe because the bad conditioning?  I
>> just want to try out and compare with MatZeroRowsColumns (lift and remove)
>> method.
>>
>> >
>> > As Jed says, you really really do not want to do this.
>> >
>> >   Matt
>> >
>> > >
>> > >   Matt
>> > >
>> > > --
>> > > 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/20130223/0832abad/attachment.html>


More information about the petsc-users mailing list