1af0996ceSBarry Smith #include <petsc/private/fortranimpl.h> 245c38901SJed Brown #include <petscmat.h> 345c38901SJed Brown 445c38901SJed Brown #if defined(PETSC_HAVE_FORTRAN_CAPS) 545c38901SJed Brown #define matcreatenest_ MATCREATENEST 63a4d7b9aSSatish Balay #define matnestgetiss_ MATNESTGETISS 7*ffa9b3b1SVincent Le Chenadec #define matnestgetsubmats_ MATNESTGETSUBMATS 845c38901SJed Brown #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) 945c38901SJed Brown #define matcreatenest_ matcreatenest 103a4d7b9aSSatish Balay #define matnestgetiss_ matnestgetiss 11*ffa9b3b1SVincent Le Chenadec #define matnestgetsubmats_ matnestgetsubmats 1245c38901SJed Brown #endif 1345c38901SJed Brown 148cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL matcreatenest_(MPI_Fint *comm,PetscInt *nr,IS is_row[],PetscInt *nc,IS is_col[],Mat a[],Mat *B,int *ierr) 1545c38901SJed Brown { 1645c38901SJed Brown CHKFORTRANNULLOBJECT(is_row); 1745c38901SJed Brown CHKFORTRANNULLOBJECT(is_col); 1845c38901SJed Brown *ierr = MatCreateNest(MPI_Comm_f2c(*comm),*nr,is_row,*nc,is_col,a,B); 1945c38901SJed Brown } 203a4d7b9aSSatish Balay 213a4d7b9aSSatish Balay PETSC_EXTERN void PETSC_STDCALL matnestgetiss_(Mat *A,IS rows[],IS cols[], int *ierr ) 223a4d7b9aSSatish Balay { 233a4d7b9aSSatish Balay CHKFORTRANNULLOBJECT(rows); 243a4d7b9aSSatish Balay CHKFORTRANNULLOBJECT(cols); 253a4d7b9aSSatish Balay *ierr = MatNestGetISs(*A,rows,cols); 263a4d7b9aSSatish Balay } 27*ffa9b3b1SVincent Le Chenadec 28*ffa9b3b1SVincent Le Chenadec PETSC_EXTERN void PETSC_STDCALL matnestgetsubmats_(Mat *A,PetscInt *M,PetscInt *N,Mat *sub,int *ierr) 29*ffa9b3b1SVincent Le Chenadec { 30*ffa9b3b1SVincent Le Chenadec Mat **mat; 31*ffa9b3b1SVincent Le Chenadec PetscInt i,j; 32*ffa9b3b1SVincent Le Chenadec *ierr = MatNestGetSubMats(*A,M,N,&mat); 33*ffa9b3b1SVincent Le Chenadec for (i=0; i<(*M);i++){ 34*ffa9b3b1SVincent Le Chenadec for (j=0;j<(*N);j++){ 35*ffa9b3b1SVincent Le Chenadec sub[j + (*N) * i] = mat[i][j]; 36*ffa9b3b1SVincent Le Chenadec } 37*ffa9b3b1SVincent Le Chenadec } 38*ffa9b3b1SVincent Le Chenadec } 39