Actual source code: bddcprivate.h
petsc-3.10.5 2019-03-28
Report Typos and Errors

      1: /* prototypes of all BDDC private functions */

      5:  #include <../src/ksp/pc/impls/bddc/bddcstructs.h>

      7: /* main functions */
      8: PetscErrorCode PCBDDCAnalyzeInterface(PC);
      9: PetscErrorCode PCBDDCConstraintsSetUp(PC);

     11: /* reset functions */
     12: PetscErrorCode PCBDDCResetTopography(PC);
     13: PetscErrorCode PCBDDCResetSolvers(PC);
     14: PetscErrorCode PCBDDCResetCustomization(PC);

     16: /* graph */
     17: PetscErrorCode PCBDDCGraphCreate(PCBDDCGraph*);
     18: PetscErrorCode PCBDDCGraphDestroy(PCBDDCGraph*);
     19: PetscErrorCode PCBDDCGraphInit(PCBDDCGraph,ISLocalToGlobalMapping,PetscInt,PetscInt);
     20: PetscErrorCode PCBDDCGraphReset(PCBDDCGraph);
     21: PetscErrorCode PCBDDCGraphResetCSR(PCBDDCGraph);
     22: PetscErrorCode PCBDDCGraphResetCoords(PCBDDCGraph);
     23: PetscErrorCode PCBDDCGraphSetUp(PCBDDCGraph,PetscInt,IS,IS,PetscInt,IS[],IS);
     24: PetscErrorCode PCBDDCGraphComputeConnectedComponents(PCBDDCGraph);
     25: PetscErrorCode PCBDDCGraphComputeConnectedComponentsLocal(PCBDDCGraph);
     26: PetscErrorCode PCBDDCGraphASCIIView(PCBDDCGraph,PetscInt,PetscViewer);
     27: PetscErrorCode PCBDDCGraphGetCandidatesIS(PCBDDCGraph,PetscInt*,IS*[],PetscInt*,IS*[],IS*);
     28: PetscErrorCode PCBDDCGraphRestoreCandidatesIS(PCBDDCGraph,PetscInt*,IS*[],PetscInt*,IS*[],IS*);
     29: PetscErrorCode PCBDDCGraphGetDirichletDofs(PCBDDCGraph,IS*);
     30: PetscErrorCode PCBDDCGraphGetDirichletDofsB(PCBDDCGraph,IS*);

     32: /* interface for scaling operator */
     33: PetscErrorCode PCBDDCScalingSetUp(PC);
     34: PetscErrorCode PCBDDCScalingDestroy(PC);
     35: PetscErrorCode PCBDDCScalingRestriction(PC,Vec,Vec);
     36: PetscErrorCode PCBDDCScalingExtension(PC,Vec,Vec);

     38: /* nullspace correction */
     39: PetscErrorCode PCBDDCNullSpaceAssembleCorrection(PC,PetscBool,PetscBool);
     40: PetscErrorCode PCBDDCNullSpaceCheckCorrection(PC,PetscBool);

     42: /* utils */
     43: PetscErrorCode PCBDDCComputeLocalMatrix(PC,Mat);
     44: PetscErrorCode PCBDDCSetUpLocalWorkVectors(PC);
     45: PetscErrorCode PCBDDCSetUpSolvers(PC);
     46: PetscErrorCode PCBDDCSetUpLocalScatters(PC);
     47: PetscErrorCode PCBDDCSetUpLocalSolvers(PC,PetscBool,PetscBool);
     48: PetscErrorCode PCBDDCSetUpCorrection(PC,PetscScalar**);
     49: PetscErrorCode PCBDDCSetUpCoarseSolver(PC,PetscScalar*);
     50: PetscErrorCode PCBDDCComputePrimalNumbering(PC,PetscInt*,PetscInt**);
     51: PetscErrorCode PCBDDCScatterCoarseDataBegin(PC,InsertMode,ScatterMode);
     52: PetscErrorCode PCBDDCScatterCoarseDataEnd(PC,InsertMode,ScatterMode);
     53: PetscErrorCode PCBDDCApplyInterfacePreconditioner(PC,PetscBool);
     54: PetscErrorCode PCBDDCOrthonormalizeVecs(PetscInt,Vec[]);
     55: PetscErrorCode PCBDDCSetUseExactDirichlet(PC,PetscBool);
     56: PetscErrorCode PCBDDCSetLevel(PC,PetscInt);
     57: PetscErrorCode PCBDDCGlobalToLocal(VecScatter,Vec,Vec,IS,IS*);
     58: PetscErrorCode PCBDDCAdaptiveSelection(PC);
     59: PetscErrorCode PCBDDCConsistencyCheckIS(PC,MPI_Op,IS*);
     60: PetscErrorCode PCBDDCComputeLocalTopologyInfo(PC);
     61: PetscErrorCode MatCreateSubMatrixUnsorted(Mat,IS,IS,Mat*);
     62: PetscErrorCode PCBDDCDetectDisconnectedComponents(PC,PetscBool,PetscInt*,IS*[],IS*);
     63: PetscErrorCode MatSeqAIJCompress(Mat,Mat*);
     64: PetscErrorCode PCBDDCReuseSolversBenignAdapt(PCBDDCReuseSolvers,Vec,Vec,PetscBool,PetscBool);
     65: PetscErrorCode PCBDDCComputeNoNetFlux(Mat,Mat,PetscBool,IS,PCBDDCGraph,MatNullSpace*);
     66: PetscErrorCode PCBDDCNullSpaceCreate(MPI_Comm,PetscBool,PetscInt,Vec[],MatNullSpace*);
     67: PetscErrorCode PCBDDCNedelecSupport(PC);
     68: PetscErrorCode PCBDDCAddPrimalVerticesLocalIS(PC,IS);

     70: /* benign subspace trick */
     71: PetscErrorCode PCBDDCBenignPopOrPushB0(PC,PetscBool);
     72: PetscErrorCode PCBDDCBenignGetOrSetP0(PC,Vec,PetscBool);
     73: PetscErrorCode PCBDDCBenignDetectSaddlePoint(PC,IS*);
     74: PetscErrorCode PCBDDCBenignCheck(PC,IS);
     75: PetscErrorCode PCBDDCBenignShellMat(PC,PetscBool);
     76: PetscErrorCode PCBDDCBenignRemoveInterior(PC,Vec,Vec);

     78: /* feti-dp */
     79: PetscErrorCode PCBDDCCreateFETIDPMatContext(PC,FETIDPMat_ctx*);
     80: PetscErrorCode PCBDDCSetupFETIDPMatContext(FETIDPMat_ctx);
     81: PetscErrorCode PCBDDCCreateFETIDPPCContext(PC,FETIDPPC_ctx*);
     82: PetscErrorCode PCBDDCSetupFETIDPPCContext(Mat,FETIDPPC_ctx);
     83: PetscErrorCode FETIDPPCApply(PC,Vec,Vec);
     84: PetscErrorCode FETIDPPCApplyTranspose(PC,Vec,Vec);
     85: PetscErrorCode FETIDPPCView(PC,PetscViewer);
     86: PetscErrorCode PCBDDCDestroyFETIDPPC(PC);
     87: PetscErrorCode FETIDPMatMult(Mat,Vec,Vec);
     88: PetscErrorCode FETIDPMatMultTranspose(Mat,Vec,Vec);

     90: PetscErrorCode PCBDDCDestroyFETIDPMat(Mat);

     92: /* interface to SubSchurs */
     93: PetscErrorCode PCBDDCInitSubSchurs(PC);
     94: PetscErrorCode PCBDDCSetUpSubSchurs(PC);

     96: /* sub schurs */
     97: PetscErrorCode PCBDDCSubSchursCreate(PCBDDCSubSchurs*);
     98: PetscErrorCode PCBDDCSubSchursInit(PCBDDCSubSchurs,const char*,IS,IS,PCBDDCGraph,ISLocalToGlobalMapping,PetscBool);
     99: PetscErrorCode PCBDDCSubSchursReset(PCBDDCSubSchurs);
    100: PetscErrorCode PCBDDCSubSchursDestroy(PCBDDCSubSchurs*);
    101: PetscErrorCode PCBDDCSubSchursSetUp(PCBDDCSubSchurs,Mat,Mat,PetscBool,PetscInt[],PetscInt[],PetscInt,Vec,PetscBool,PetscBool,PetscBool,PetscInt,PetscInt[],IS[],Mat,IS);

    103: #endif