static char help[] = "Template for Solution of system of equations Ax=b"; #include #include #include #undef __FUNC__ #define __FUNC__ "main" void constructA(Mat *A,PetscInt N); void LU(Mat *A,PetscInt n); void forward(Mat *A,Vec *b,PetscInt n); void backward(Mat *A,Vec *b,PetscInt n); int main(int argc,char **args) { FILE * file; Mat A,L; Vec b,bCholesky; PetscInt M,N,n,i,j,k,fdisp; MatScalar *a; PetscScalar *vecp; PetscScalar h,f=1.0,v; PetscErrorCode ierr; N=10; M=N+2; n=N*N; h = 1/((PetscScalar)N+1); f = f*h*h; PetscInitialize(&argc,&args,(char *) 0,help); fdisp=1; //Only for surf plot display and png filename /* Create Matrix A,L */ ierr = MatCreate(PETSC_COMM_WORLD,&A); CHKERRQ(ierr); ierr = MatSetSizes(A,PETSC_DECIDE,PETSC_DECIDE,n,n);CHKERRQ(ierr); ierr = MatSetFromOptions(A);CHKERRQ(ierr); ierr = MatSetUp(A); ierr = MatCreate(PETSC_COMM_WORLD,&L); CHKERRQ(ierr); ierr = MatSetSizes(L,PETSC_DECIDE,PETSC_DECIDE,n,n);CHKERRQ(ierr); ierr = MatSetFromOptions(L);CHKERRQ(ierr); ierr = MatSetUp(L); /* Constructing A - a symetric N^2*N^2 matrix */ MatSetType(A,MATSEQDENSE); MatSeqDenseSetPreallocation(A,PETSC_NULL); MatSetType(L,MATSEQDENSE); MatSeqDenseSetPreallocation(L,PETSC_NULL); ierr = MatAssemblyBegin(L,MAT_FINAL_ASSEMBLY);CHKERRQ(ierr); ierr = MatAssemblyEnd(L,MAT_FINAL_ASSEMBLY);CHKERRQ(ierr); constructA(&A,N); ยด /* Create Vector b */ ierr = VecCreate(PETSC_COMM_WORLD,&b);CHKERRQ(ierr); ierr = VecSetSizes(b,PETSC_DECIDE,n);CHKERRQ(ierr); ierr = VecSetFromOptions(b);CHKERRQ(ierr); for (i=0;i