[petsc-users] DMCreateMatrix with some dense row

Sang pham van pvsang002 at gmail.com
Fri Oct 23 23:04:54 CDT 2015


Hi Barry,

The routine DMCreateMatrix_DA_3d_MPIAIJ has 2 input arguments (DM da, Mat
J), the function pointer in DMDASetGetMatrix() only accept function with
that two arguments.
As you suggested, I am writing a routine (based on
DMCreateMatrix_DA_3d_MPIAIJ())
to preallocate the matrix in the way I wish, to do that I think It needs to
have one more input argument: My_DMCreateMatrix_DA_3d_MPIAIJ(DM da, Mat J,
void* my_context). But DMDASetGetMatrix() will not accept pointer of this
function. Please give a suggestion to overcome this.

Thank you.

Pham


On Fri, Sep 4, 2015 at 1:24 AM, Barry Smith <bsmith at mcs.anl.gov> wrote:

>
>     Look at DMCreateMatrix_DA_2d_MPIAIJ  (or the 3d version if working in
> 3d)   You need to copy this routine and add whatever additional
> preallocation information you need.   Then call DMDASetGetMatrix()  so that
> the DM will use your routine to create the matrix for you.
>
>    Barry
>
>
>
>
> > On Sep 3, 2015, at 11:28 AM, Sang pham van <pvsang002 at gmail.com> wrote:
> >
> > Hi,
> >
> > I am using DMCreateMatrix to create matrix from a existed DM object and
> defined stencil.
> > In my code, boundary nodes need to involve many inner nodes, thus matrix
> rows corresponding to boundary nodes are almost dense. How can I  tell
> petsc that those rows need to be preallocated with more entries? I don't
> want to use MatMPIAIJSetPreallocation() since advantages of DM might be
> lost.
> >
> > Many thanks.
> >
> > Sam.
> >
> >
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20151024/09be0e6f/attachment.html>


More information about the petsc-users mailing list