@@ -145,9 +145,9 @@ class CSysMatrix {
145145 const unsigned long * col_ind; /* !< \brief Column index for each of the elements in val(). */
146146 const unsigned long * col_ptr; /* !< \brief The transpose of col_ind, pointer to blocks with the same column index. */
147147
148- ScalarType* d_matrix; /* !< \brief Device Pointer to store the matrix values on the GPU. */
149- unsigned long * d_row_ptr; /* !< \brief Device Pointers to the first element in each row. */
150- unsigned long * d_col_ind; /* !< \brief Device Column index for each of the elements in val(). */
148+ ScalarType* d_matrix; /* !< \brief Device Pointer to store the matrix values on the GPU. */
149+ const unsigned long * d_row_ptr; /* !< \brief Device Pointers to the first element in each row. */
150+ const unsigned long * d_col_ind; /* !< \brief Device Column index for each of the elements in val(). */
151151
152152 ScalarType* ILU_matrix; /* !< \brief Entries of the ILU sparse matrix. */
153153 unsigned long nnz_ilu; /* !< \brief Number of possible nonzero entries in the matrix (ILU). */
@@ -859,9 +859,41 @@ class CSysMatrix {
859859 void GPUMatrixVectorProduct (const CSysVector<ScalarType>& vec, CSysVector<ScalarType>& prod, CGeometry* geometry,
860860 const CConfig* config) const ;
861861
862- void FGMRESMainLoop (std::vector<ScalarType> W, std::vector<ScalarType> Z, su2vector<ScalarType>& g,
863- su2vector<ScalarType>& sn, CSysVector<ScalarType>& cs, su2vector<ScalarType>& y,
864- su2vector<ScalarType>& H, int m, CGeometry* geometry, const CConfig* config) const ;
862+ /* !
863+ * \brief Performs first step of the LU_SGS Preconditioner building
864+ * \param[in] vec - CSysVector to be multiplied by the sparse matrix A.
865+ * \param[in] geometry - Geometrical definition of the problem.
866+ * \param[in] config - Definition of the particular problem.
867+ * \param[out] prod - Result of the product.
868+ */
869+
870+ void GPUFirstSymmetricIteration (ScalarType& vec, ScalarType& prod, CGeometry* geometry, const CConfig* config) const ;
871+
872+ /* !
873+ * \brief Performs second step of the LU_SGS Preconditioner building
874+ * \param[in] geometry - Geometrical definition of the problem.
875+ * \param[in] config - Definition of the particular problem.
876+ * \param[out] prod - Result of the product.
877+ */
878+
879+ void GPUSecondSymmetricIteration (ScalarType& prod, CGeometry* geometry, const CConfig* config) const ;
880+
881+ /* !
882+ * \brief Performs Gaussian Elimination between diagional blocks of the matrix and the prod vector
883+ * \param[in] geometry - Geometrical definition of the problem.
884+ * \param[in] config - Definition of the particular problem.
885+ * \param[out] prod - Result of the product.
886+ */
887+
888+ void GPUGaussElimination (ScalarType& prod, CGeometry* geometry, const CConfig* config) const ;
889+
890+ /* !
891+ * \brief Multiply CSysVector by the preconditioner all of which are stored on the device
892+ * \param[in] vec - CSysVector to be multiplied by the preconditioner.
893+ * \param[out] prod - Result of the product A*vec.
894+ */
895+ void GPUComputeLU_SGSPreconditioner (ScalarType& vec, ScalarType& prod, CGeometry* geometry,
896+ const CConfig* config) const ;
865897
866898 /* !
867899 * \brief Build the Jacobi preconditioner.
0 commit comments