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

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

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

revision 1311 by gross, Wed Mar 14 00:15:24 2007 UTC revision 1312 by ksteube, Mon Sep 24 06:18:44 2007 UTC
# Line 1  Line 1 
 /* $Id$ */  
1    
2    /* $Id$ */
3    
4  /*  /*******************************************************
5  ********************************************************************************   *
6  *               Copyright   2006 by ACcESS MNRF                                *   *           Copyright 2003-2007 by ACceSS MNRF
7  *                                                                              *   *       Copyright 2007 by University of Queensland
8  *                 http://www.access.edu.au                                     *   *
9  *           Primary Business: Queensland, Australia                            *   *                http://esscc.uq.edu.au
10  *     Licensed under the Open Software License version 3.0             *   *        Primary Business: Queensland, Australia
11  *        http://www.opensource.org/licenses/osl-3.0.php                        *   *  Licensed under the Open Software License version 3.0
12  ********************************************************************************   *     http://www.opensource.org/licenses/osl-3.0.php
13  */   *
14     *******************************************************/
15    
16  /**************************************************************/  /**************************************************************/
17    
# Line 23  Line 24 
24    
25  /**************************************************************/  /**************************************************************/
26    
27  #ifndef INC_PASO_SYSTEM  #ifndef INC_PASO_SYSTEMMATRIX
28  #define INC_PASO_SYSTEM  #define INC_PASO_SYSTEMMATRIX
29    
30  #include "Common.h"  #include "Common.h"
31    #include "SparseMatrix.h"
32  #include "SystemMatrixPattern.h"  #include "SystemMatrixPattern.h"
33  #include "Options.h"  #include "Options.h"
34    #include "Paso_MPI.h"
35    #include "Paso.h"
36    
37  /**************************************************************/  /**************************************************************/
38    
# Line 39  Line 43 
43  #define MATRIX_FORMAT_SYM 2  #define MATRIX_FORMAT_SYM 2
44  #define MATRIX_FORMAT_BLK1 4  #define MATRIX_FORMAT_BLK1 4
45  #define MATRIX_FORMAT_OFFSET1 8  #define MATRIX_FORMAT_OFFSET1 8
46    #define MATRIX_FORMAT_TRILINOS_CRS 16
47    
48  typedef int Paso_SystemMatrixType;  typedef int Paso_SystemMatrixType;
49    
50  typedef struct Paso_SystemMatrix {  typedef struct Paso_SystemMatrix {
     /*  
 #ifdef PASO_MPI  
     Paso_CommBuffer *CommBuffer;  
     Paso_MPIInfo *MPIInfo;  
     dim_t numLocal;  
     dim_t numInternal;  
     dim_t numBoundary;  
     dim_t numExternal;  
     dim_t *vtxdist;  
 #endif  
     */  
51    Paso_SystemMatrixType type;    Paso_SystemMatrixType type;
52      Paso_SystemMatrixPattern *pattern;
53    
54    dim_t reference_counter;    dim_t reference_counter;
55    
56    dim_t logical_row_block_size;    dim_t logical_row_block_size;
# Line 65  typedef struct Paso_SystemMatrix { Line 61  typedef struct Paso_SystemMatrix {
61    dim_t col_block_size;    dim_t col_block_size;
62    dim_t block_size;    dim_t block_size;
63    
64    dim_t num_rows;    Paso_Distribution *row_distribution;
65    dim_t num_cols;    Paso_Distribution *col_distribution;
66    
67    Paso_SystemMatrixPattern* pattern;    Paso_MPIInfo *mpi_info;
68    
69    dim_t len;    /* this comes into play when PASO is used */
70    double *val;    Paso_SparseMatrix* mainBlock;
71      Paso_SparseMatrix* coupleBlock;
   double *normalizer; /* vector with a inverse of the absolute row/col sum (set by Solver.c)*/  
72    bool_t normalizer_is_valid;    bool_t normalizer_is_valid;
73      double *normalizer; /* vector with a inverse of the absolute row/col sum (set by Solver.c)*/
74    index_t solver_package;  /* package controling the solver pointer */    index_t solver_package;  /* package controling the solver pointer */
75    void* solver;  /* pointer to data needed by a solver */    void* solver;  /* pointer to data needed by a solver */
76    
77      /* this is only used for a trilinos matrix */
78      void *trilinos_data;
79    
80  } Paso_SystemMatrix;  } Paso_SystemMatrix;
81    
82  /*  interfaces: */  /*  interfaces: */
83    
84  Paso_SystemMatrix* Paso_SystemMatrix_alloc(Paso_SystemMatrixType,Paso_SystemMatrixPattern*,dim_t,dim_t);  Paso_SystemMatrix* Paso_SystemMatrix_alloc(Paso_SystemMatrixType,Paso_SystemMatrixPattern*,dim_t,dim_t);
85  Paso_SystemMatrix* Paso_SystemMatrix_reference(Paso_SystemMatrix*);  Paso_SystemMatrix* Paso_SystemMatrix_reference(Paso_SystemMatrix*);
86  void Paso_SystemMatrix_dealloc(Paso_SystemMatrix*);  void Paso_SystemMatrix_free(Paso_SystemMatrix*);
87    
 void Paso_SystemMatrix_setValues(Paso_SystemMatrix*,double);  
 void Paso_SystemMatrix_copy(Paso_SystemMatrix*,double*);  
 void Paso_SystemMatrix_add(Paso_SystemMatrix*,dim_t,index_t*, dim_t,dim_t,index_t*,dim_t, double*);  
