From 550cf314942d10ee165c10c015de5a43159eb031 Mon Sep 17 00:00:00 2001
From: Simone Bna <s.bn@cineca.it>
Date: Thu, 19 Nov 2020 20:00:56 +0100
Subject: [PATCH] ENH: modified some APIs in AmgXSolver

---
 src/AmgXSolver.H  | 47 +++++++++++++++++++++++++++++++++++------------
 src/AmgXSolver.cu | 23 +++++++++++++++--------
 2 files changed, 50 insertions(+), 20 deletions(-)

diff --git a/src/AmgXSolver.H b/src/AmgXSolver.H
index bd6b69c..43ecb92 100644
--- a/src/AmgXSolver.H
+++ b/src/AmgXSolver.H
@@ -97,8 +97,12 @@ class AmgXSolver
          * \param modeStr [in] A string; target mode of AmgX (e.g., dDDI).
          * \param cfgFile [in] A string; the path to AmgX configuration file.
          */
-        AmgXSolver(const MPI_Comm &comm,
-                const std::string &modeStr, const std::string &cfgFile);
+        AmgXSolver
+        (
+            const MPI_Comm &comm,
+            const std::string &modeStr, 
+            const std::string &cfgFile
+        );
 
         /** \brief Destructor. */
         ~AmgXSolver();
@@ -111,8 +115,12 @@ class AmgXSolver
          *
          * \return PetscErrorCode.
          */
-        PetscErrorCode initialize(const MPI_Comm &comm,
-                const std::string &modeStr, const std::string &cfgFile);
+        PetscErrorCode initialize
+        (
+            const MPI_Comm &comm,
+            const std::string &modeStr, 
+            const std::string &cfgFile
+        );
 
         /** \brief Finalize this instance.
          *
@@ -140,14 +148,16 @@ class AmgXSolver
          *
          * \return PetscErrorCode.
          */
-        PetscErrorCode setA(
-            const PetscInt nGlobalRows,
+        PetscErrorCode setOperator
+        (
             const PetscInt nLocalRows,
+            const PetscInt nGlobalRows,
             const PetscInt nLocalNz,
             const PetscInt* rowOffsets,
             const PetscInt* colIndicesGlobal,
             const PetscScalar* values,
-            const PetscInt* partData);
+            const PetscInt* partData
+        );
 
         /** \brief Re-sets up an existing AmgX matrix.
          *
@@ -160,10 +170,12 @@ class AmgXSolver
          *
          * \return PetscErrorCode.
          */
-        PetscErrorCode updateA(
+        PetscErrorCode updateOperator
+        (
             const PetscInt nLocalRows,
             const PetscInt nLocalNz,
-            const PetscScalar* values);
+            const PetscScalar* values
+        );
 
         /** \brief Solve the linear system.
          *
@@ -180,7 +192,11 @@ class AmgXSolver
          *
          * \return PetscErrorCode.
          */
-        PetscErrorCode solve(Vec &p, Vec &b, const int nRows);
+        PetscErrorCode solve
+        (
+            Vec &p, 
+            Vec &b
+        );
 
         /** \brief Get the number of iterations of the last solving.
          *
@@ -188,7 +204,10 @@ class AmgXSolver
          *
          * \return PetscErrorCode.
          */
-        PetscErrorCode getIters(int &iter);
+        PetscErrorCode getIters
+        (
+            int &iter
+        );
 
         /** \brief Get the residual at a specific iteration during the last solving.
          *
@@ -197,7 +216,11 @@ class AmgXSolver
          *
          * \return PetscErrorCode.
          */
-        PetscErrorCode getResidual(const int &iter, double &res);
+        PetscErrorCode getResidual
+        (
+            const int &iter, 
+            double &res
+        );
 
 
     private:
diff --git a/src/AmgXSolver.cu b/src/AmgXSolver.cu
index c92ee06..99717df 100644
--- a/src/AmgXSolver.cu
+++ b/src/AmgXSolver.cu
@@ -214,15 +214,17 @@ PetscErrorCode AmgXSolver::finalize()
 }
 
 
-/* \implements AmgXSolver::setA */
-PetscErrorCode AmgXSolver::setA(
-    const PetscInt nGlobalRows,
+/* \implements AmgXSolver::setOperator */
+PetscErrorCode AmgXSolver::setOperator
+(
     const PetscInt nLocalRows,
+    const PetscInt nGlobalRows,
     const PetscInt nLocalNz,
     const PetscInt* rowOffsets,
     const PetscInt* colIndicesGlobal,
     const PetscScalar* values,
-    const PetscInt* partData)
+    const PetscInt* partData
+)
 {
     PetscFunctionBeginUser;
 
@@ -268,11 +270,13 @@ PetscErrorCode AmgXSolver::setA(
 }
 
 
-/* \implements AmgXSolver::updateA */
-PetscErrorCode AmgXSolver::updateA(
+/* \implements AmgXSolver::updateOperator */
+PetscErrorCode AmgXSolver::updateOperator
+(
     const PetscInt nLocalRows,
     const PetscInt nLocalNz,
-    const PetscScalar* values)
+    const PetscScalar* values
+)
 {
     PetscFunctionBeginUser;
 
@@ -307,7 +311,7 @@ PetscErrorCode AmgXSolver::updateA(
 
 
 /* \implements AmgXSolver::solve */
-PetscErrorCode AmgXSolver::solve(Vec& p, Vec &b, const int nRows)
+PetscErrorCode AmgXSolver::solve(Vec& p, Vec &b)
 {
     PetscFunctionBeginUser;
 
@@ -320,6 +324,9 @@ PetscErrorCode AmgXSolver::solve(Vec& p, Vec &b, const int nRows)
     ierr = VecGetArray(p, &pscalar); CHK;
     ierr = VecGetArray(b, &bscalar); CHK;
 
+    PetscInt nRows;
+    ierr = VecGetLocalSize(p, &nRows); CHK;
+
     if (consolidationStatus == ConsolidationStatus::Device)
     {
         CHECK(
-- 
GitLab