7fd59977 |
1 | -- File: FEmTool_ProfileMatrix.cdl |
2 | -- Created: Wed Oct 29 16:54:05 1997 |
3 | -- Author: Roman BORISOV |
4 | -- <rbv@velox.nnov.matra-dtv.fr> |
5 | ---Copyright: Matra Datavision 1997 |
6 | |
7 | class ProfileMatrix from FEmTool inherits SparseMatrix from FEmTool |
8 | |
9 | ---Purpose: Symmetric Sparse ProfileMatrix useful for 1D Finite |
10 | -- Element methods |
11 | |
12 | uses |
13 | HArray1OfInteger from TColStd, |
14 | Array1OfInteger from TColStd, |
15 | Array2OfInteger from TColStd, |
16 | HArray1OfReal from TColStd, |
17 | Vector from math |
18 | |
19 | raises |
20 | NotDone from StdFail, |
21 | NotImplemented from Standard, |
22 | OutOfRange from Standard |
23 | |
24 | is |
25 | Create(FirstIndexes : Array1OfInteger) |
26 | returns mutable ProfileMatrix from FEmTool; |
27 | |
28 | Init(me: mutable; Value : Real); |
29 | |
30 | ChangeValue(me: mutable; I, J : Integer) |
31 | ---C++: return & |
32 | returns Real |
33 | raises OutOfRange; |
34 | |
35 | Decompose(me : mutable) |
36 | ---Purpose: To make a Factorization of <me> |
37 | returns Boolean; |
38 | |
39 | Solve(me; B : Vector; X : in out Vector) |
40 | ---Purpose: Direct Solve of AX = B |
41 | raises NotDone from StdFail; -- if <me> is not decomposed |
42 | |
43 | Prepare(me : mutable) |
44 | ---Purpose: Make Preparation to iterative solve |
45 | returns Boolean |
46 | raises NotImplemented from Standard; |
47 | |
48 | Solve(me; B : Vector; |
49 | Init : Vector; |
50 | X : out Vector; |
51 | Residual : out Vector; |
52 | Tolerance : Real = 1.0e-8; |
53 | NbIterations: Integer = 50) |
54 | ---Purpose: Iterative solve of AX = B |
55 | raises NotDone from StdFail; -- if <me> is not prepared; |
56 | |
57 | Multiplied(me; X: Vector; MX : in out Vector); |
58 | ---Purpose: returns the product of a SparseMatrix by a vector. |
59 | -- An exception is raised if the dimensions are different |
60 | |
61 | RowNumber(me) |
62 | ---Purpose: returns the row range of a matrix. |
63 | returns Integer; |
64 | |
65 | |
66 | ColNumber(me) |
67 | ---Purpose: returns the column range of the matrix. |
68 | returns Integer; |
69 | |
70 | IsInProfile(me; i, j : Integer) |
71 | returns Boolean; |
72 | |
73 | -- for debug |
74 | |
75 | OutM(me); |
76 | |
77 | OutS(me); |
78 | |
79 | fields |
80 | profile : Array2OfInteger; -- Like MPOSIT in Fortran |
81 | ProfileMatrix : HArray1OfReal; -- Like AMATRI in Fortran |
82 | SMatrix : HArray1OfReal; -- Like SMATRI in Fortran |
83 | NextCoeff : HArray1OfInteger; -- Like POSUIV in Fortran |
84 | IsDecomp : Boolean; |
85 | end ProfileMatrix; |