ITK  4.6.0
Insight Segmentation and Registration Toolkit
itkFEMItpackSparseMatrix.h
Go to the documentation of this file.
1 /*=========================================================================
2  *
3  * Copyright Insight Software Consortium
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0.txt
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  *=========================================================================*/
18 
19 #ifndef __itkFEMItpackSparseMatrix_h
20 #define __itkFEMItpackSparseMatrix_h
21 
22 #include "itkFEMException.h"
23 
24 namespace itk
25 {
26 namespace fem
27 {
36 // Forward declaration of friend class
37 class ItpackLinearSystemWrapper;
38 
40 {
41 public:
42 
44  typedef long integer;
45  typedef double doublereal;
46 
49 
55 
62  ItpackSparseMatrix(integer order, integer maxNonZeroValues);
63 
68 
74  void SetOrder(integer order)
75  {
76  m_N = order;
77  }
78 
84  void SetMaxNonZeroValues(integer maxNonZeroValues)
85  {
86  m_NZ = maxNonZeroValues;
87  }
88 
95  void Set(integer i, integer j, doublereal value);
96 
103  void Add(integer i, integer j, doublereal value);
104 
110 
115  {
116  return &m_N;
117  }
118 
122  integer * GetIA();
123 
130  void SetCompressedRow(integer *ia, integer *ja, doublereal *a);
131 
135  integer * GetJA();
136 
140  doublereal * GetA();
141 
146  {
147  return GetA();
148  }
149 
154  {
155  return GetJA();
156  }
157 
162  {
163  return GetIA();
164  }
165 
170  {
171  return m_N;
172  }
173 
178  {
179  return m_NZ;
180  }
181 
185  void Clear();
186 
190  void mult(doublereal *vector, doublereal *result);
191 
195  void mult(ItpackSparseMatrix *rightMatrix, ItpackSparseMatrix *resultMatrix);
196 
198  void PrintCompressedRow();
199 
200 private:
201 
204 
206  void Initialize();
207 
209  void UnFinalize();
210 
212  void Finalize();
213 
216 
219 
222 
225 
228 
231 
234 
237 
245 
248 
257 
265  // integer m_IER;
266 };
267 
276 {
277 public:
278 
280  typedef long integer;
281  typedef double doublereal;
282 
288  FEMExceptionItpackSparseMatrixSbagn(const char *file, unsigned int lineNumber, std::string location,
289  integer errorCode);
290 
293  throw ( )
294  {
295  }
296 
299 };
300 
309 {
310 public:
311 
313  typedef long integer;
314  typedef double doublereal;
315 
321  FEMExceptionItpackSparseMatrixSbsij(const char *file, unsigned int lineNumber, std::string location,
322  integer errorCode);
323 
326  throw ( )
327  {
328  }
329 
332 };
333 }
334 } // end namespace itk::fem
335 
336 #endif
void Set(integer i, integer j, doublereal value)
handles errors that occur when building the matrix
a compressed row sparse matrix representation that makes use of itpack to dynamically assemble the ma...
Declaration of several exception classes that are used within the FEM code.
void SetMaxNonZeroValues(integer maxNonZeroValues)
handles errors that occur when unfinalizing the matrix
LinearSystemWrapper class that uses Itpack numeric library functions to define and solve a sparse lin...
Base class for all exception's that can occur within FEM classes.
void SetCompressedRow(integer *ia, integer *ja, doublereal *a)
void Add(integer i, integer j, doublereal value)
void mult(doublereal *vector, doublereal *result)
doublereal Get(integer i, integer j)