PetscErrorCode PCDestroy_ML(PC pc) { PetscErrorCode ierr; PC_MG *mg = (PC_MG*)pc->data; PC_ML *pc_ml= (PC_ML*)mg->innerctx; PetscFunctionBegin; ierr = PCReset_ML(pc);CHKERRQ(ierr); ierr = PetscFree(pc_ml);CHKERRQ(ierr); ierr = PCDestroy_MG(pc);CHKERRQ(ierr); PetscFunctionReturn(0); }
PetscErrorCode PCDestroy_Exotic(PC pc) { PetscErrorCode ierr; PC_MG *mg = (PC_MG*)pc->data; PC_Exotic *ctx = (PC_Exotic*) mg->innerctx; PetscFunctionBegin; ierr = MatDestroy(&ctx->P); CHKERRQ(ierr); ierr = KSPDestroy(&ctx->ksp); CHKERRQ(ierr); ierr = PetscFree(ctx); CHKERRQ(ierr); ierr = PCDestroy_MG(pc); CHKERRQ(ierr); PetscFunctionReturn(0); }