Actual source code: ex256.c

  1: static char help[] = "Test some operations of SeqDense matrices with an LDA larger than M.\n";

  3: #include <petscmat.h>

  5: int main(int argc,char **argv)
  6: {
  7:   Mat            A,B;
  8:   PetscScalar    *a,*b;
  9:   PetscInt       n=4,lda=5,i;

 11:   PetscInitialize(&argc,&argv,0,help);
 12:   PetscOptionsGetInt(NULL,NULL,"-n",&n,NULL);
 13:   PetscOptionsGetInt(NULL,NULL,"-lda",&lda,NULL);

 16:   /*
 17:    * Create two identical matrices (MatDuplicate does not preserve lda)
 18:    */
 19:   PetscCalloc2(lda*n,&a,lda*n,&b);
 20:   for (i=0; i<n; i++) {
 21:     a[i+i*lda] = 1.0+2.0*PETSC_i;
 22:     if (i>0) a[i+(i-1)*lda] = 3.0-0.5*PETSC_i;
 23:     b[i+i*lda] = 1.0+2.0*PETSC_i;
 24:     if (i>0) b[i+(i-1)*lda] = 3.0-0.5*PETSC_i;
 25:   }
 26:   MatCreate(PETSC_COMM_SELF,&A);
 27:   MatSetSizes(A,n,n,n,n);
 28:   MatSetType(A,MATSEQDENSE);
 29:   MatSeqDenseSetPreallocation(A,a);
 30:   MatDenseSetLDA(A,lda);

 32:   MatCreate(PETSC_COMM_SELF,&B);
 33:   MatSetSizes(B,n,n,n,n);
 34:   MatSetType(B,MATSEQDENSE);
 35:   MatSeqDenseSetPreallocation(B,b);
 36:   MatDenseSetLDA(B,lda);

 38:   MatView(A,NULL);
 39:   MatConjugate(A);
 40:   MatView(A,NULL);
 41:   MatRealPart(A);
 42:   MatView(A,NULL);
 43:   MatImaginaryPart(B);
 44:   MatView(B,NULL);

 46:   PetscFree2(a,b);
 47:   MatDestroy(&A);
 48:   MatDestroy(&B);
 49:   PetscFinalize();
 50:   return 0;
 51: }

 53: /*TEST

 55:    build:
 56:      requires: complex

 58:    test:

 60: TEST*/