File indexing completed on 2026-09-22 08:57:46
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017 #ifndef _FEmTool_ProfileMatrix_HeaderFile
0018 #define _FEmTool_ProfileMatrix_HeaderFile
0019
0020 #include <Standard.hxx>
0021
0022 #include <Standard_Integer.hxx>
0023 #include <NCollection_Array2.hxx>
0024 #include <NCollection_Array1.hxx>
0025 #include <NCollection_HArray1.hxx>
0026 #include <FEmTool_SparseMatrix.hxx>
0027 #include <Standard_Real.hxx>
0028 #include <math_Vector.hxx>
0029
0030
0031
0032 class FEmTool_ProfileMatrix : public FEmTool_SparseMatrix
0033 {
0034
0035 public:
0036 Standard_EXPORT FEmTool_ProfileMatrix(const NCollection_Array1<int>& FirstIndexes);
0037
0038 Standard_EXPORT void Init(const double Value) override;
0039
0040 Standard_EXPORT double& ChangeValue(const int I, const int J) override;
0041
0042
0043 Standard_EXPORT bool Decompose() override;
0044
0045
0046 Standard_EXPORT void Solve(const math_Vector& B, math_Vector& X) const override;
0047
0048
0049 Standard_EXPORT bool Prepare() override;
0050
0051
0052 Standard_EXPORT void Solve(const math_Vector& B,
0053 const math_Vector& Init,
0054 math_Vector& X,
0055 math_Vector& Residual,
0056 const double Tolerance = 1.0e-8,
0057 const int NbIterations = 50) const override;
0058
0059
0060
0061 Standard_EXPORT void Multiplied(const math_Vector& X, math_Vector& MX) const override;
0062
0063
0064 Standard_EXPORT int RowNumber() const override;
0065
0066
0067 Standard_EXPORT int ColNumber() const override;
0068
0069 Standard_EXPORT bool IsInProfile(const int i, const int j) const;
0070
0071 Standard_EXPORT void OutM() const;
0072
0073 Standard_EXPORT void OutS() const;
0074
0075 DEFINE_STANDARD_RTTIEXT(FEmTool_ProfileMatrix, FEmTool_SparseMatrix)
0076
0077 private:
0078 NCollection_Array2<int> profile;
0079 occ::handle<NCollection_HArray1<double>> ProfileMatrix;
0080 occ::handle<NCollection_HArray1<double>> SMatrix;
0081 occ::handle<NCollection_HArray1<int>> NextCoeff;
0082 bool IsDecomp;
0083 };
0084
0085 #endif