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

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

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

revision 430 by gross, Wed Jan 11 06:40:50 2006 UTC revision 584 by gross, Thu Mar 9 23:03:38 2006 UTC
# Line 4  Line 4 
4  #define INC_SOLVER  #define INC_SOLVER
5    
6  #include "SystemMatrix.h"  #include "SystemMatrix.h"
7    #include "performance.h"
8    
9  #define FINLEY_SOLVER_TRACE  #define FINLEY_SOLVER_TRACE
10  /* error codes used in the solver */  /* error codes used in the solver */
# Line 19  static double TOLERANCE_FOR_SCALARS=0.; Line 20  static double TOLERANCE_FOR_SCALARS=0.;
20    
21  /* ILU preconditioner */  /* ILU preconditioner */
22  struct Paso_Solver_ILU {  struct Paso_Solver_ILU {
   dim_t n;  
23    dim_t n_block;    dim_t n_block;
24    dim_t n_F;    dim_t n;
25    dim_t n_C;    index_t num_colors;
26    double* inv_A_FF;    index_t* colorOf;
27    index_t* A_FF_pivot;    index_t* main_iptr;
28    Paso_SystemMatrix * A_FC;    double* factors;
29    Paso_SystemMatrix * A_CF;    Paso_SystemMatrixPattern* pattern;
   index_t* rows_in_F;  
   index_t* rows_in_C;  
   index_t* mask_F;  
   index_t* mask_C;  
   double* x_F;  
   double* b_F;  
   double* x_C;  
   double* b_C;  
   struct Paso_Solver_ILU * ILU_of_Schur;  
30  };  };
31  typedef struct Paso_Solver_ILU Paso_Solver_ILU;  typedef struct Paso_Solver_ILU Paso_Solver_ILU;
32    
# Line 83  typedef struct Paso_Solver_Preconditione Line 74  typedef struct Paso_Solver_Preconditione
74    Paso_Solver_RILU* rilu;    Paso_Solver_RILU* rilu;
75  } Paso_Solver_Preconditioner;  } Paso_Solver_Preconditioner;
76    
77  void Paso_Solver(Paso_SystemMatrix*,double*,double*,Paso_Options*);  void Paso_Solver(Paso_SystemMatrix*,double*,double*,Paso_Options*,Paso_Performance* pp);
78  void Paso_Solver_free(Paso_SystemMatrix*);  void Paso_Solver_free(Paso_SystemMatrix*);
79  err_t Paso_Solver_BiCGStab( Paso_SystemMatrix * A, double* B, double * X, dim_t *iter, double * tolerance);  err_t Paso_Solver_BiCGStab( Paso_SystemMatrix * A, double* B, double * X, dim_t *iter, double * tolerance,Paso_Performance* pp);
80  err_t Paso_Solver_PCG( Paso_SystemMatrix * A, double* B, double * X, dim_t *iter, double * tolerance);  err_t Paso_Solver_PCG( Paso_SystemMatrix * A, double* B, double * X, dim_t *iter, double * tolerance,Paso_Performance* pp);
81  err_t Paso_Solver_GMRES(Paso_SystemMatrix * A, double * r, double * x, dim_t *num_iter, double * tolerance,dim_t length_of_recursion,dim_t restart);  err_t Paso_Solver_GMRES(Paso_SystemMatrix * A, double * r, double * x, dim_t *num_iter, double * tolerance,dim_t length_of_recursion,dim_t restart,Paso_Performance* pp);
82  void Paso_Preconditioner_free(Paso_Solver_Preconditioner*);  void Paso_Preconditioner_free(Paso_Solver_Preconditioner*);
83  void Paso_Solver_setPreconditioner(Paso_SystemMatrix* A,Paso_Options* options);  void Paso_Solver_setPreconditioner(Paso_SystemMatrix* A,Paso_Options* options);
84  void Paso_Solver_solvePreconditioner(Paso_SystemMatrix* A,double*,double*);  void Paso_Solver_solvePreconditioner(Paso_SystemMatrix* A,double*,double*);
85  void Paso_Solver_applyBlockDiagonalMatrix(dim_t n_block,dim_t n,double* D,index_t* pivot,double* x,double* b);  void Paso_Solver_applyBlockDiagonalMatrix(dim_t n_block,dim_t n,double* D,index_t* pivot,double* x,double* b);
86    
87  void Paso_Solver_ILU_free(Paso_Solver_ILU * in);  void Paso_Solver_ILU_free(Paso_Solver_ILU * in);
88  Paso_Solver_ILU* Paso_Solver_getILU(Paso_SystemMatrix * A_p,bool_t verbose);  Paso_Solver_ILU* Paso_Solver_getILU(Paso_SystemMatrix * A_p,bool_t verbose);
89  void Paso_Solver_solveILU(Paso_Solver_ILU * ilu, double * x, double * b);  void Paso_Solver_solveILU(Paso_Solver_ILU * ilu, double * x, double * b);
90  void Paso_Solver_updateIncompleteSchurComplement(Paso_SystemMatrix* A_CC,Paso_SystemMatrix *A_CF,double* invA_FF,index_t* A_FF_pivot,Paso_SystemMatrix *A_FC);  
91    void Paso_Solver_RILU_free(Paso_Solver_RILU * in);
92    Paso_Solver_RILU* Paso_Solver_getRILU(Paso_SystemMatrix * A_p,bool_t verbose);
93    void Paso_Solver_solveRILU(Paso_Solver_RILU * rilu, double * x, double * b);
94    
95    void Paso_Solver_updateIncompleteSchurComplement(Paso_SystemMatrix* A_CC,Paso_SystemMatrix *A_CF,double*
96    invA_FF,index_t* A_FF_pivot,Paso_SystemMatrix *A_FC);
97  Paso_Solver_Jacobi* Paso_Solver_getJacobi(Paso_SystemMatrix * A_p);  Paso_Solver_Jacobi* Paso_Solver_getJacobi(Paso_SystemMatrix * A_p);
98  void Paso_Solver_solveJacobi(Paso_Solver_Jacobi * prec, double * x, double * b);  void Paso_Solver_solveJacobi(Paso_Solver_Jacobi * prec, double * x, double * b);
99  void Paso_Solver_Jacobi_free(Paso_Solver_Jacobi * in);  void Paso_Solver_Jacobi_free(Paso_Solver_Jacobi * in);

Legend:
Removed from v.430  
changed lines
  Added in v.584

  ViewVC Help
Powered by ViewVC 1.1.26