From 9ca6a78cdff914dfa42f206c792f00036335d13e Mon Sep 17 00:00:00 2001
From: Mathieu Faverge <mathieu.faverge@inria.fr>
Date: Sat, 12 Nov 2016 18:02:40 -0500
Subject: [PATCH] Fix baseval

---
 spm_dofs.c    |  6 +++---
 z_spm_print.c | 36 ++++++++++++++++++------------------
 2 files changed, 21 insertions(+), 21 deletions(-)

diff --git a/spm_dofs.c b/spm_dofs.c
index 3547bd99..8d9fa3cd 100644
--- a/spm_dofs.c
+++ b/spm_dofs.c
@@ -64,14 +64,14 @@ spmDofExtend( const int type,
          * Initialize the dofs array where the degree of freedom of vertex i is
          * dof[i+1] - dof[i]
          */
-        *dofptr = 0;
+        *dofptr = baseval;
         for(i=0; i<spm->n; i++, dofptr++) {
             dofi = 1 + ( rand() % dof );
             dofptr[1] = dofptr[0] + dofi;
         }
 
-        newspm->nexp  = *dofptr;
-        newspm->gNexp = *dofptr;
+        newspm->nexp  = *dofptr - baseval;
+        newspm->gNexp = newspm->nexp;
 
         /**
          * Count the number of non zeroes
diff --git a/z_spm_print.c b/z_spm_print.c
index 5dae4b22..a51561c9 100644
--- a/z_spm_print.c
+++ b/z_spm_print.c
@@ -49,13 +49,13 @@ z_spmCSCPrint( FILE *f, const pastix_spm_t *spm )
         for(j=0; j<spm->n; j++, colptr++)
         {
             dofj = ( spm->dof > 0 ) ? spm->dof     : dofs[j+1] - dofs[j];
-            col  = ( spm->dof > 0 ) ? spm->dof * j : dofs[j];
+            col  = ( spm->dof > 0 ) ? spm->dof * j : dofs[j] - baseval;
 
             for(k=colptr[0]; k<colptr[1]; k++, rowptr++)
             {
                 i = (*rowptr - baseval);
                 dofi = ( spm->dof > 0 ) ? spm->dof : dofs[i+1] - dofs[i];
-                row  = ( spm->dof > 0 ) ? spm->dof * i : dofs[i];
+                row  = ( spm->dof > 0 ) ? spm->dof * i : dofs[i] - baseval;
 
                 if ( spm->layout == PastixColMajor ) {
                     for(jj=0; jj<dofj; jj++)
@@ -93,13 +93,13 @@ z_spmCSCPrint( FILE *f, const pastix_spm_t *spm )
         for(j=0; j<spm->n; j++, colptr++)
         {
             dofj = ( spm->dof > 0 ) ? spm->dof     : dofs[j+1] - dofs[j];
-            col  = ( spm->dof > 0 ) ? spm->dof * j : dofs[j];
+            col  = ( spm->dof > 0 ) ? spm->dof * j : dofs[j] - baseval;
 
             for(k=colptr[0]; k<colptr[1]; k++, rowptr++)
             {
                 i = (*rowptr - baseval);
                 dofi = ( spm->dof > 0 ) ? spm->dof     : dofs[i+1] - dofs[i];
-                row  = ( spm->dof > 0 ) ? spm->dof * i : dofs[i];
+                row  = ( spm->dof > 0 ) ? spm->dof * i : dofs[i] - baseval;
 
                 if ( spm->layout == PastixColMajor ) {
                     for(jj=0; jj<dofj; jj++)
@@ -137,13 +137,13 @@ z_spmCSCPrint( FILE *f, const pastix_spm_t *spm )
         for(j=0; j<spm->n; j++, colptr++)
         {
             dofj = ( spm->dof > 0 ) ? spm->dof     : dofs[j+1] - dofs[j];
-            col  = ( spm->dof > 0 ) ? spm->dof * j : dofs[j];
+            col  = ( spm->dof > 0 ) ? spm->dof * j : dofs[j] - baseval;
 
             for(k=colptr[0]; k<colptr[1]; k++, rowptr++)
             {
                 i = (*rowptr - baseval);
                 dofi = ( spm->dof > 0 ) ? spm->dof     : dofs[i+1] - dofs[i];
-                row  = ( spm->dof > 0 ) ? spm->dof * i : dofs[i];
+                row  = ( spm->dof > 0 ) ? spm->dof * i : dofs[i] - baseval;
 
                 if ( spm->layout == PastixColMajor ) {
                     for(jj=0; jj<dofj; jj++)
@@ -194,13 +194,13 @@ z_spmCSRPrint( FILE *f, const pastix_spm_t *spm )
         for(i=0; i<spm->n; i++, rowptr++)
         {
             dofi = ( spm->dof > 0 ) ? spm->dof     : dofs[i+1] - dofs[i];
-            row  = ( spm->dof > 0 ) ? spm->dof * i : dofs[i];
+            row  = ( spm->dof > 0 ) ? spm->dof * i : dofs[i] - baseval;
 
             for(k=rowptr[0]; k<rowptr[1]; k++, colptr++)
             {
                 j = (*colptr - baseval);
                 dofj = ( spm->dof > 0 ) ? spm->dof     : dofs[j+1] - dofs[j];
-                col  = ( spm->dof > 0 ) ? spm->dof * j : dofs[j];
+                col  = ( spm->dof > 0 ) ? spm->dof * j : dofs[j] - baseval;
 
                 if ( spm->layout == PastixColMajor ) {
                     for(jj=0; jj<dofj; jj++)
@@ -238,13 +238,13 @@ z_spmCSRPrint( FILE *f, const pastix_spm_t *spm )
         for(i=0; i<spm->n; i++, rowptr++)
         {
             dofi = ( spm->dof > 0 ) ? spm->dof     : dofs[i+1] - dofs[i];
-            row  = ( spm->dof > 0 ) ? spm->dof * i : dofs[i];
+            row  = ( spm->dof > 0 ) ? spm->dof * i : dofs[i] - baseval;
 
             for(k=rowptr[0]; k<rowptr[1]; k++, colptr++)
             {
                 j = (*colptr - baseval);
                 dofj = ( spm->dof > 0 ) ? spm->dof     : dofs[j+1] - dofs[j];
-                col  = ( spm->dof > 0 ) ? spm->dof * j : dofs[j];
+                col  = ( spm->dof > 0 ) ? spm->dof * j : dofs[j] - baseval;
 
                 if ( spm->layout == PastixColMajor ) {
                     for(jj=0; jj<dofj; jj++)
@@ -282,13 +282,13 @@ z_spmCSRPrint( FILE *f, const pastix_spm_t *spm )
         for(i=0; i<spm->n; i++, rowptr++)
         {
             dofi = ( spm->dof > 0 ) ? spm->dof     : dofs[i+1] - dofs[i];
-            row  = ( spm->dof > 0 ) ? spm->dof * i : dofs[i];
+            row  = ( spm->dof > 0 ) ? spm->dof * i : dofs[i] - baseval;
 
             for(k=rowptr[0]; k<rowptr[1]; k++, colptr++)
             {
                 j = (*colptr - baseval);
                 dofj = ( spm->dof > 0 ) ? spm->dof     : dofs[j+1] - dofs[j];
-                col  = ( spm->dof > 0 ) ? spm->dof * j : dofs[j];
+                col  = ( spm->dof > 0 ) ? spm->dof * j : dofs[j] - baseval;
 
                 if ( spm->layout == PastixColMajor ) {
                     for(jj=0; jj<dofj; jj++)
@@ -349,9 +349,9 @@ z_spmIJVPrint( FILE *f, const pastix_spm_t *spm )
             }
             else {
                 dofi = dofs[i+1] - dofs[i];
-                row  = dofs[i];
+                row  = dofs[i] - baseval;
                 dofj = dofs[j+1] - dofs[j];
-                col  = dofs[j];
+                col  = dofs[j] - baseval;
             }
 
             if ( spm->layout == PastixColMajor ) {
@@ -399,9 +399,9 @@ z_spmIJVPrint( FILE *f, const pastix_spm_t *spm )
             }
             else {
                 dofi = dofs[i+1] - dofs[i];
-                row  = dofs[i];
+                row  = dofs[i] - baseval;
                 dofj = dofs[j+1] - dofs[j];
-                col  = dofs[j];
+                col  = dofs[j] - baseval;
             }
 
             if ( spm->layout == PastixColMajor ) {
@@ -449,9 +449,9 @@ z_spmIJVPrint( FILE *f, const pastix_spm_t *spm )
             }
             else {
                 dofi = dofs[i+1] - dofs[i];
-                row  = dofs[i];
+                row  = dofs[i] - baseval;
                 dofj = dofs[j+1] - dofs[j];
-                col  = dofs[j];
+                col  = dofs[j] - baseval;
             }
 
             if ( spm->layout == PastixColMajor ) {
-- 
GitLab