[petsc-users] DMCreateMatrix with some dense row
Dave May
dave.mayhem23 at gmail.com
Sat Oct 24 01:33:26 CDT 2015
If you need to access a user defined context from within your CreateMatrix
function, you can attach it to the DM via PetscObjectCompose
http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/Sys/PetscObjectCompose.html
If your context is not a petsc object, you can use PetscContainerCreate(),
http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/Sys/PetscContainerCreate.html#PetscContainerCreate
You would then set your user context pointer inside the container and then
use PetscObjectCompose() to attach the container to the DM
Thanks,
Dave
On 24 October 2015 at 06:04, Sang pham van <pvsang002 at gmail.com> wrote:
> 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/854db5c8/attachment.html>
More information about the petsc-users
mailing list