]> SALOME platform Git repositories - tools/solverlab.git/commitdiff
Salome HOME
Class GenericMatrix no longer uses DoubleTab
authormichael <michael@localhost.localdomain>
Mon, 7 Jun 2021 18:10:55 +0000 (20:10 +0200)
committermichael <michael@localhost.localdomain>
Mon, 7 Jun 2021 18:10:55 +0000 (20:10 +0200)
CDMATH/base/inc/GenericMatrix.hxx
CDMATH/base/inc/Matrix.hxx [changed mode: 0644->0755]
CDMATH/base/src/GenericMatrix.cxx
CDMATH/base/src/Matrix.cxx [changed mode: 0644->0755]

index 77735d51a685aba22b127ad264ddfbe589e8e3a6..52f3db950263889f2b1d95f8d338756605489d71 100755 (executable)
@@ -17,7 +17,7 @@
  */
 
 #include <iostream>
-
+#include <vector>
 #include "DoubleTab.hxx"
 
 class GenericMatrix
@@ -45,18 +45,8 @@ class GenericMatrix
      */
     int getNumberOfColumns ( void ) const ;
 
-    const DoubleTab& getValues( void ) const ;
-
-       DoubleTab getValues( void ) ;
-
-       void setValues(const DoubleTab& values) ;
-
     virtual double operator ()( int i, int j ) const = 0;
 
-    double max() const;
-
-    double min() const;
-
     virtual bool isSymmetric(double tol=1e-6) const ;
 
     bool isSquare() const ;
@@ -65,8 +55,6 @@ class GenericMatrix
 
     virtual  bool containsPetscMatrix() const { return false; };
 
-    int coefficient(int index) const ;
-
     void view() const ;
 
     protected: //----------------------------------------------------------------
@@ -83,7 +71,6 @@ class GenericMatrix
 
     bool _isSparseMatrix ;
 
-    DoubleTab _values ;
 };
 
 #endif /* GENERICMATRIX_HXX_ */
old mode 100644 (file)
new mode 100755 (executable)
index 13b13bd..bfb7985
@@ -60,6 +60,21 @@ class Matrix: public GenericMatrix
      */
     virtual ~Matrix ( void ) ;
 
+    const DoubleTab& getValues( void ) const ;
+
+       DoubleTab getValues( void ) ;
+
+       void setValues(const DoubleTab& values) ;
+
+       //returns the array of matrix coefficients
+       std::vector< double > getArray();
+
+       //returns the maximum coefficient
+    double max() const;
+
+       //returns the minimum coefficient
+    double min() const;
+
     bool isSparseMatrix( void ) const ;
 
     double& operator () ( int i, int j ) ;
@@ -100,6 +115,13 @@ class Matrix: public GenericMatrix
 
     friend std::ostream& operator<<(std::ostream& out, const Matrix& matrix ) ;
 
+
+    protected: //----------------------------------------------------------------
+
+    DoubleTab _values ;
+
+       //This function is used in the computation of the determinant
+    int coefficient(int index) const ;
 };
 
 #endif /* MATRIX_HXX_ */
index 0d2f5eb9e18f50f3403b0bb8fcada05c239647af..d81c27394af54a2755d79d2b77c03eac5d682ea1 100755 (executable)
@@ -6,6 +6,7 @@
  */
 
 #include <math.h> 
+#include <cstring>
 
 #include "GenericMatrix.hxx"
 #include "CdmathException.hxx"
@@ -42,26 +43,6 @@ GenericMatrix::getNumberOfColumns() const
        return _numberOfColumns ;
 }
 
-const DoubleTab&
-GenericMatrix::getValues( void ) const
-{
-       return _values;
-}
-
-//----------------------------------------------------------------------
-DoubleTab
-GenericMatrix::getValues()
-//----------------------------------------------------------------------
-{
-       return _values;
-}
-
-void
-GenericMatrix::setValues(const DoubleTab& values)
-{
-       _values=values;
-}
-
 bool
 GenericMatrix::isSymmetric(double tol) const
 {
@@ -90,29 +71,6 @@ GenericMatrix::isSquare() const
        return false;
 }
 
-int
-GenericMatrix::coefficient(int index) const
-{
-       if(! (index % 2) )
-               return (1);
-       return (-1);
-}
-
-
-double 
-GenericMatrix::max() const
-{
-    return _values.max();
-}
-
-
-double 
-GenericMatrix::min() const
-{
-    return _values.max();      
-}
-
-
 void
 GenericMatrix::view() const
 {
old mode 100644 (file)
new mode 100755 (executable)
index 50f4781..20dfed6
@@ -5,6 +5,7 @@
  *      Authors: CDMATH
  */
 #include <iostream>
+#include <cstring>
 
 #include "Matrix.hxx"
 #include "Vector.hxx"
@@ -46,6 +47,53 @@ Matrix::Matrix(const Matrix& matrix)
        _values=DoubleTab (_numberOfRows*_numberOfColumns,matrix.getValues().getValues());
 }
 
+const DoubleTab&
+Matrix::getValues( void ) const
+{
+       return _values;
+}
+
+//----------------------------------------------------------------------
+DoubleTab
+Matrix::getValues()
+//----------------------------------------------------------------------
+{
+       return _values;
+}
+
+void
+Matrix::setValues(const DoubleTab& values)
+{
+       _values=values;
+}
+
+double
+Matrix::max() const
+{
+    return _values.max();
+}
+
+double 
+Matrix::min() const
+{
+    return _values.max();      
+}
+
+std::vector< double > 
+Matrix::getArray() 
+{
+       int numberOfRows  =getNumberOfRows();
+       int numberOfColums=getNumberOfColumns();
+       int size=_numberOfRows*numberOfColums;
+       
+       vector< double >  result(size); 
+       double* values = result.data();
+       
+    memcpy(values,_values.getPointer(),size*sizeof(double)) ;
+
+       return result;
+}
+
 bool
 Matrix::isSparseMatrix( void ) const
 {
@@ -140,6 +188,14 @@ Matrix::partMatrix(int row, int column) const
        return res;
 }
 
+int
+Matrix::coefficient(int index) const
+{
+       if(! (index % 2) )
+               return (1);
+       return (-1);
+}
+
 double
 Matrix::determinant() const
 {