[petsc-users] how to use MatSetValues?

Tomasz Jankowski tomjan at jay.au.poznan.pl
Tue Mar 8 03:16:28 CST 2011


> I think m and n are the number of rows and columns you are inserting
> in the matrix. If you insert one value at a time, that would be
>
> MatSetValues(xx,1,row,1,col,val,INSERT_VALUES);
>
> I hope it helps
>
> Gianluca

hello Gianluca, thanks for re.

your sugestion doesn't work.

my code

   Mat xx;
   PetscInitialize(&argc,&argv,(char *)0,help);

   MatCreateSeqAIJ(PETSC_COMM_SELF,5,5,PETSC_DECIDE,PETSC_NULL,&xx);

   PetscInt row [] ={0, 1, 2, 3, 4};
   PetscInt col [] = {1, 0, 4, 2, 3};
   PetscScalar val[] = {1.1,2.2,3.3,4.4,5.5};

   MatSetValues(xx,5,row,5,col,val,INSERT_VALUES);

   MatAssemblyBegin(xx,MAT_FINAL_ASSEMBLY);
   MatAssemblyEnd(xx,MAT_FINAL_ASSEMBLY);

   MatView(xx,PETSC_VIEWER_STDOUT_WORLD);
   PetscFinalize();

and here few examples of results

   MatSetValues(xx,1,row,1,col,val,INSERT_VALUES);

row 0: (1, 1.1)
row 1:
row 2:
row 3:
row 4:


   MatSetValues(xx,5,row,1,col,val,INSERT_VALUES);

row 0: (1, 1.1)
row 1: (1, 2.2)
row 2: (1, 3.3)
row 3: (1, 4.4)
row 4: (1, 5.5)

   MatSetValues(xx,5,row,5,col,val,INSERT_VALUES);

row 0: (0, 2.2)  (1, 1.1)  (2, 4.4)  (3, 5.5)  (4, 3.3)
row 1: (0, 4.94066e-324)  (1, 2.07411e-317)  (2, 1.4822e-323)  (3, 2.07356e-317)  (4, 4.24399e-314)
row 2: (0, 6.36599e-314)  (1, 2.122e-314)  (2, 2.07402e-317)  (3, 1.5957e-316)  (4, 1.18832e-312)
row 3: (0, 6.95332e-310)  (1, 2.07367e-317)  (2, 0)  (3, 1.20407e-312)  (4, 0)
row 4: (0, 6.95332e-310)  (1, 0)  (2, 2.07378e-317)  (3, 0)  (4, 2.122e-314)

tom

########################################################
#               tomjan at jay.au.poznan.pl                #
#              jay.au.poznan.pl/~tomjan/               #
########################################################

On Tue, 8 Mar 2011, Gianluca Meneghello wrote:

> I think m and n are the number of rows and columns you are inserting
> in the matrix. If you insert one value at a time, that would be
>
> MatSetValues(xx,1,row,1,col,val,INSERT_VALUES);
>
> I hope it helps
>
> Gianluca
>
> On 8 March 2011 09:39, Tomasz Jankowski <tomjan at jay.au.poznan.pl> wrote:
>> hello,
>>
>> Could someone give me a hand with MatSetValues function?
>>
>> suppose such example sparse matrix
>>
>> 0   1.1 0   0   0
>> 2.2 0   0   0   0
>> 0   0   0   0   3.3
>> 0   0   4.4 0   0
>> 0   0   0   5.5 0
>>
>> after storing it in row, col and val arrays we have
>>
>> row[0] = 0;col[0]=1;val[0]=1.1;
>> row[1] = 1;col[1]=0;val[1]=2.2;
>> row[2] = 2;col[2]=4;val[2]=3.3;
>> row[3] = 3;col[3]=2;val[3]=4.4;
>> row[3] = 4;col[3]=3;val[4]=5.5;
>>
>> question is: how to use MatSetValues with it?
>>
>> I thought that 'MatSetValues(xx,5,row,1,col,val,INSERT_VALUES);' would be
>> good but it doesn't .(I suppose I don't fully anderstand how it works...)
>>
>> thanks,
>>
>> tom
>>
>> ########################################################
>> #               tomjan at jay.au.poznan.pl                #
>> #              jay.au.poznan.pl/~tomjan/               #
>> ########################################################
>>
>
>
>
> -- 
> "[Je pense que] l'homme est un monde qui vaut des fois les mondes et
> que les plus ardentes ambitions sont celles qui ont eu l'orgueil de
> l'Anonymat" -- Non omnibus, sed mihi et tibi
> Amedeo Modigliani
>


More information about the petsc-users mailing list