88  void Paso_SystemMatrix_MatrixVector(double alpha, Paso_SystemMatrix* A, double* in, double beta, double* out);  void Paso_SystemMatrix_MatrixVector(double alpha, Paso_SystemMatrix* A, double* in, double beta, double* out);
 void Paso_SystemMatrix_MatrixVector_CSC_OFFSET0(double alpha, Paso_SystemMatrix* A, double* in, double beta, double* out);  
 void Paso_SystemMatrix_MatrixVector_CSC_OFFSET1(double alpha, Paso_SystemMatrix* A, double* in, double beta, double* out);  
89  void Paso_SystemMatrix_MatrixVector_CSR_OFFSET0(double alpha, Paso_SystemMatrix* A, double* in, double beta, double* out);  void Paso_SystemMatrix_MatrixVector_CSR_OFFSET0(double alpha, Paso_SystemMatrix* A, double* in, double beta, double* out);
90  void Paso_SystemMatrix_MatrixVector_CSR_OFFSET1(double alpha, Paso_SystemMatrix* A, double* in, double beta, double* out);  void Paso_solve(Paso_SystemMatrix* A, double* out, double* in, Paso_Options* options);
91    void Paso_solve_free(Paso_SystemMatrix* in);
92    void Paso_SystemMatrix_allocBuffer(Paso_SystemMatrix* A);
93    void Paso_SystemMatrix_freeBuffer(Paso_SystemMatrix* A);
94    void  Paso_SystemMatrix_startCollect(Paso_SystemMatrix* A,double* in);
95    double* Paso_SystemMatrix_finishCollect(Paso_SystemMatrix* A);
96    void Paso_SystemMatrix_nullifyRowsAndCols(Paso_SystemMatrix* A, double* mask_row, double* mask_col, double main_diagonal_value);
97    double* Paso_SystemMatrix_borrowNormalization(Paso_SystemMatrix* A);
98    dim_t Paso_SystemMatrix_getTotalNumRows(Paso_SystemMatrix* A);
99    dim_t Paso_SystemMatrix_getTotalNumCols(Paso_SystemMatrix*);
100    dim_t Paso_SystemMatrix_getGlobalNumRows(Paso_SystemMatrix*);
101    dim_t Paso_SystemMatrix_getGlobalNumCols(Paso_SystemMatrix*);
102    
103  void Paso_SystemMatrix_saveMM(Paso_SystemMatrix *, char *);  void Paso_SystemMatrix_saveMM(Paso_SystemMatrix *, char *);
104  void Paso_SystemMatrix_saveHB(Paso_SystemMatrix *, char *);  void Paso_SystemMatrix_saveHB(Paso_SystemMatrix *, char *);
105  Paso_SystemMatrix* Paso_SystemMatrix_loadMM_toCSR(char *);  Paso_SystemMatrix* Paso_SystemMatrix_loadMM_toCSR(char *);
106  void Paso_SystemMatrix_nullifyRowsAndCols(Paso_SystemMatrix* A, double* mask_row, double* mask_col, double main_diagonal_value);  Paso_SystemMatrix* Paso_SystemMatrix_loadMM_toCSC(char *);
107  void Paso_SystemMatrix_setDefaults(Paso_Options*);  void Paso_SystemMatrix_setDefaults(Paso_Options*);
108  int Paso_SystemMatrix_getSystemMatrixTypeId(index_t solver, index_t package, bool_t symmetry);  int Paso_SystemMatrix_getSystemMatrixTypeId(index_t solver, index_t package, bool_t symmetry);
 Paso_SystemMatrix* Paso_SystemMatrix_getSubmatrix(Paso_SystemMatrix* A,dim_t,index_t*,index_t*);  
 double* Paso_SystemMatrix_borrowNormalization(Paso_SystemMatrix* A);  
109    
110  #endif /* #ifndef INC_PASO_SYSTEM */  void Paso_SystemMatrix_setValues(Paso_SystemMatrix*,double);
111    void Paso_SystemMatrix_add(Paso_SystemMatrix*,dim_t,index_t*, dim_t,dim_t,index_t*,dim_t, double*);
112    
113    #endif /* #ifndef INC_PASO_SYSTEMMATRIX */
114    
 /*  
  * $Log$  
  * Revision 1.2  2005/09/15 03:44:38  jgs  
  * Merge of development branch dev-02 back to main trunk on 2005-09-15  
  *  
  * Revision 1.1.2.2  2005/09/07 00:59:08  gross  
  * some inconsistent renaming fixed to make the linking work.  
  *  
  * Revision 1.1.2.1  2005/09/05 06:29:47  gross  
  * These files have been extracted from finley to define a stand alone libray for iterative  
  * linear solvers on the ALTIX. main entry through Paso_solve. this version compiles but  
  * has not been tested yet.  
  *  
  *  
  */  

Legend:
Removed from v.1311  
changed lines
  Added in v.1312

  ViewVC Help
Powered by ViewVC 1.1.26