Dear Petsc developer: Hi, Thank you very much for your previous reply. I recently wanted to modify my program to parallel version, and encountered some problems in modifying it. 1. There are functions (read matrix) in the program that reads files,will they affect my parallelism? The codes are as follows:
ierr = PetscViewerBinaryOpen (PETSC_COMM_WORLD, file, FILE_MODE_READ, &viewer); CHKERRQ (ierr); ierr = MatCreate (PETSC_COMM_WORLD, &A1); CHKERRQ (ierr); ierr = MatSetFromOptions (A1); CHKERRQ (ierr); ierr = MatCreate (PETSC_COMM_WORLD, &A2); CHKERRQ (ierr); ierr = MatSetFromOptions (A2); CHKERRQ (ierr); ierr = MatLoad (A1, viewer); CHKERRQ (ierr); ierr = MatLoad (A2, viewer); CHKERRQ (ierr); ierr = PetscViewerDestroy (&viewer); CHKERRQ (ierr); I read two matrix information from a binary file and wanted to use it on each processor (in fact, my goal was to use these two matrices to give initial values to the two field variables). The program can run in serial time. Now I want to change it to parallel program. What do I need to modify? 2. Following the last question, I used the following code in giving initial value procedure FormInitialGuess(): ierr = MatSeqAIJGetArray (A1, &initial_phi1); CHKERRQ (ierr); ierr = MatSeqAIJGetArray (A2, &initial_phi2); CHKERRQ (ierr); I found this function on manualpages, and I felt that it could fulfill my need to represent the elements of the matrix in arrays to give field variables an initial value in each grid. The matrix A1 and A2 above are actually the matrix information that was read from the file before. Now I want to modify it as a parallel program. How do I use matrix information to give initial values in parallel? (In program, field variables are implemented through DM because parallel computing and Ghost Value are supported) Thanks, Yingjie