/[escript]/trunk/finley/src/CPPAdapter/SystemMatrixAdapter.h
ViewVC logotype

Diff of /trunk/finley/src/CPPAdapter/SystemMatrixAdapter.h

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

trunk/esys2/finley/src/CPPAdapter/SystemMatrixAdapter.h revision 149 by jgs, Thu Sep 1 03:31:39 2005 UTC trunk/finley/src/CPPAdapter/SystemMatrixAdapter.h revision 1388 by trankine, Fri Jan 11 07:45:58 2008 UTC
# Line 1  Line 1 
1  // $Id$  
2  /*  /* $Id$ */
3   ******************************************************************************  
4   *                                                                            *  /*******************************************************
5   *       COPYRIGHT  ACcESS 2004 -  All Rights Reserved                        *   *
6   *                                                                            *   *           Copyright 2003-2007 by ACceSS MNRF
7   * This software is the property of ACcESS. No part of this code              *   *       Copyright 2007 by University of Queensland
8   * may be copied in any form or by any means without the expressed written    *   *
9   * consent of ACcESS.  Copying, use or modification of this software          *   *                http://esscc.uq.edu.au
10   * by any unauthorised person is illegal unless that person has a software    *   *        Primary Business: Queensland, Australia
11   * license agreement with ACcESS.                                             *   *  Licensed under the Open Software License version 3.0
12   *                                                                            *   *     http://www.opensource.org/licenses/osl-3.0.php
13   ******************************************************************************   *
14  */   *******************************************************/
15                                                                              
16  #if !defined  finley_SystemMatrixAdapter_20040610_H  #if !defined  finley_SystemMatrixAdapter_20040610_H
17  #define finley_SystemMatrixAdapter_20040610_H  #define finley_SystemMatrixAdapter_20040610_H
18    #include "system_dep.h"
19    
 #include "finley/CPPAdapter/SystemMatrixAdapter.h"  
 #include "escript/Data/AbstractSystemMatrix.h"  
 #include "escript/Data/Data.h"  
