1*06c5243aSJose E. Roman static char help[] = "Test some operations of SeqDense matrices with an LDA larger than M.\n"; 2*06c5243aSJose E. Roman 3*06c5243aSJose E. Roman #include <petscmat.h> 4*06c5243aSJose E. Roman 5*06c5243aSJose E. Roman int main(int argc,char **argv) 6*06c5243aSJose E. Roman { 7*06c5243aSJose E. Roman Mat A,B; 8*06c5243aSJose E. Roman PetscScalar *a,*b; 9*06c5243aSJose E. Roman PetscInt n=4,lda=5,i; 10*06c5243aSJose E. Roman 11*06c5243aSJose E. Roman PetscCall(PetscInitialize(&argc,&argv,0,help)); 12*06c5243aSJose E. Roman PetscCall(PetscOptionsGetInt(NULL,NULL,"-n",&n,NULL)); 13*06c5243aSJose E. Roman PetscCall(PetscOptionsGetInt(NULL,NULL,"-lda",&lda,NULL)); 14*06c5243aSJose E. Roman PetscCheck(lda>=n,PETSC_COMM_SELF,PETSC_ERR_ARG_WRONG,"lda %" PetscInt_FMT " < n %" PetscInt_FMT,lda,n); 15*06c5243aSJose E. Roman 16*06c5243aSJose E. Roman /* 17*06c5243aSJose E. Roman * Create two identical matrices (MatDuplicate does not preserve lda) 18*06c5243aSJose E. Roman */ 19*06c5243aSJose E. Roman PetscCall(PetscCalloc2(lda*n,&a,lda*n,&b)); 20*06c5243aSJose E. Roman for (i=0; i<n; i++) { 21*06c5243aSJose E. Roman a[i+i*lda] = 1.0+2.0*PETSC_i; 22*06c5243aSJose E. Roman if (i>0) a[i+(i-1)*lda] = 3.0-0.5*PETSC_i; 23*06c5243aSJose E. Roman b[i+i*lda] = 1.0+2.0*PETSC_i; 24*06c5243aSJose E. Roman if (i>0) b[i+(i-1)*lda] = 3.0-0.5*PETSC_i; 25*06c5243aSJose E. Roman } 26*06c5243aSJose E. Roman PetscCall(MatCreate(PETSC_COMM_SELF,&A)); 27*06c5243aSJose E. Roman PetscCall(MatSetSizes(A,n,n,n,n)); 28*06c5243aSJose E. Roman PetscCall(MatSetType(A,MATSEQDENSE)); 29*06c5243aSJose E. Roman PetscCall(MatSeqDenseSetPreallocation(A,a)); 30*06c5243aSJose E. Roman PetscCall(MatDenseSetLDA(A,lda)); 31*06c5243aSJose E. Roman 32*06c5243aSJose E. Roman PetscCall(MatCreate(PETSC_COMM_SELF,&B)); 33*06c5243aSJose E. Roman PetscCall(MatSetSizes(B,n,n,n,n)); 34*06c5243aSJose E. Roman PetscCall(MatSetType(B,MATSEQDENSE)); 35*06c5243aSJose E. Roman PetscCall(MatSeqDenseSetPreallocation(B,b)); 36*06c5243aSJose E. Roman PetscCall(MatDenseSetLDA(B,lda)); 37*06c5243aSJose E. Roman 38*06c5243aSJose E. Roman PetscCall(MatView(A,NULL)); 39*06c5243aSJose E. Roman PetscCall(MatConjugate(A)); 40*06c5243aSJose E. Roman PetscCall(MatView(A,NULL)); 41*06c5243aSJose E. Roman PetscCall(MatRealPart(A)); 42*06c5243aSJose E. Roman PetscCall(MatView(A,NULL)); 43*06c5243aSJose E. Roman PetscCall(MatImaginaryPart(B)); 44*06c5243aSJose E. Roman PetscCall(MatView(B,NULL)); 45*06c5243aSJose E. Roman 46*06c5243aSJose E. Roman PetscCall(PetscFree2(a,b)); 47*06c5243aSJose E. Roman PetscCall(MatDestroy(&A)); 48*06c5243aSJose E. Roman PetscCall(MatDestroy(&B)); 49*06c5243aSJose E. Roman PetscCall(PetscFinalize()); 50*06c5243aSJose E. Roman return 0; 51*06c5243aSJose E. Roman } 52*06c5243aSJose E. Roman 53*06c5243aSJose E. Roman /*TEST 54*06c5243aSJose E. Roman 55*06c5243aSJose E. Roman build: 56*06c5243aSJose E. Roman requires: complex 57*06c5243aSJose E. Roman 58*06c5243aSJose E. Roman test: 59*06c5243aSJose E. Roman 60*06c5243aSJose E. Roman TEST*/ 61