[petsc-users] Suggestions for code with dof >> 1 ?

Jed Brown jedbrown at mcs.anl.gov
Wed Oct 9 07:56:44 CDT 2013


Christophe Ortiz <christophe.ortiz at ciemat.es> writes:

> Hi,
>
> I am building my Jacobian (IJacobian) with dof > 1 and I am considering to
> use either MatSetValuesLocal (what you did in ex10.c from
> advection-diffusion) or MatSetValuesBlocked.
>
> Which one do you recommend ?

MatSetValuesBlocked or MatSetValuesBlockedLocal.

> For the moment I am trying to understand how MatSetValuesBlocked works from
> the various examples given in ts tutorials, but there is a mistery for
> me...In these examples, the block size is not set. So when m and idxm[] (n
> and idxn[]) are passed in, how does PETSc know the correspondance with
> global row and column indices in the matrix ?
>
> For instance, ex22.c
>
> for (i=info.xs; i<info.xs+info.xm; i++) {
> const PetscReal *k = user->k;
> PetscScalar     v[2][2];
>
> v[0][0] = a + k[0]; v[0][1] =  -k[1];
> v[1][0] =    -k[0]; v[1][1] = a+k[1];
> MatSetValuesBlocked(*Jpre,1,&i,1,&i,&v[0][0],INSERT_VALUES);
> }
>
> Here 4 terms due to chemical reactions are passed to the matrix at once.
> &i is passed for indice of row and column, which is supposed to be the
> indice of the block. But if the blocksize is not set, how PETSc knows to
> which row/colum it really corresponds in the matrix ?

DMCreateMatrix() set the block size to match the "dof" argument to DMDACreate1d.

> For instance, if we take the example from petsc (MatSetValuesBlocked page),
> what should I do to pass the block of values 3, 4, 7 and 8 with
> MatSetValuesBlocked ?
>
>   1  2  | 3  4
>   5  6  | 7  8
>     - - - | - - -
>  9  10 | 11 12
> 13 14 | 15 16

Block row 0, block column 1.  (Count from 0.)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 835 bytes
Desc: not available
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20131009/d708b2ae/attachment.pgp>


More information about the petsc-users mailing list