1ce0a2cd1SBarry Smith #include "private/fortranimpl.h" 2f4e70085SSatish Balay #include "petscmat.h" 3f4e70085SSatish Balay 4f4e70085SSatish Balay #if defined(PETSC_HAVE_FORTRAN_CAPS) 57d6bfa3bSBarry Smith #define matdestroymatrices_ MATDESTROYMATRICES 65dffd610SBarry Smith #define matgetfactor_ MATGETFACTOR 735bd34faSBarry Smith #define matfactorgetsolverpackage_ MATFACTORGETSOLVERPACKAGE 8f4e70085SSatish Balay #define matgetrowij_ MATGETROWIJ 9f4e70085SSatish Balay #define matrestorerowij_ MATRESTOREROWIJ 10f4e70085SSatish Balay #define matgetrow_ MATGETROW 11f4e70085SSatish Balay #define matrestorerow_ MATRESTOREROW 12f4e70085SSatish Balay #define matview_ MATVIEW 13f4e70085SSatish Balay #define matgetarray_ MATGETARRAY 14f4e70085SSatish Balay #define matrestorearray_ MATRESTOREARRAY 15f4e70085SSatish Balay #define matconvert_ MATCONVERT 16f4e70085SSatish Balay #define matgetsubmatrices_ MATGETSUBMATRICES 17f4e70085SSatish Balay #define matzerorows_ MATZEROROWS 18f4e70085SSatish Balay #define matzerorowsis_ MATZEROROWSIS 19f4e70085SSatish Balay #define matzerorowslocal_ MATZEROROWSLOCAL 20f4e70085SSatish Balay #define matzerorowslocalis_ MATZEROROWSLOCALIS 211eea217eSSatish Balay #define matsetoptionsprefix_ MATSETOPTIONSPREFIX 227c54600cSBarry Smith #define matgetvecs_ MATGETVECS 235ba43861SSatish Balay #define matnullspaceremove_ MATNULLSPACEREMOV 245ba43861SSatish Balay #define matgetinfo_ MATGETINFO 2522688b47SSatish Balay #define matlufactor_ MATLUFACTOR 2622688b47SSatish Balay #define matilufactor_ MATILUFACTOR 2722688b47SSatish Balay #define matlufactorsymbolic_ MATLUFACTORSYMBOLIC 2822688b47SSatish Balay #define matlufactornumeric_ MATLUFACTORNUMERIC 2922688b47SSatish Balay #define matcholeskyfactor_ MATCHOLESKYFACTOR 3022688b47SSatish Balay #define matcholeskyfactorsymbolic_ MATCHOLESKYFACTORSYMBOLIC 3122688b47SSatish Balay #define matcholeskyfactornumeric_ MATCHOLESKYFACTORNUMERIC 3222688b47SSatish Balay #define matilufactorsymbolic_ MATILUFACTORSYMBOLIC 3322688b47SSatish Balay #define maticcfactorsymbolic_ MATICCFACTORSYMBOLIC 3422688b47SSatish Balay #define maticcfactor_ MATICCFACTOR 3522688b47SSatish Balay #define matfactorinfoinitialize_ MATFACTORINFOINITIALIZE 36*b22b330cSBarry Smith #define matnullspacesetfunction_ MATNULLSPACESETFUNCTION 37f4e70085SSatish Balay #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) 387d6bfa3bSBarry Smith #define matdestroymatrices_ matdestroymatrices_ 395dffd610SBarry Smith #define matgetfactor_ matgetfactor 4035bd34faSBarry Smith #define matfactorgetsolverpackage_ matfactorgetsolverpackage 417c54600cSBarry Smith #define matgetvecs_ matgetvecs 42f4e70085SSatish Balay #define matgetrowij_ matgetrowij 43f4e70085SSatish Balay #define matrestorerowij_ matrestorerowij 44f4e70085SSatish Balay #define matgetrow_ matgetrow 45f4e70085SSatish Balay #define matrestorerow_ matrestorerow 46f4e70085SSatish Balay #define matview_ matview 47f4e70085SSatish Balay #define matgetarray_ matgetarray 48f4e70085SSatish Balay #define matrestorearray_ matrestorearray 49f4e70085SSatish Balay #define matconvert_ matconvert 50f4e70085SSatish Balay #define matgetsubmatrices_ matgetsubmatrices 51f4e70085SSatish Balay #define matzerorows_ matzerorows 52f4e70085SSatish Balay #define matzerorowsis_ matzerorowsis 53f4e70085SSatish Balay #define matzerorowslocal_ matzerorowslocal 54f4e70085SSatish Balay #define matzerorowslocalis_ matzerorowslocalis 551eea217eSSatish Balay #define matsetoptionsprefix_ matsetoptionsprefix 56812c3f48SMatthew Knepley #define matnullspaceremove_ matnullspaceremove 575ba43861SSatish Balay #define matgetinfo_ matgetinfo 5822688b47SSatish Balay #define matlufactor_ matlufactor 5922688b47SSatish Balay #define matilufactor_ matilufactor 6022688b47SSatish Balay #define matlufactorsymbolic_ matlufactorsymbolic 6122688b47SSatish Balay #define matlufactornumeric_ matlufactornumeric 6222688b47SSatish Balay #define matcholeskyfactor_ matcholeskyfactor 6322688b47SSatish Balay #define matcholeskyfactorsymbolic_ matcholeskyfactorsymbolic 6422688b47SSatish Balay #define matcholeskyfactornumeric_ matcholeskyfactornumeric 6522688b47SSatish Balay #define matilufactorsymbolic_ matilufactorsymbolic 6622688b47SSatish Balay #define maticcfactorsymbolic_ maticcfactorsymbolic 6722688b47SSatish Balay #define maticcfactor_ maticcfactor 6822688b47SSatish Balay #define matfactorinfoinitialize_ matfactorinfoinitialize 69*b22b330cSBarry Smith #define matnullspacesetfunction_ matnullspacesetfunction 70f4e70085SSatish Balay #endif 71f4e70085SSatish Balay 72f4e70085SSatish Balay EXTERN_C_BEGIN 73f4e70085SSatish Balay 74*b22b330cSBarry Smith static PetscErrorCode ournullfunction(MatNullSpace sp,Vec x,void *ctx) 75*b22b330cSBarry Smith { 76*b22b330cSBarry Smith PetscErrorCode ierr = 0; 77*b22b330cSBarry Smith (*(void (PETSC_STDCALL *)(MatNullSpace*,Vec*,void*,PetscErrorCode*))(((PetscObject)sp)->fortran_func_pointers[0]))(&sp,&x,ctx,&ierr);CHKERRQ(ierr); 78*b22b330cSBarry Smith return 0; 79*b22b330cSBarry Smith } 80*b22b330cSBarry Smith 81*b22b330cSBarry Smith void PETSC_STDCALL matnullspacesetfunction_(MatNullSpace *sp, PetscErrorCode (*rem)(MatNullSpace,Vec,void*),void *ctx,PetscErrorCode *ierr) 82*b22b330cSBarry Smith { 83*b22b330cSBarry Smith PetscObjectAllocateFortranPointers(*sp,1); 84*b22b330cSBarry Smith ((PetscObject)*sp)->fortran_func_pointers[0] = (PetscVoidFunction)rem; 85*b22b330cSBarry Smith *ierr = MatNullSpaceSetFunction(*sp,ournullfunction,ctx); 86*b22b330cSBarry Smith } 87*b22b330cSBarry Smith 887c54600cSBarry Smith void PETSC_STDCALL matgetvecs_(Mat *mat,Vec *right,Vec *left, int *ierr ) 897c54600cSBarry Smith { 907c54600cSBarry Smith CHKFORTRANNULLOBJECT(right); 917c54600cSBarry Smith CHKFORTRANNULLOBJECT(left); 927c54600cSBarry Smith *ierr = MatGetVecs(*mat,right,left); 937c54600cSBarry Smith } 947c54600cSBarry Smith 958f7157efSSatish Balay void PETSC_STDCALL matgetrowij_(Mat *B,PetscInt *shift,PetscTruth *sym,PetscTruth *blockcompressed,PetscInt *n,PetscInt *ia,size_t *iia, 968f7157efSSatish Balay PetscInt *ja,size_t *jja,PetscTruth *done,PetscErrorCode *ierr) 97f4e70085SSatish Balay { 98f4e70085SSatish Balay PetscInt *IA,*JA; 998f7157efSSatish Balay *ierr = MatGetRowIJ(*B,*shift,*sym,*blockcompressed,n,&IA,&JA,done);if (*ierr) return; 100f4e70085SSatish Balay *iia = PetscIntAddressToFortran(ia,IA); 101f4e70085SSatish Balay *jja = PetscIntAddressToFortran(ja,JA); 102f4e70085SSatish Balay } 103f4e70085SSatish Balay 1048f7157efSSatish Balay void PETSC_STDCALL matrestorerowij_(Mat *B,PetscInt *shift,PetscTruth *sym,PetscTruth *blockcompressed, PetscInt *n,PetscInt *ia,size_t *iia, 1058f7157efSSatish Balay PetscInt *ja,size_t *jja,PetscTruth *done,PetscErrorCode *ierr) 106f4e70085SSatish Balay { 107f4e70085SSatish Balay PetscInt *IA = PetscIntAddressFromFortran(ia,*iia),*JA = PetscIntAddressFromFortran(ja,*jja); 1088f7157efSSatish Balay *ierr = MatRestoreRowIJ(*B,*shift,*sym,*blockcompressed,n,&IA,&JA,done); 109f4e70085SSatish Balay } 110f4e70085SSatish Balay 111f4e70085SSatish Balay /* 112f4e70085SSatish Balay This is a poor way of storing the column and value pointers 113f4e70085SSatish Balay generated by MatGetRow() to be returned with MatRestoreRow() 114f4e70085SSatish Balay but there is not natural,good place else to store them. Hence 115f4e70085SSatish Balay Fortran programmers can only have one outstanding MatGetRows() 116f4e70085SSatish Balay at a time. 117f4e70085SSatish Balay */ 118f4e70085SSatish Balay static PetscErrorCode matgetrowactive = 0; 119f4e70085SSatish Balay static const PetscInt *my_ocols = 0; 120f4e70085SSatish Balay static const PetscScalar *my_ovals = 0; 121f4e70085SSatish Balay 122f4e70085SSatish Balay void PETSC_STDCALL matgetrow_(Mat *mat,PetscInt *row,PetscInt *ncols,PetscInt *cols,PetscScalar *vals,PetscErrorCode *ierr) 123f4e70085SSatish Balay { 124f4e70085SSatish Balay const PetscInt **oocols = &my_ocols; 125f4e70085SSatish Balay const PetscScalar **oovals = &my_ovals; 126f4e70085SSatish Balay 127f4e70085SSatish Balay if (matgetrowactive) { 128f4e70085SSatish Balay PetscError(__LINE__,"MatGetRow_Fortran",__FILE__,__SDIR__,1,0, 129f4e70085SSatish Balay "Cannot have two MatGetRow() active simultaneously\n\ 130f4e70085SSatish Balay call MatRestoreRow() before calling MatGetRow() a second time"); 131f4e70085SSatish Balay *ierr = 1; 132f4e70085SSatish Balay return; 133f4e70085SSatish Balay } 134f4e70085SSatish Balay 135f4e70085SSatish Balay CHKFORTRANNULLINTEGER(cols); if (!cols) oocols = PETSC_NULL; 136f4e70085SSatish Balay CHKFORTRANNULLSCALAR(vals); if (!vals) oovals = PETSC_NULL; 137f4e70085SSatish Balay 138f4e70085SSatish Balay *ierr = MatGetRow(*mat,*row,ncols,oocols,oovals); 139f4e70085SSatish Balay if (*ierr) return; 140f4e70085SSatish Balay 141f4e70085SSatish Balay if (oocols) { *ierr = PetscMemcpy(cols,my_ocols,(*ncols)*sizeof(PetscInt)); if (*ierr) return;} 142f4e70085SSatish Balay if (oovals) { *ierr = PetscMemcpy(vals,my_ovals,(*ncols)*sizeof(PetscScalar)); if (*ierr) return; } 143f4e70085SSatish Balay matgetrowactive = 1; 144f4e70085SSatish Balay } 145f4e70085SSatish Balay 146f4e70085SSatish Balay void PETSC_STDCALL matrestorerow_(Mat *mat,PetscInt *row,PetscInt *ncols,PetscInt *cols,PetscScalar *vals,PetscErrorCode *ierr) 147f4e70085SSatish Balay { 148f4e70085SSatish Balay const PetscInt **oocols = &my_ocols; 149f4e70085SSatish Balay const PetscScalar **oovals = &my_ovals; 150f4e70085SSatish Balay if (!matgetrowactive) { 151f4e70085SSatish Balay PetscError(__LINE__,"MatRestoreRow_Fortran",__FILE__,__SDIR__,1,0, 152f4e70085SSatish Balay "Must call MatGetRow() first"); 153f4e70085SSatish Balay *ierr = 1; 154f4e70085SSatish Balay return; 155f4e70085SSatish Balay } 156f4e70085SSatish Balay CHKFORTRANNULLINTEGER(cols); if (!cols) oocols = PETSC_NULL; 157f4e70085SSatish Balay CHKFORTRANNULLSCALAR(vals); if (!vals) oovals = PETSC_NULL; 158f4e70085SSatish Balay 159f4e70085SSatish Balay *ierr = MatRestoreRow(*mat,*row,ncols,oocols,oovals); 160f4e70085SSatish Balay matgetrowactive = 0; 161f4e70085SSatish Balay } 162f4e70085SSatish Balay 163f4e70085SSatish Balay void PETSC_STDCALL matview_(Mat *mat,PetscViewer *vin,PetscErrorCode *ierr) 164f4e70085SSatish Balay { 165f4e70085SSatish Balay PetscViewer v; 166f4e70085SSatish Balay PetscPatchDefaultViewers_Fortran(vin,v); 167f4e70085SSatish Balay *ierr = MatView(*mat,v); 168f4e70085SSatish Balay } 169f4e70085SSatish Balay 170f4e70085SSatish Balay void PETSC_STDCALL matgetarray_(Mat *mat,PetscScalar *fa,size_t *ia,PetscErrorCode *ierr) 171f4e70085SSatish Balay { 172f4e70085SSatish Balay PetscScalar *mm; 173f4e70085SSatish Balay PetscInt m,n; 174f4e70085SSatish Balay 175f4e70085SSatish Balay *ierr = MatGetArray(*mat,&mm); if (*ierr) return; 176f4e70085SSatish Balay *ierr = MatGetSize(*mat,&m,&n); if (*ierr) return; 177f91d1997SBarry Smith *ierr = PetscScalarAddressToFortran((PetscObject)*mat,1,fa,mm,m*n,ia); if (*ierr) return; 178f4e70085SSatish Balay } 179f4e70085SSatish Balay 180f4e70085SSatish Balay void PETSC_STDCALL matrestorearray_(Mat *mat,PetscScalar *fa,size_t *ia,PetscErrorCode *ierr) 181f4e70085SSatish Balay { 182f4e70085SSatish Balay PetscScalar *lx; 183f4e70085SSatish Balay PetscInt m,n; 184f4e70085SSatish Balay 185f4e70085SSatish Balay *ierr = MatGetSize(*mat,&m,&n); if (*ierr) return; 186f4e70085SSatish Balay *ierr = PetscScalarAddressFromFortran((PetscObject)*mat,fa,*ia,m*n,&lx);if (*ierr) return; 187f4e70085SSatish Balay *ierr = MatRestoreArray(*mat,&lx);if (*ierr) return; 188f4e70085SSatish Balay } 189f4e70085SSatish Balay 19035bd34faSBarry Smith void PETSC_STDCALL matfactorgetsolverpackage_(Mat *mat,CHAR name PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len)) 19135bd34faSBarry Smith { 19235bd34faSBarry Smith const char *tname; 19335bd34faSBarry Smith 19435bd34faSBarry Smith *ierr = MatFactorGetSolverPackage(*mat,&tname);if (*ierr) return; 19535bd34faSBarry Smith if (name != PETSC_NULL_CHARACTER_Fortran) { 19635bd34faSBarry Smith *ierr = PetscStrncpy(name,tname,len);if (*ierr) return; 19735bd34faSBarry Smith } 19835bd34faSBarry Smith FIXRETURNCHAR(PETSC_TRUE,name,len); 19935bd34faSBarry Smith } 20035bd34faSBarry Smith 2019be81726SHong Zhang void PETSC_STDCALL matgetfactor_(Mat *mat,CHAR outtype PETSC_MIXED_LEN(len),MatFactorType *ftype,Mat *M,PetscErrorCode *ierr PETSC_END_LEN(len)) 2025dffd610SBarry Smith { 2035dffd610SBarry Smith char *t; 2045dffd610SBarry Smith FIXCHAR(outtype,len,t); 2059be81726SHong Zhang *ierr = MatGetFactor(*mat,t,*ftype,M); 2065dffd610SBarry Smith FREECHAR(outtype,t); 2075dffd610SBarry Smith } 2085dffd610SBarry Smith 209f4e70085SSatish Balay void PETSC_STDCALL matconvert_(Mat *mat,CHAR outtype PETSC_MIXED_LEN(len),MatReuse *reuse,Mat *M,PetscErrorCode *ierr PETSC_END_LEN(len)) 210f4e70085SSatish Balay { 211f4e70085SSatish Balay char *t; 212f4e70085SSatish Balay FIXCHAR(outtype,len,t); 213f4e70085SSatish Balay *ierr = MatConvert(*mat,t,*reuse,M); 214f4e70085SSatish Balay FREECHAR(outtype,t); 215f4e70085SSatish Balay } 216f4e70085SSatish Balay 217f4e70085SSatish Balay /* 218f4e70085SSatish Balay MatGetSubmatrices() is slightly different from C since the 219f4e70085SSatish Balay Fortran provides the array to hold the submatrix objects,while in C that 220f4e70085SSatish Balay array is allocated by the MatGetSubmatrices() 221f4e70085SSatish Balay */ 222f4e70085SSatish Balay void PETSC_STDCALL matgetsubmatrices_(Mat *mat,PetscInt *n,IS *isrow,IS *iscol,MatReuse *scall,Mat *smat,PetscErrorCode *ierr) 223f4e70085SSatish Balay { 224f4e70085SSatish Balay Mat *lsmat; 225f4e70085SSatish Balay PetscInt i; 226f4e70085SSatish Balay 227f4e70085SSatish Balay if (*scall == MAT_INITIAL_MATRIX) { 228f4e70085SSatish Balay *ierr = MatGetSubMatrices(*mat,*n,isrow,iscol,*scall,&lsmat); 229f4e70085SSatish Balay for (i=0; i<*n; i++) { 230f4e70085SSatish Balay smat[i] = lsmat[i]; 231f4e70085SSatish Balay } 232f4e70085SSatish Balay *ierr = PetscFree(lsmat); 233f4e70085SSatish Balay } else { 234f4e70085SSatish Balay *ierr = MatGetSubMatrices(*mat,*n,isrow,iscol,*scall,&smat); 235f4e70085SSatish Balay } 236f4e70085SSatish Balay } 237f4e70085SSatish Balay 2387d6bfa3bSBarry Smith /* 2397d6bfa3bSBarry Smith MatDestroyMatrices() is slightly different from C since the 2407d6bfa3bSBarry Smith Fortran provides the array to hold the submatrix objects,while in C that 2417d6bfa3bSBarry Smith array is allocated by the MatGetSubmatrices() 2427d6bfa3bSBarry Smith */ 2437d6bfa3bSBarry Smith void PETSC_STDCALL matdestroymatrices_(Mat *mat,PetscInt *n,Mat *smat,PetscErrorCode *ierr) 2447d6bfa3bSBarry Smith { 2457d6bfa3bSBarry Smith PetscInt i; 2467d6bfa3bSBarry Smith 2477d6bfa3bSBarry Smith for (i=0; i<*n; i++) { 2487d6bfa3bSBarry Smith *ierr = MatDestroy(smat[i]);if (*ierr) return; 2497d6bfa3bSBarry Smith } 2507d6bfa3bSBarry Smith } 2517d6bfa3bSBarry Smith 252f4e70085SSatish Balay void PETSC_STDCALL matzerorows_(Mat *mat,PetscInt *numRows,PetscInt *rows,PetscScalar *diag,PetscErrorCode *ierr) 253f4e70085SSatish Balay { 254f4e70085SSatish Balay *ierr = MatZeroRows(*mat,*numRows,rows,*diag); 255f4e70085SSatish Balay } 256f4e70085SSatish Balay 257f4e70085SSatish Balay void PETSC_STDCALL matzerorowsis_(Mat *mat,IS *is,PetscScalar *diag,PetscErrorCode *ierr) 258f4e70085SSatish Balay { 259f4e70085SSatish Balay *ierr = MatZeroRowsIS(*mat,*is,*diag); 260f4e70085SSatish Balay } 261f4e70085SSatish Balay 262f4e70085SSatish Balay void PETSC_STDCALL matzerorowslocal_(Mat *mat,PetscInt *numRows,PetscInt *rows,PetscScalar *diag,PetscErrorCode *ierr) 263f4e70085SSatish Balay { 264f4e70085SSatish Balay *ierr = MatZeroRowsLocal(*mat,*numRows,rows,*diag); 265f4e70085SSatish Balay } 266f4e70085SSatish Balay 267f4e70085SSatish Balay void PETSC_STDCALL matzerorowslocalis_(Mat *mat,IS *is,PetscScalar *diag,PetscErrorCode *ierr) 268f4e70085SSatish Balay { 269f4e70085SSatish Balay *ierr = MatZeroRowsLocalIS(*mat,*is,*diag); 270f4e70085SSatish Balay } 271f4e70085SSatish Balay 2721eea217eSSatish Balay 2731eea217eSSatish Balay void PETSC_STDCALL matsetoptionsprefix_(Mat *mat,CHAR prefix PETSC_MIXED_LEN(len), 2741eea217eSSatish Balay PetscErrorCode *ierr PETSC_END_LEN(len)) 2751eea217eSSatish Balay { 2761eea217eSSatish Balay char *t; 2771eea217eSSatish Balay 2781eea217eSSatish Balay FIXCHAR(prefix,len,t); 2791eea217eSSatish Balay *ierr = MatSetOptionsPrefix(*mat,t); 2801eea217eSSatish Balay FREECHAR(prefix,t); 2811eea217eSSatish Balay } 2821eea217eSSatish Balay 283812c3f48SMatthew Knepley void PETSC_STDCALL matnullspaceremove_(MatNullSpace *sp,Vec *vec,Vec *out,PetscErrorCode *ierr) 284812c3f48SMatthew Knepley { 285812c3f48SMatthew Knepley CHKFORTRANNULLOBJECT(out); 286812c3f48SMatthew Knepley *ierr = MatNullSpaceRemove(*sp,*vec,out); 287812c3f48SMatthew Knepley } 2881eea217eSSatish Balay 2895ba43861SSatish Balay void PETSC_STDCALL matgetinfo_(Mat *mat,MatInfoType *flag,MatInfo *info, int *__ierr ) 2905ba43861SSatish Balay { 2915ba43861SSatish Balay *__ierr = MatGetInfo(*mat,*flag,info); 2925ba43861SSatish Balay } 2935ba43861SSatish Balay 29422688b47SSatish Balay void PETSC_STDCALL matlufactor_(Mat *mat,IS *row,IS *col, MatFactorInfo *info, int *__ierr ) 29522688b47SSatish Balay { 29622688b47SSatish Balay *__ierr = MatLUFactor(*mat,*row,*col,info); 29722688b47SSatish Balay } 29822688b47SSatish Balay 29922688b47SSatish Balay void PETSC_STDCALL matilufactor_(Mat *mat,IS *row,IS *col, MatFactorInfo *info, int *__ierr ) 30022688b47SSatish Balay { 30122688b47SSatish Balay *__ierr = MatILUFactor(*mat,*row,*col,info); 30222688b47SSatish Balay } 30322688b47SSatish Balay 30422688b47SSatish Balay void PETSC_STDCALL matlufactorsymbolic_(Mat *fact,Mat *mat,IS *row,IS *col, MatFactorInfo *info, int *__ierr ) 30522688b47SSatish Balay { 30622688b47SSatish Balay *__ierr = MatLUFactorSymbolic(*fact,*mat,*row,*col,info); 30722688b47SSatish Balay } 30822688b47SSatish Balay 30922688b47SSatish Balay void PETSC_STDCALL matlufactornumeric_(Mat *fact,Mat *mat, MatFactorInfo *info, int *__ierr ) 31022688b47SSatish Balay { 31122688b47SSatish Balay *__ierr = MatLUFactorNumeric(*fact,*mat,info); 31222688b47SSatish Balay } 31322688b47SSatish Balay 31422688b47SSatish Balay void PETSC_STDCALL matcholeskyfactor_(Mat *mat,IS *perm, MatFactorInfo *info, int *__ierr ) 31522688b47SSatish Balay { 31622688b47SSatish Balay *__ierr = MatCholeskyFactor(*mat,*perm,info); 31722688b47SSatish Balay } 31822688b47SSatish Balay 31922688b47SSatish Balay void PETSC_STDCALL matcholeskyfactorsymbolic_(Mat *fact,Mat *mat,IS *perm, MatFactorInfo *info, int *__ierr ) 32022688b47SSatish Balay { 32122688b47SSatish Balay *__ierr = MatCholeskyFactorSymbolic(*fact,*mat,*perm,info); 32222688b47SSatish Balay } 32322688b47SSatish Balay 32422688b47SSatish Balay void PETSC_STDCALL matcholeskyfactornumeric_(Mat *fact,Mat *mat, MatFactorInfo *info, int *__ierr ) 32522688b47SSatish Balay { 32622688b47SSatish Balay *__ierr = MatCholeskyFactorNumeric(*fact,*mat,info); 32722688b47SSatish Balay } 32822688b47SSatish Balay 32922688b47SSatish Balay void PETSC_STDCALL matilufactorsymbolic_(Mat *fact,Mat *mat,IS *row,IS *col, MatFactorInfo *info, int *__ierr ) 33022688b47SSatish Balay { 33122688b47SSatish Balay *__ierr = MatILUFactorSymbolic(*fact,*mat,*row,*col,info); 33222688b47SSatish Balay } 33322688b47SSatish Balay 33422688b47SSatish Balay void PETSC_STDCALL maticcfactorsymbolic_(Mat *fact,Mat *mat,IS *perm, MatFactorInfo *info, int *__ierr ) 33522688b47SSatish Balay { 33622688b47SSatish Balay *__ierr = MatICCFactorSymbolic(*fact,*mat,*perm,info); 33722688b47SSatish Balay } 33822688b47SSatish Balay 33922688b47SSatish Balay void PETSC_STDCALL maticcfactor_(Mat *mat,IS *row, MatFactorInfo* info, int *__ierr ) 34022688b47SSatish Balay { 34122688b47SSatish Balay *__ierr = MatICCFactor(*mat,*row,info); 34222688b47SSatish Balay } 34322688b47SSatish Balay 34422688b47SSatish Balay void PETSC_STDCALL matfactorinfoinitialize_(MatFactorInfo *info, int *__ierr ) 34522688b47SSatish Balay { 34622688b47SSatish Balay *__ierr = MatFactorInfoInitialize(info); 34722688b47SSatish Balay } 34822688b47SSatish Balay 349f4e70085SSatish Balay EXTERN_C_END 350