Actual source code: ex248.c


  2: static char help[] = "Tests MatSeqAIJKron.\n\n";

  4: #include <petscmat.h>

  6: int main(int argc,char **argv)
  7: {
  8:   Mat               A,B,C,K,Ad,Bd;
  9:   const PetscScalar *Bv;
 10:   PetscInt          n = 10, m = 20, p = 7, q = 17;
 11:   PetscBool         flg;

 13:   PetscInitialize(&argc,&argv,(char*)0,help);
 14:   MatCreateDense(PETSC_COMM_SELF,m,n,m,n,NULL,&Ad);
 15:   MatCreateDense(PETSC_COMM_SELF,p,q,p,q,NULL,&Bd);
 16:   MatSetRandom(Ad,NULL);
 17:   MatSetRandom(Bd,NULL);
 18:   MatChop(Ad,0.2);
 19:   MatChop(Bd,0.2);
 20:   MatConvert(Ad,MATAIJ,MAT_INITIAL_MATRIX,&A);
 21:   MatConvert(Bd,MATAIJ,MAT_INITIAL_MATRIX,&B);
 22:   MatSeqAIJKron(A,B,MAT_INITIAL_MATRIX,&C);
 23:   MatViewFromOptions(A,NULL,"-A_view");
 24:   MatViewFromOptions(B,NULL,"-B_view");
 25:   MatViewFromOptions(C,NULL,"-C_view");
 26:   MatDenseGetArrayRead(Bd,&Bv);
 27:   MatCreateKAIJ(A,p,q,NULL,Bv,&K);
 28:   MatDenseRestoreArrayRead(Bd,&Bv);
 29:   MatMultEqual(C,K,10,&flg);
 31:   MatScale(A,1.3);
 32:   MatScale(B,0.3);
 33:   MatScale(Bd,0.3);
 34:   MatSeqAIJKron(A,B,MAT_REUSE_MATRIX,&C);
 35:   MatDenseGetArrayRead(Bd,&Bv);
 36:   MatKAIJSetT(K,p,q,Bv);
 37:   MatDenseRestoreArrayRead(Bd,&Bv);
 38:   MatMultEqual(C,K,10,&flg);
 40:   MatDestroy(&K);
 41:   MatDestroy(&C);
 42:   MatDestroy(&B);
 43:   MatDestroy(&A);
 44:   MatDestroy(&Bd);
 45:   MatDestroy(&Ad);
 46:   PetscFinalize();
 47:   return 0;
 48: }

 50: /*TEST

 52:     test:
 53:       suffix: 1
 54:       nsize: 1
 55:       output_file: output/ex101.out

 57: TEST*/