Non-uniform 2D mesh questions

Barry Smith bsmith at mcs.anl.gov
Fri Feb 2 15:38:39 CST 2007


  Yaron,

   Anything is possible :-) and maybe not terribly difficult to get started.

You could use DAGetMatrx() to give you the properly pre-allocated "huge" Mat.

Have each process loop over the "rectangular portion[s] of the domain" that
it mostly owns (that is if a rectangular portion lies across two processes just
assign it to one of them for this loop.)

Then loop over the locations inside the rectangular portion calling
MatSetValuesStencil() for that row of the huge matrix to put the entries from 
the smaller matrix INTO the huge matrix using the natural grid i,j coordindates 
(so not have to map the coordinates from the grid location to the location in 
the matrix).

This may require some thought to get right but should require little coding
(if you are writting hundreds and hundreds of lines of code then likely 
something is wrong).

  Good luck,

   Barry


On Tue, 30 Jan 2007, yaron at oak-research.com wrote:

> Barry-
> So far I only thought of having a single large sparse matrix.
> 
> Yaron
> 
> 
> 	-------Original Message-------
>   From: Barry Smith
>   Subject: Re: Non-uniform 2D mesh questions
>   Sent: 30 Jan '07 10:58
> 
> 
>    Yaron,
> 
>    Do you want to end up generating a single large sparse matrix? Like a
> MPIAIJ
>   matrix? Or do you want to somehow not store the entire huge matrix but
> still
>   be able to solve with the composed matrix? Or both?
> 
>    Barry
> 
> 
>   On Mon, 29 Jan 2007, [LINK:
> http://webmail.oak-research.com/compose.php?to=yaron@oak-research.com]
> yaron at oak-research.com wrote:
> 
>   > Barry-
>   > Yes, each block is a rectangular portion of the domain. Not so small
>   > though (more like 100 x 100 nodes)
>   >
>   > Yaron
>   >
>   >
>   > 	 -------Original Message-------
>   > From: Barry Smith
>   > Subject: Re: Non-uniform 2D mesh questions
>   > Sent: 29 Jan '07 19:40
>   >
>   >
>   > Yaron,
>   >
>   > Is each one of these "blocks" a small rectangular part of the
>   > domain (like a 4 by 5 set of nodes)? I don't understand what you
>   > want to do.
>   >
>   > Barry
>   >
>   >
>   > On Mon, 29 Jan 2007, [LINK:
>   > [LINK:
> http://webmail.oak-research.com/compose.php?to=yaron@oak-research.com]
> http://webmail.oak-research.com/compose.php?to=yaron@oak-research.com]
>   > [LINK:
> http://webmail.oak-research.com/compose.php?to=yaron@oak-research.com]
> yaron at oak-research.com wrote:
>   >
>   > > Hi all
>   > > I have a laplace-type problem that's physically built from repeating
>   > > instances of the same block.
>   > > I'm creaing matrices for the individual blocks, and I'd like to
> reuse
>   > > the individual block matrices in order to compose the complete
>   > problem.
>   > > (i.e if there 10K instances of 20 blocks, I'd like to build 20
>   > matrices,
>   > > then use them to compose the large complete matrix)
>   > > Is a 2D DA the right object to do that? And if so, where can I find
> a
>   > > small example of building the DA object in parallel, then using the
>   > > different (for every instance) mappings of local nodes to global
> nodes
>   > in
>   > > order to build the complete matrix?
>   > >
>   > >
>   > > Thanks
>   > > Yaron
>   > >
>   >
> 




More information about the petsc-users mailing list