Actual source code: nn.h
petsc-3.14.6 2021-03-30
5: #include <../src/ksp/pc/impls/is/pcis.h>
7: /*
8: Private context (data structure) for the NN preconditioner.
9: */
10: typedef struct {
11: /* First MUST come the folowing line, for the stuff that is common to FETI and Neumann-Neumann. */
12: PC_IS pcis;
14: /* Then, everything else. */
15: Mat coarse_mat;
16: Vec coarse_x;
17: Vec coarse_b;
18: KSP ksp_coarse;
19: PetscScalar **DZ_IN; /* proc[k].DZ_IN[i][] = bit of vector to be received from processor i by proc. k */
20: PetscScalar factor_coarse_rhs;
21: } PC_NN;
23: PETSC_EXTERN PetscErrorCode PCNNCreateCoarseMatrix (PC);
24: PETSC_EXTERN PetscErrorCode PCNNApplySchurToChunk(PC pc,PetscInt n,PetscInt *idx,PetscScalar *chunk,PetscScalar * array_N,Vec vec1_B,Vec vec2_B,Vec vec1_D,Vec vec2_D);
25: PETSC_EXTERN PetscErrorCode PCNNApplyInterfacePreconditioner(PC pc,Vec r,Vec z,PetscScalar *work_N,Vec vec1_B,Vec vec2_B,Vec vec3_B,Vec vec1_D,Vec vec2_D,Vec vec1_N,Vec vec2_N);
26: PETSC_EXTERN PetscErrorCode PCNNBalancing(PC pc,Vec r,Vec u,Vec z,Vec vec1_B,Vec vec2_B,Vec vec3_B,Vec vec1_D,Vec vec2_D,PetscScalar *work_N);
28: #endif /* __pcnn_h */