xref: /petsc/src/ksp/pc/impls/gamg/gamg.h (revision 511c7730c31e50e28ad0b6cd5ea706dbebda73c8)
1 #if !defined(__GAMG_IMPL)
2 #define __GAMG_IMPL
3 #include <private/pcimpl.h>   /*I "petscpc.h" I*/
4 #include <../src/ksp/pc/impls/mg/mgimpl.h>                    /*I "petscpcmg.h" I*/
5 #include <../src/mat/impls/aij/seq/aij.h>
6 #include <../src/mat/impls/aij/mpi/mpiaij.h>
7 #include <assert.h>
8 
9 /* Private context for the GAMG preconditioner */
10 typedef struct gamg_TAG {
11   PetscInt       m_dim;
12   PetscInt       m_Nlevels;
13   PetscInt       m_data_sz;
14   PetscInt       m_data_rows;
15   PetscInt       m_data_cols;
16   PetscInt       m_count;
17   PetscInt       m_method; /* 0: geomg; 1: plain agg 'pa'; 2: smoothed agg 'sa' */
18   PetscReal     *m_data; /* blocked vector of vertex data on fine grid (coordinates) */
19   char           m_type[64];
20   PetscBool      m_repart;
21   PetscInt       m_min_eq_proc;
22   PetscInt       m_coarse_eq_limit;
23   PetscReal      m_threshold;
24   PetscBool      m_verbose;
25 } PC_GAMG;
26 
27 extern PetscErrorCode PCSetFromOptions_MG(PC);
28 extern PetscErrorCode PCReset_MG(PC);
29 extern PetscErrorCode createProlongation( const Mat, const PetscReal [], const PetscInt,
30                                           PetscInt*, Mat *, PetscReal **, PetscBool *, PetscReal *, const PC_GAMG* );
31 #if defined PETSC_USE_LOG
32 enum tag {SET1,SET2,GRAPH,GRAPH_MAT,GRAPH_FILTER,GRAPH_SQR,SET4,SET5,SET6,FIND_V,SET7,SET8,SET9,SET10,SET11,SET12,SET13,SET14,SET15,SET16,NUM_SET};
33 extern PetscLogEvent gamg_setup_events[NUM_SET];
34 #endif
35 
36 #define PETSC_GAMG_SMOOTHER PCJACOBI
37 
38 #endif
39 
40