I don't understand. Why do you wish the new matrix-matrix product vector to 
have the same nonzero pattern as the basic dm matrix? 

   If you multiple two dm matrices together it will generally have a larger 
stencil then the dm matrix but this is normal and the new product matrix 
handles it correctly. You should not copy this new "larger" matrix into a dm 
matrix. When you do MatAXPY() or MatAYPX() you should put the result into the 
product matrix, not the dm matrix and you can use SUBSET_NONZERO_PATTERN to 
make it reasonably efficient.

  Barry


> On Aug 12, 2021, at 10:31 AM, Matthew Knepley <knep...@gmail.com> wrote:
> 
> On Thu, Aug 12, 2021 at 10:44 AM Alfredo J Duarte Gomez <aduar...@utexas.edu 
> <mailto:aduar...@utexas.edu>> wrote:
> Good morning,
> 
> I am currently having some trouble in the creation of some matrices.
> 
> I am using structured dmda objects to create matrices using the DMCreate() 
> function.
> 
> One of these matrices will be the result of a matrix-matrix product of two of 
> these dm matrices.
> 
> I know that the matrix product will have more nonzero entries or at least a 
> bigger stencil than the original dm matrices, however I accounted for that 
> when I set the DMDA stencil width in the initial creation.
> 
> By default, we put zeros into those locations, so you would expand that 
> stencil when doing MatMatMult(). You can use
> 
>   -dm_preallocate_only
> 
> to prevent the zeros from being included. However, then your target matrix 
> would not have those locations, so you would
> need to turn that off before creating the product matrix, or you could just 
> make two DMDA with different stencils, since they
> are really small. This later solutions sounds cleaner to me.
> 
>   Thanks,
> 
>      Matt
>  
> The problem is that even with that, the resulting matrix-matrix product has a 
> bigger stencil as evidenced by failure in subsequent matrix copy/addition 
> operations using SAME_NONZERO_PATTERN.
> 
> Judging by the difference of the nonzero entries I believe that initial zero 
> entries (the ones I initialized to eventually hold this expaned stencil) on 
> the original dm matrices are being combined to further expand the stencil of 
> the product matrix. 
> 
> Is there any way of getting a matrix-matrix product that will keep the same 
> nonzero pattern as the dm matrices?
> 
> I have tried both MatMatMult() and the MatProductCreate() sequence so far, 
> but both produce nonzero patterns that do not match the dm nonzero pattern.
> 
> Thank you,
> 
> -Alfredo
> 
> 
> 
> -- 
> Alfredo Duarte
> Graduate Research Assistant
> The University of Texas at Austin
> 
> 
> -- 
> 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
> 
> https://www.cse.buffalo.edu/~knepley/ <http://www.cse.buffalo.edu/~knepley/>

Reply via email to