/[escript]/trunk/escript/src/AbstractSystemMatrix.cpp
ViewVC logotype

Annotation of /trunk/escript/src/AbstractSystemMatrix.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 969 - (hide annotations)
Tue Feb 13 23:02:23 2007 UTC (12 years, 9 months ago) by ksteube
File size: 3936 byte(s)
Parallelization using MPI for solution of implicit problems.

Parallelization for explicit problems has already been accomplished in
the main SVN branch.

This is incomplete and is not ready for use.


1 jgs 102 // $Id$
2 jgs 82 /*
3 elspeth 615 ************************************************************
4     * Copyright 2006 by ACcESS MNRF *
5     * *
6     * http://www.access.edu.au *
7     * Primary Business: Queensland, Australia *
8     * Licensed under the Open Software License version 3.0 *
9     * http://www.opensource.org/licenses/osl-3.0.php *
10     * *
11     ************************************************************
12 jgs 82 */
13    
14 jgs 474 #include "AbstractSystemMatrix.h"
15     #include "DataException.h"
16     #include "DataArrayView.h"
17 jgs 480 #include "Data.h"
18 jgs 82
19     namespace escript {
20    
21     AbstractSystemMatrix::AbstractSystemMatrix() {
22     //std::cout << "Called default AbstractSystemMatrix constructor" << std::endl;
23     m_empty=1;
24     }
25    
26     AbstractSystemMatrix::AbstractSystemMatrix(const int row_blocksize,
27     const FunctionSpace& row_functionspace,
28     const int column_blocksize,
29     const FunctionSpace& column_functionspace)
30     {
31     if (row_blocksize<=0)
32     throw DataException("Error - negative row block size of system matrix.");
33     if (column_blocksize<=0)
34     throw DataException("Error - negative column block size of system matrix.");
35    
36     m_empty=0;
37     m_row_blocksize=row_blocksize;
38     m_column_blocksize=column_blocksize;
39     m_row_functionspace=row_functionspace;
40     m_column_functionspace=column_functionspace;
41     }
42    
43     AbstractSystemMatrix::~AbstractSystemMatrix() {
44     }
45    
46     int AbstractSystemMatrix::isEmpty() const {
47     return m_empty;
48     }
49    
50 jgs 153 Data operator*(const AbstractSystemMatrix& left,const Data& right)
51 jgs 82 {
52 jgs 153 Data tmp=(Data) right;
53     return left.vectorMultiply(tmp);
54 jgs 82 }
55    
56 jgs 153 Data AbstractSystemMatrix::vectorMultiply(Data& right) const
57 jgs 82 {
58     if (isEmpty())
59     throw SystemMatrixException("Error - Matrix is empty.");
60     if (right.getDataPointSize()!=getColumnBlockSize())
61     throw SystemMatrixException("Error - column block size and input data size do not match.");
62     DataArrayView::ShapeType shape;
63     if (getRowBlockSize()>1) shape.push_back(getRowBlockSize());
64    
65     Data out=Data(0.,shape,getRowFunctionSpace(),true);
66 jgs 153 Data in=Data(right,getColumnFunctionSpace());
67     ypAx(out,in);
68 jgs 82 return out;
69     }
70    
71 jgs 153 void AbstractSystemMatrix::ypAx(Data& y,Data& x) const
72 jgs 82 {
73     throw SystemMatrixException("Error - ypAx not available");
74     }
75    
76 jgs 153 Data AbstractSystemMatrix::solve(Data& in,const boost::python::dict& options) const
77 jgs 82 {
78 ksteube 969 printf("ksteube in escript/src/AbstractSystemMatrix.cpp : solve()\n");
79 jgs 82 if (isEmpty())
80     throw SystemMatrixException("Error - Matrix is empty.");
81     if (in.getFunctionSpace()!=getRowFunctionSpace())
82     throw SystemMatrixException("Error - row function space and function space of right hand side do not match.");
83     if (in.getDataPointSize()!=getRowBlockSize())
84     throw SystemMatrixException("Error - row block size and right hand side size do not match.");
85     DataArrayView::ShapeType shape;
86     if (getRowBlockSize()>1) shape.push_back(getColumnBlockSize());
87     Data out=Data(0.,shape,getColumnFunctionSpace(),true);
88     setToSolution(out,in,options);
89     return out;
90     }
91 jgs 153 void AbstractSystemMatrix::setToSolution(Data& out,Data& in,const boost::python::dict& options) const
92 jgs 82 {
93     throw SystemMatrixException("Error - setToSolution not available");
94     }
95 jgs 102 void AbstractSystemMatrix::saveMM(const std::string& fileName) const
96     {
97     throw SystemMatrixException("Error - Matrix Market interface not available.");
98     }
99 jgs 123 void AbstractSystemMatrix::saveHB(const std::string& fileName) const
100     {
101     throw SystemMatrixException("Error - Harwell-Boeing interface not available.");
102     }
103 jgs 149 void AbstractSystemMatrix::resetValues() const
104 jgs 102 {
105 jgs 108 throw SystemMatrixException("Error - setValue is not implemented.");
106 jgs 102 }
107 jgs 82
108     } // end of namespace

Properties

Name Value
svn:eol-style native
svn:keywords Author Date Id Revision

  ViewVC Help
Powered by ViewVC 1.1.26