20  extern "C" {  extern "C" {
21  #include "finley/finleyC/System.h"  #include "paso/SystemMatrix.h"
22    #include "paso/Options.h"
23  }  }
24    
25    #include "FinleyAdapterException.h"
26    #include "FinleyError.h"
27    
28    #include "escript/AbstractSystemMatrix.h"
29    #include "escript/Data.h"
30    #include "escript/UtilC.h"
31    
32  #include <boost/python/dict.hpp>  #include <boost/python/dict.hpp>
33  #include <boost/shared_ptr.hpp>  #include <boost/shared_ptr.hpp>
34    #include <boost/python/extract.hpp>
35    
36  namespace finley {  namespace finley {
37    
# Line 31  class SystemMatrixAdapter:public escript Line 39  class SystemMatrixAdapter:public escript
39    
40  /**  /**
41     \brief     \brief
42     Wrapper for Finley_SystemMatrix.     Wrapper for Paso_SystemMatrix.
43    
44     Description:     Description:
45     Wrapper for Finley_SystemMatrix.     Wrapper for Paso_SystemMatrix.
46  */  */
47    
48   public:   public:
# Line 44  class SystemMatrixAdapter:public escript Line 52  class SystemMatrixAdapter:public escript
52       Default Constructor for SystemMatrixAdapter.       Default Constructor for SystemMatrixAdapter.
53       NB: Only throws an exception.       NB: Only throws an exception.
54    */    */
55      FINLEY_DLL_API
56    SystemMatrixAdapter();    SystemMatrixAdapter();
57    
58    /**    /**
59       /brief       /brief
60       Constructor for SystemMatrixAdapter.       Constructor for SystemMatrixAdapter.
61    */    */
62    SystemMatrixAdapter(Finley_SystemMatrix* system_matrix,    FINLEY_DLL_API
63      SystemMatrixAdapter(Paso_SystemMatrix* system_matrix,
64                        const int row_blocksize,                        const int row_blocksize,
65                        const escript::FunctionSpace& row_functionspace,                        const escript::FunctionSpace& row_functionspace,
66                        const int column_blocksize,                        const int column_blocksize,
# Line 62  class SystemMatrixAdapter:public escript Line 72  class SystemMatrixAdapter:public escript
72       Destructor for SystemMatrixAdapter. As specified in the constructor       Destructor for SystemMatrixAdapter. As specified in the constructor
73       this deallocates the pointer given to the constructor.       this deallocates the pointer given to the constructor.
74    */    */
75      FINLEY_DLL_API
76    ~SystemMatrixAdapter();    ~SystemMatrixAdapter();
77    
78    /**    /**
79       \brief       \brief
80       Returns the pointer to the system matrix.       Returns the pointer to the system matrix.
81    */    */
82    Finley_SystemMatrix* getFinley_SystemMatrix() const;    FINLEY_DLL_API
83      Paso_SystemMatrix* getPaso_SystemMatrix() const;
84    
85    /**    /**
86       \brief       \brief
# Line 90  class SystemMatrixAdapter:public escript Line 102  class SystemMatrixAdapter:public escript
102    
103    /**    /**
104      \brief      \brief
105      nullifyRowsAndCols - calls Finley_SystemMatrix_nullifyRowsAndCols.      nullifyRowsAndCols - calls Paso_SystemMatrix_nullifyRowsAndCols.
106    */    */
107    void nullifyRowsAndCols(const escript::Data& row_q, const escript::Data& col_q, const double mdv) const;    FINLEY_DLL_API
108      void nullifyRowsAndCols(escript::Data& row_q, escript::Data& col_q, const double mdv) const;
109    
110    /**    /**
111       \brief writes the matrix to a file using the Matrix Market file format       \brief writes the matrix to a file using the Matrix Market file format
112    */    */
113      FINLEY_DLL_API
114    virtual void saveMM(const std::string& fileName) const;    virtual void saveMM(const std::string& fileName) const;
115    
116    /**    /**
117       \brief writes the matrix to a file using the Harwell-Boeing file format       \brief writes the matrix to a file using the Harwell-Boeing file format
118    */    */
119      FINLEY_DLL_API
120    virtual void saveHB(const std::string& fileName) const;    virtual void saveHB(const std::string& fileName) const;
121    
122    /**    /**
123       \brief sets the matrix entries to zero       \brief sets the matrix entries to zero
124    */    */
125      FINLEY_DLL_API
126    virtual void resetValues() const;    virtual void resetValues() const;
127    
128      /**
129         \brief maps escript options onto Paso options:
130      */
131      FINLEY_DLL_API
132      static int mapOptionToPaso(const int option);
133    
134      /**
135         \brief extract paso options from a dictionary
136      */
137    
138      FINLEY_DLL_API
139      static void dictToPasoOptions(Paso_Options* paso_options, const boost::python::dict& options);
140    
141      /**
142         \brief prints information about a system matrix
143      */
144      FINLEY_DLL_API
145      void Print_Matrix_Info(const bool) const;
146    
147   protected:   protected:
148    
149   private:   private:
# Line 117  class SystemMatrixAdapter:public escript Line 152  class SystemMatrixAdapter:public escript
152        \brief        \brief
153        solves the linear system this*out=in        solves the linear system this*out=in
154     */     */
155     virtual void setToSolution(escript::Data& out, const escript::Data& in, const boost::python::dict& options) const;     FINLEY_DLL_API
156       virtual void setToSolution(escript::Data& out, escript::Data& in, const boost::python::dict& options) const;
157    
158     /**     /**
159         \brief         \brief
160         performs y+=this*x         performs y+=this*x
161     */     */
162     virtual void ypAx(escript::Data& y, const escript::Data& x) const;     FINLEY_DLL_API
163       virtual void ypAx(escript::Data& y, escript::Data& x) const;
164    
165     //     //
166     // pointer to the externally created finley mesh - system_matrix.     // pointer to the externally created finley mesh - system_matrix.
167     //     //
168     boost::shared_ptr<Finley_SystemMatrix> m_system_matrix;     boost::shared_ptr<Paso_SystemMatrix> m_system_matrix;
169    
170  };  };
171    

Legend:
Removed from v.149  
changed lines
  Added in v.1388

  ViewVC Help
Powered by ViewVC 1.1.26