void InitializeDMMGSolver(State *BHD) { PC pc; DMMG *dmmg; int l; DMMGCreate(PETSC_COMM_WORLD,2,PETSC_NULL,&dmmg); DMMGSetDM(dmmg,(DM)BHD->da_dmmg); DADestroy(BHD->da_dmmg); for (l = 0; l < DMMGGetLevels(dmmg); l++) { DMMGSetUser(dmmg,l,(void*) BHD); } DMMGSetKSP(dmmg,ComputeRHSDMMG,InitializeLaplaceMatrix); BHD->dmmg = dmmg; }
void PETSC_STDCALL dmmggetlevels_(DMMG **dmmg,PetscInt *x,PetscErrorCode *ierr) { *ierr = 0; *x = DMMGGetLevels(*dmmg); }