/[escript]/trunk/paso/src/Preconditioner.h
ViewVC logotype

Diff of /trunk/paso/src/Preconditioner.h

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 3440 by gross, Fri Jan 14 00:04:53 2011 UTC revision 3441 by gross, Fri Jan 14 01:09:09 2011 UTC
# Line 51  void Paso_Preconditioner_LocalSmoother_S Line 51  void Paso_Preconditioner_LocalSmoother_S
51  void Paso_Preconditioner_LocalSmoother_Sweep_colored(Paso_SparseMatrix* A, Paso_Preconditioner_LocalSmoother * gs, double * x);  void Paso_Preconditioner_LocalSmoother_Sweep_colored(Paso_SparseMatrix* A, Paso_Preconditioner_LocalSmoother * gs, double * x);
52    
53    
54  /* AMG preconditioner */  /* Local preconditioner */
55    struct Paso_Preconditioner_AMG {
56       dim_t level;
57       dim_t n;
58       dim_t n_F;
59       dim_t n_block;
60       Paso_SystemMatrix * A_C;  /* coarse level matrix */
61       Paso_SystemMatrix * P;   /* prolongation n x n_C*/
62       Paso_SystemMatrix * R;   /* restriction  n_C x n */
63      
64       Paso_Preconditioner_Smoother* Smoother;
65       dim_t post_sweeps;
66       dim_t pre_sweeps;
67       index_t reordering;  /* applied reordering in direct solver */
68       dim_t refinements;  /* number of refinements in direct solver (typically =0) */
69       double* r;         /* buffer for residual */
70       double* x_C;       /* solution of coarse level system */
71       double* b_C;       /* right hand side of coarse level system */
72       struct Paso_Preconditioner_AMG * AMG_C;
73    };
74    typedef struct Paso_Preconditioner_AMG Paso_Preconditioner_AMG;
75    
76    void Paso_Preconditioner_AMG_free(Paso_Preconditioner_AMG * in);
77    Paso_Preconditioner_AMG* Paso_Preconditioner_AMG_alloc(Paso_SystemMatrix * A_p,dim_t level,Paso_Options* options);
78    void Paso_Preconditioner_AMG_solve(Paso_SystemMatrix* A, Paso_Preconditioner_AMG * amg, double * x, double * b);
79    
80    /* Local AMG preconditioner */
81  struct Paso_Preconditioner_LocalAMG {  struct Paso_Preconditioner_LocalAMG {
82     dim_t level;     dim_t level;
83     dim_t n;     dim_t n;
# Line 76  typedef struct Paso_Preconditioner_Local Line 102  typedef struct Paso_Preconditioner_Local
102  void Paso_Preconditioner_LocalAMG_free(Paso_Preconditioner_LocalAMG * in);  void Paso_Preconditioner_LocalAMG_free(Paso_Preconditioner_LocalAMG * in);
103  Paso_Preconditioner_LocalAMG* Paso_Preconditioner_LocalAMG_alloc(Paso_SparseMatrix * A_p,dim_t level,Paso_Options* options);  Paso_Preconditioner_LocalAMG* Paso_Preconditioner_LocalAMG_alloc(Paso_SparseMatrix * A_p,dim_t level,Paso_Options* options);
104  void Paso_Preconditioner_LocalAMG_solve(Paso_SparseMatrix* A, Paso_Preconditioner_LocalAMG * amg, double * x, double * b);  void Paso_Preconditioner_LocalAMG_solve(Paso_SparseMatrix* A, Paso_Preconditioner_LocalAMG * amg, double * x, double * b);
105  void Paso_Preconditioner_AMG_RungeStuebenSearch(const dim_t n, const index_t* offset, const dim_t* degree, const index_t* S, index_t*split_marker, const bool_t usePanel);  
106  void Paso_Preconditioner_AMG_setStrongConnections_Block(Paso_SparseMatrix* A, dim_t *degree, index_t *S, const double theta, const double tau);  void Paso_Preconditioner_LocalAMG_RungeStuebenSearch(const dim_t n, const index_t* offset, const dim_t* degree, const index_t* S, index_t*split_marker, const bool_t usePanel);
107  void Paso_Preconditioner_AMG_setStrongConnections(Paso_SparseMatrix* A, dim_t *degree, index_t *S, const double theta, const double tau);  void Paso_Preconditioner_LocalAMG_setStrongConnections_Block(Paso_SparseMatrix* A, dim_t *degree, index_t *S, const double theta, const double tau);
108  Paso_SparseMatrix* Paso_Preconditioner_AMG_getProlongation(Paso_SparseMatrix* A_p, const index_t* offset_S, const dim_t* degree_S, const index_t* S, const dim_t n_C, const index_t* counter_C, const index_t interpolation_method);  void Paso_Preconditioner_LocalAMG_setStrongConnections(Paso_SparseMatrix* A, dim_t *degree, index_t *S, const double theta, const double tau);
109  void Paso_Preconditioner_AMG_setDirectProlongation_Block(Paso_SparseMatrix* P_p, const Paso_SparseMatrix* A_p, const index_t *counter_C);  Paso_SparseMatrix* Paso_Preconditioner_LocalAMG_getProlongation(Paso_SparseMatrix* A_p, const index_t* offset_S, const dim_t* degree_S, const index_t* S, const dim_t n_C, const index_t* counter_C, const index_t interpolation_method);
110  void Paso_Preconditioner_AMG_setDirectProlongation(Paso_SparseMatrix* P_p, const Paso_SparseMatrix* A_p, const index_t *counter_C);  void Paso_Preconditioner_LocalAMG_setDirectProlongation_Block(Paso_SparseMatrix* P_p, const Paso_SparseMatrix* A_p, const index_t *counter_C);
111  void Paso_Preconditioner_AMG_setClassicProlongation(Paso_SparseMatrix* P_p, Paso_SparseMatrix* A_p, const index_t* offset_S, const dim_t* degree_S, const index_t* S, const index_t *counter_C);  void Paso_Preconditioner_LocalAMG_setDirectProlongation(Paso_SparseMatrix* P_p, const Paso_SparseMatrix* A_p, const index_t *counter_C);
112  void Paso_Preconditioner_AMG_setClassicProlongation_Block(Paso_SparseMatrix* P_p, Paso_SparseMatrix* A_p, const index_t* offset_S, const dim_t* degree_S, const index_t* S, const index_t *counter_C);  void Paso_Preconditioner_LocalAMG_setClassicProlongation(Paso_SparseMatrix* P_p, Paso_SparseMatrix* A_p, const index_t* offset_S, const dim_t* degree_S, const index_t* S, const index_t *counter_C);
113    void Paso_Preconditioner_LocalAMG_setClassicProlongation_Block(Paso_SparseMatrix* P_p, Paso_SparseMatrix* A_p, const index_t* offset_S, const dim_t* degree_S, const index_t* S, const index_t *counter_C);
114  index_t Paso_Preconditioner_LocalAMG_getMaxLevel(const Paso_Preconditioner_LocalAMG * in);  index_t Paso_Preconditioner_LocalAMG_getMaxLevel(const Paso_Preconditioner_LocalAMG * in);
115  double Paso_Preconditioner_LocalAMG_getCoarseLevelSparsity(const Paso_Preconditioner_LocalAMG * in);  double Paso_Preconditioner_LocalAMG_getCoarseLevelSparsity(const Paso_Preconditioner_LocalAMG * in);
116  dim_t Paso_Preconditioner_LocalAMG_getNumCoarseUnknwons(const Paso_Preconditioner_LocalAMG * in);  dim_t Paso_Preconditioner_LocalAMG_getNumCoarseUnknwons(const Paso_Preconditioner_LocalAMG * in);
117  void Paso_Preconditioner_AMG_enforceFFConnectivity(const dim_t n, const index_t* offset_S, const dim_t* degree_S, const index_t* S, index_t*split_marker);  void Paso_Preconditioner_LocalAMG_enforceFFConnectivity(const dim_t n, const index_t* offset_S, const dim_t* degree_S, const index_t* S, index_t*split_marker);
118    
119    
120    
121  /*===============================================*/  /*===============================================*/
122  /* ILU preconditioner */  /* ILU preconditioner */

Legend:
Removed from v.3440  
changed lines
  Added in v.3441

  ViewVC Help
Powered by ViewVC 1.1.26