[cig-commits] [commit] rajesh-petsc-schur: Changed the shape of PN and slice members of All_variables as part of caps_per_proc removal. Corrected the signatures of compute_nodal_stress, free_STD_mem, allocate_STD_mem, get_STD_topo, get_STD_freesurf, get_CBF_topo, full_exchange_snode_f, regional_exchange_snode_f, sphere_expansion, p_to_nodes (84c9d9b)

cig_noreply at geodynamics.org cig_noreply at geodynamics.org
Wed Nov 5 19:11:13 PST 2014


Repository : https://github.com/geodynamics/citcoms

On branch  : rajesh-petsc-schur
Link       : https://github.com/geodynamics/citcoms/compare/464e1b32299b15819f93efd98d969cddb84dfe51...f97ae655a50bdbd6dac1923a3471ee4dae178fbd

>---------------------------------------------------------------

commit 84c9d9ba99698cfd566c24b81a48b7bd340a7575
Author: Rajesh Kommu <rajesh.kommu at gmail.com>
Date:   Mon Sep 22 15:22:14 2014 -0700

    Changed the shape of PN and slice members of All_variables as part of caps_per_proc removal. Corrected the signatures
    of compute_nodal_stress, free_STD_mem, allocate_STD_mem, get_STD_topo,
    get_STD_freesurf, get_CBF_topo, full_exchange_snode_f,
    regional_exchange_snode_f, sphere_expansion, p_to_nodes


>---------------------------------------------------------------

84c9d9ba99698cfd566c24b81a48b7bd340a7575
 lib/Drive_solvers.c             |   2 +-
 lib/Element_calculations.c      |   2 +-
 lib/Full_parallel_related.c     |  14 +--
 lib/Instructions.c              |  16 ++--
 lib/Nodal_mesh.c                |   8 +-
 lib/Output.c                    |  22 ++---
 lib/Output_gzdir.c              |  24 +++---
 lib/Output_h5.c                 |  22 ++---
 lib/Output_vtk.c                |  10 +--
 lib/Process_buoyancy.c          |  20 ++---
 lib/Regional_parallel_related.c |  12 +--
 lib/Sphere_harmonics.c          |  12 +--
 lib/Topo_gravity.c              | 186 ++++++++++++++++++++--------------------
 lib/global_defs.h               |  16 ++--
 lib/prototypes.h                |  18 ++--
 15 files changed, 192 insertions(+), 192 deletions(-)

diff --git a/lib/Drive_solvers.c b/lib/Drive_solvers.c
index af87a39..e6dcb7c 100644
--- a/lib/Drive_solvers.c
+++ b/lib/Drive_solvers.c
@@ -316,7 +316,7 @@ void general_stokes_solver_pseudo_surf(struct All_variables *E)
   void get_system_viscosity();
   void std_timestep();
   void remove_rigid_rot();
-  void get_STD_freesurf(struct All_variables *, float**);
+  void get_STD_freesurf(struct All_variables *, float*);
 
   double Udot_mag, dUdot_mag;
   int m,count,i;
diff --git a/lib/Element_calculations.c b/lib/Element_calculations.c
index 0a92690..e7c19a1 100644
--- a/lib/Element_calculations.c
+++ b/lib/Element_calculations.c
@@ -1167,7 +1167,7 @@ static void get_elt_tr_pseudo_surf(struct All_variables *E, int bel, int side, d
 				traction[1][a] = 0.0;
 				traction[2][a] = 0.0;
 				traction[3][a] = -1.0*factor*rho*g*(R*R*R)/(eta*kappa)
-					*(E->slice.freesurf[CPPR][nodeas]+E->sphere.cap[CPPR].V[3][nodea]*E->advection.timestep);
+					*(E->slice.freesurf[nodeas]+E->sphere.cap[CPPR].V[3][nodea]*E->advection.timestep);
 				if(E->parallel.me==11 && nodea==3328)
 					fprintf(stderr,"traction=%e vnew=%e timestep=%e coeff=%e\n",traction[3][a],E->sphere.cap[CPPR].V[3][nodea],E->advection.timestep,-1.0*factor*rho*g*(R*R*R)/(eta*kappa));
 				found = 1;
diff --git a/lib/Full_parallel_related.c b/lib/Full_parallel_related.c
index a3f6ca1..b84db3b 100644
--- a/lib/Full_parallel_related.c
+++ b/lib/Full_parallel_related.c
@@ -1171,7 +1171,7 @@ static void exchange_node_f(E, U, lev)
  free((void*) RV);
 }
 
-void full_exchange_snode_f(struct All_variables *E, float **U1, float **U2, int lev)
+void full_exchange_snode_f(struct All_variables *E, float *U1, float *U2, int lev)
  {
 
  int ii,j,k,m,kk,t_cap,idb,msginfo[8];
@@ -1197,9 +1197,9 @@ void full_exchange_snode_f(struct All_variables *E, float **U1, float **U2, int
 
       /* pack */
       for (j=1;j<=E->parallel.NUM_sNODE[lev][CPPR].pass[k];j++)  {
-        S[kk][j-1] = U1[CPPR][ E->parallel.EXCHANGE_sNODE[lev][CPPR][j].pass[k] ];
+        S[kk][j-1] = U1[ E->parallel.EXCHANGE_sNODE[lev][CPPR][j].pass[k] ];
         S[kk][j-1+E->parallel.NUM_sNODE[lev][CPPR].pass[k]]
-                   = U2[CPPR][ E->parallel.EXCHANGE_sNODE[lev][CPPR][j].pass[k] ];
+                   = U2[ E->parallel.EXCHANGE_sNODE[lev][CPPR][j].pass[k] ];
         }
 
       if (E->parallel.PROCESSOR[lev][CPPR].pass[k]!=E->parallel.me) {
@@ -1227,8 +1227,8 @@ void full_exchange_snode_f(struct All_variables *E, float **U1, float **U2, int
       else   {
 	kk=k;
          for (j=1;j<=E->parallel.NUM_sNODE[lev][CPPR].pass[k];j++)     {
-           U1[CPPR][ E->parallel.EXCHANGE_sNODE[lev][CPPR][j].pass[k] ] += S[kk][j-1];
-           U2[CPPR][ E->parallel.EXCHANGE_sNODE[lev][CPPR][j].pass[k] ] +=
+           U1[ E->parallel.EXCHANGE_sNODE[lev][CPPR][j].pass[k] ] += S[kk][j-1];
+           U2[ E->parallel.EXCHANGE_sNODE[lev][CPPR][j].pass[k] ] +=
                                S[kk][j-1+E->parallel.NUM_sNODE[lev][CPPR].pass[k]];
            }
          }
@@ -1243,8 +1243,8 @@ void full_exchange_snode_f(struct All_variables *E, float **U1, float **U2, int
       if (E->parallel.PROCESSOR[lev][CPPR].pass[k]!=E->parallel.me)
 	if (E->parallel.PROCESSOR[lev][CPPR].pass[k]!=-1) {
         for (j=1;j<=E->parallel.NUM_sNODE[lev][CPPR].pass[k];j++)    {
-           U1[CPPR][ E->parallel.EXCHANGE_sNODE[lev][CPPR][j].pass[k] ] += R[kk][j-1];
-           U2[CPPR][ E->parallel.EXCHANGE_sNODE[lev][CPPR][j].pass[k] ] +=
+           U1[ E->parallel.EXCHANGE_sNODE[lev][CPPR][j].pass[k] ] += R[kk][j-1];
+           U2[ E->parallel.EXCHANGE_sNODE[lev][CPPR][j].pass[k] ] +=
                               R[kk][j-1+E->parallel.NUM_sNODE[lev][CPPR].pass[k]];
            }
 	}
diff --git a/lib/Instructions.c b/lib/Instructions.c
index d14164c..3dc1847 100644
--- a/lib/Instructions.c
+++ b/lib/Instructions.c
@@ -953,7 +953,7 @@ void allocate_common_vars(E)
 
   E->P        = (double *) malloc(npno*sizeof(double));
   E->T        = (double *) malloc((nno+1)*sizeof(double));
-  E->NP[CPPR]       = (float *) malloc((nno+1)*sizeof(float));
+  E->NP       = (float *) malloc((nno+1)*sizeof(float));
   E->buoyancy[CPPR] = (double *) malloc((nno+1)*sizeof(double));
 
   E->gstress[CPPR] = (float *) malloc((6*nno+1)*sizeof(float));
@@ -963,14 +963,14 @@ void allocate_common_vars(E)
   for(i=1;i<=E->mesh.nsd;i++)
       E->sphere.cap[CPPR].TB[i] = (float *)  malloc((nno+1)*sizeof(float));
 
-  E->slice.tpg[CPPR]      = (float *)malloc((nsf+2)*sizeof(float));
-  E->slice.tpgb[CPPR]     = (float *)malloc((nsf+2)*sizeof(float));
-  E->slice.divg[CPPR]     = (float *)malloc((nsf+2)*sizeof(float));
-  E->slice.vort[CPPR]     = (float *)malloc((nsf+2)*sizeof(float));
-  E->slice.shflux[CPPR]    = (float *)malloc((nsf+2)*sizeof(float));
-  E->slice.bhflux[CPPR]    = (float *)malloc((nsf+2)*sizeof(float));
+  E->slice.tpg      = (float *)malloc((nsf+2)*sizeof(float));
+  E->slice.tpgb     = (float *)malloc((nsf+2)*sizeof(float));
+  E->slice.divg     = (float *)malloc((nsf+2)*sizeof(float));
+  E->slice.vort     = (float *)malloc((nsf+2)*sizeof(float));
+  E->slice.shflux    = (float *)malloc((nsf+2)*sizeof(float));
+  E->slice.bhflux    = (float *)malloc((nsf+2)*sizeof(float));
   /*  if(E->mesh.topvbc==2 && E->control.pseudo_free_surf) */
-  E->slice.freesurf[CPPR]    = (float *)malloc((nsf+2)*sizeof(float));
+  E->slice.freesurf    = (float *)malloc((nsf+2)*sizeof(float));
 
   E->mat[CPPR] = (int *) malloc((nel+2)*sizeof(int));
   E->VIP[CPPR] = (float *) malloc((nel+2)*sizeof(float));
diff --git a/lib/Nodal_mesh.c b/lib/Nodal_mesh.c
index aec41b7..b244552 100644
--- a/lib/Nodal_mesh.c
+++ b/lib/Nodal_mesh.c
@@ -192,24 +192,24 @@ void velo_from_element_d(E,VV,el,sphere_key)
 void p_to_nodes(E,P,PN,lev)
      struct All_variables *E;
      double *P;
-     float **PN;
+     float *PN;
      int lev;
 
 { int e,element,node,j,m;
 
     for(node=1;node<=E->lmesh.NNO[lev];node++)
-      PN[CPPR][node] =  0.0;
+      PN[node] =  0.0;
 
     for(element=0;element<E->lmesh.NEL[lev];element++)
        for(j=1;j<=enodes[E->mesh.nsd];j++)  {
      	  node = E->IEN[lev][CPPR][element+1].node[j];
-    	  PN[CPPR][node] += P[element] * E->TWW[lev][CPPR][element+1].node[j] ;
+    	  PN[node] += P[element] * E->TWW[lev][CPPR][element+1].node[j] ;
     	  }
 
    (E->exchange_node_f)(E,PN,lev);
 
    for(node=1;node<=E->lmesh.NNO[lev];node++)
-      PN[CPPR][node] *= E->MASS[lev][node];
+      PN[node] *= E->MASS[lev][node];
 }
 
 
diff --git a/lib/Output.c b/lib/Output.c
index 8a9a54a..aa0eae1 100644
--- a/lib/Output.c
+++ b/lib/Output.c
@@ -55,9 +55,9 @@ void output_heating(struct All_variables *, int);
 
 extern void parallel_process_termination();
 extern void heat_flux(struct All_variables *);
-extern void get_STD_topo(struct All_variables *, float**, float**,
-                         float**, float**, int);
-extern void get_CBF_topo(struct All_variables *, float**, float**);
+extern void get_STD_topo(struct All_variables *, float*, float*,
+                         float*, float*, int);
+extern void get_CBF_topo(struct All_variables *, float*, float*);
 #ifdef CITCOM_ALLOW_ANISOTROPIC_VISC
 #include "anisotropic_viscosity.h"
 void output_avisc(struct All_variables *, int);
@@ -384,15 +384,15 @@ void output_surf_botm(struct All_variables *E, int cycles)
 
         /* choose either STD topo or pseudo-free-surf topo */
         if(E->control.pseudo_free_surf)
-            topo = E->slice.freesurf[CPPR];
+            topo = E->slice.freesurf;
         else
-            topo = E->slice.tpg[CPPR];
+            topo = E->slice.tpg;
 
         fprintf(fp2,"%3d %7d\n",CPPR,E->lmesh.nsf);
         for(i=1;i<=E->lmesh.nsf;i++)   {
             s = i*E->lmesh.noz;
             fprintf(fp2,"%.4e %.4e %.4e %.4e\n",
-		    topo[i],E->slice.shflux[CPPR][i],E->sphere.cap[CPPR].V[1][s],E->sphere.cap[CPPR].V[2][s]);
+		    topo[i],E->slice.shflux[i],E->sphere.cap[CPPR].V[1][s],E->sphere.cap[CPPR].V[2][s]);
         }
     fclose(fp2);
   }
@@ -407,7 +407,7 @@ void output_surf_botm(struct All_variables *E, int cycles)
       for(i=1;i<=E->lmesh.nsf;i++)  {
         s = (i-1)*E->lmesh.noz + 1;
         fprintf(fp2,"%.4e %.4e %.4e %.4e\n",
-		E->slice.tpgb[CPPR][i],E->slice.bhflux[CPPR][i],E->sphere.cap[CPPR].V[1][s],E->sphere.cap[CPPR].V[2][s]);
+		E->slice.tpgb[i],E->slice.bhflux[i],E->sphere.cap[CPPR].V[1][s],E->sphere.cap[CPPR].V[2][s]);
       }
     fclose(fp2);
   }
@@ -463,11 +463,11 @@ void output_stress(struct All_variables *E, int cycles)
   void allocate_STD_mem();
   void compute_nodal_stress();
   void free_STD_mem();
-  float *SXX[NCS],*SYY[NCS],*SXY[NCS],*SXZ[NCS],*SZY[NCS],*SZZ[NCS];
-  float *divv[NCS],*vorv[NCS];
+  float *SXX,*SYY,*SXY,*SXZ,*SZY,*SZZ;
+  float *divv,*vorv;
   /*  */
   if(E->control.use_cbf_topo)	{/* for CBF topo, stress will not have been computed */
-    allocate_STD_mem(E, SXX, SYY, SZZ, SXY, SXZ, SZY, divv, vorv);
+    allocate_STD_mem(E, &SXX, &SYY, &SZZ, &SXY, &SXZ, &SZY, &divv, &vorv);
     compute_nodal_stress(E, SXX, SYY, SZZ, SXY, SXZ, SZY, divv, vorv);
     free_STD_mem(E, SXX, SYY, SZZ, SXY, SXZ, SZY, divv, vorv);
   }
@@ -616,7 +616,7 @@ void output_pressure(struct All_variables *E, int cycles)
 
   fprintf(fp1,"%3d %7d\n",CPPR,E->lmesh.nno);
   for(i=1;i<=E->lmesh.nno;i++)
-    fprintf(fp1,"%.6e\n",E->NP[CPPR][i]);
+    fprintf(fp1,"%.6e\n",E->NP[i]);
 
   fclose(fp1);
 }
diff --git a/lib/Output_gzdir.c b/lib/Output_gzdir.c
index f18ac30..6d37629 100644
--- a/lib/Output_gzdir.c
+++ b/lib/Output_gzdir.c
@@ -126,9 +126,9 @@ extern void temperatures_conform_bcs(struct All_variables *);
 extern void myerror(struct All_variables *,char *);
 extern void mkdatadir(const char *);
 extern void heat_flux(struct All_variables *);
-extern void get_STD_topo(struct All_variables *, float**, float**,
-                         float**, float**, int);
-extern void get_CBF_topo(struct All_variables *, float**, float**);
+extern void get_STD_topo(struct All_variables *, float*, float*,
+                         float*, float*, int);
+extern void get_CBF_topo(struct All_variables *, float*, float*);
 
 /**********************************************************************/
 
@@ -821,15 +821,15 @@ void gzdir_output_surf_botm(struct All_variables *E, int cycles)
 
         /* choose either STD topo or pseudo-free-surf topo */
         if(E->control.pseudo_free_surf)
-            topo = E->slice.freesurf[CPPR];
+            topo = E->slice.freesurf;
         else
-            topo = E->slice.tpg[CPPR];
+            topo = E->slice.tpg;
 
         gzprintf(fp2,"%3d %7d\n",CPPR,E->lmesh.nsf);
         for(i=1;i<=E->lmesh.nsf;i++)   {
             s = i*E->lmesh.noz;
             gzprintf(fp2,"%.4e %.4e %.4e %.4e\n",
-		     topo[i],E->slice.shflux[CPPR][i],E->sphere.cap[CPPR].V[1][s],E->sphere.cap[CPPR].V[2][s]);
+		     topo[i],E->slice.shflux[i],E->sphere.cap[CPPR].V[1][s],E->sphere.cap[CPPR].V[2][s]);
         }
     gzclose(fp2);
   }
@@ -844,7 +844,7 @@ void gzdir_output_surf_botm(struct All_variables *E, int cycles)
       for(i=1;i<=E->lmesh.nsf;i++)  {
         s = (i-1)*E->lmesh.noz + 1;
         gzprintf(fp2,"%.4e %.4e %.4e %.4e\n",
-		 E->slice.tpgb[CPPR][i],E->slice.bhflux[CPPR][i],E->sphere.cap[CPPR].V[1][s],E->sphere.cap[CPPR].V[2][s]);
+		 E->slice.tpgb[i],E->slice.bhflux[i],E->sphere.cap[CPPR].V[1][s],E->sphere.cap[CPPR].V[2][s]);
       }
     gzclose(fp2);
   }
@@ -901,11 +901,11 @@ void gzdir_output_stress(struct All_variables *E, int cycles)
   void allocate_STD_mem();
   void compute_nodal_stress();
   void free_STD_mem();
-  float *SXX[NCS],*SYY[NCS],*SXY[NCS],*SXZ[NCS],*SZY[NCS],*SZZ[NCS];
-  float *divv[NCS],*vorv[NCS];
+  float *SXX,*SYY,*SXY,*SXZ,*SZY,*SZZ;
+  float *divv,*vorv;
   /*  */
   if(E->control.use_cbf_topo)	{/* for CBF topo, stress will not have been computed */
-    allocate_STD_mem(E, SXX, SYY, SZZ, SXY, SXZ, SZY, divv, vorv);
+    allocate_STD_mem(E, &SXX, &SYY, &SZZ, &SXY, &SXZ, &SZY, &divv, &vorv);
     compute_nodal_stress(E, SXX, SYY, SZZ, SXY, SXZ, SZY, divv, vorv);
     free_STD_mem(E, SXX, SYY, SZZ, SXY, SXZ, SZY, divv, vorv);
   }
@@ -1001,7 +1001,7 @@ void gzdir_output_pressure(struct All_variables *E, int cycles)
     gzprintf(gz1,"%d %d %.5e\n",cycles,E->lmesh.nno,E->monitor.elapsed_time);
       gzprintf(gz1,"%3d %7d\n",CPPR,E->lmesh.nno);
       for(i=1;i<=E->lmesh.nno;i++)
-	gzprintf(gz1,"%.6e\n",E->NP[CPPR][i]);
+	gzprintf(gz1,"%.6e\n",E->NP[i]);
     gzclose(gz1);
   }else{/* new legacy VTK */
     if(E->output.gzdir.vtk_io == 2)
@@ -1016,7 +1016,7 @@ void gzdir_output_pressure(struct All_variables *E, int cycles)
       fp1 = output_open(output_file,"a");
     }
       for(i=1;i<=E->lmesh.nno;i++){
-	ftmp = E->NP[CPPR][i];
+	ftmp = E->NP[i];
 	if(be_write_float_to_file(&ftmp,1,fp1)!=1)BE_WERROR;
       }
     fclose(fp1);fflush(fp1);		/* close file and flush buffer */
diff --git a/lib/Output_h5.c b/lib/Output_h5.c
index ce39b50..3b01e56 100644
--- a/lib/Output_h5.c
+++ b/lib/Output_h5.c
@@ -135,8 +135,8 @@ void h5output_time(struct All_variables *, int);
 
 extern void parallel_process_termination();
 extern void heat_flux(struct All_variables *);
-extern void get_STD_topo(struct All_variables *, float**, float**, float**, float**, int);
-extern void get_CBF_topo(struct All_variables *, float**, float**);
+extern void get_STD_topo(struct All_variables *, float*, float*, float*, float*, int);
+extern void get_CBF_topo(struct All_variables *, float*, float*);
 extern void compute_geoid(struct All_variables *);
 
 
@@ -632,7 +632,7 @@ void h5output_pressure(struct All_variables *E, int cycles)
             {
                 n = k + i*nz + j*nz*nx;
                 m = k + j*mz + i*mz*my;
-                field->data[m] = E->NP[CPPR][n+1];
+                field->data[m] = E->NP[n+1];
             }
         }
     }
@@ -661,12 +661,12 @@ void h5output_stress(struct All_variables *E, int cycles)
     void allocate_STD_mem();
     void compute_nodal_stress();
     void free_STD_mem();
-    float *SXX[NCS],*SYY[NCS],*SXY[NCS],*SXZ[NCS],*SZY[NCS],*SZZ[NCS];
-    float *divv[NCS],*vorv[NCS];
+    float *SXX,*SYY,*SXY,*SXZ,*SZY,*SZZ;
+    float *divv,*vorv;
     /*  */
     
     if(E->control.use_cbf_topo)	{/* for CBF topo, stress will not have been computed */
-      allocate_STD_mem(E, SXX, SYY, SZZ, SXY, SXZ, SZY, divv, vorv);
+      allocate_STD_mem(E, &SXX, &SYY, &SZZ, &SXY, &SXZ, &SZY, &divv, &vorv);
       compute_nodal_stress(E, SXX, SYY, SZZ, SXY, SXZ, SZY, divv, vorv);
       free_STD_mem(E, SXX, SYY, SZZ, SXY, SXZ, SZY, divv, vorv);
     }
@@ -866,7 +866,7 @@ void h5output_surf_botm(struct All_variables *E, int cycles)
             {
                 n = k + i*nz + j*nz*nx;
                 m = j + i*my;
-                scalar->data[m] = E->slice.shflux[CPPR][n+1];
+                scalar->data[m] = E->slice.shflux[n+1];
             }
         }
 
@@ -876,9 +876,9 @@ void h5output_surf_botm(struct All_variables *E, int cycles)
 
         /* choose either STD topo or pseudo-free-surf topo */
         if (E->control.pseudo_free_surf)
-            topo = E->slice.freesurf[CPPR];
+            topo = E->slice.freesurf;
         else
-            topo = E->slice.tpg[CPPR];
+            topo = E->slice.tpg;
 
         /* topography data */
         for(i = 0; i < mx; i++)
@@ -936,7 +936,7 @@ void h5output_surf_botm(struct All_variables *E, int cycles)
             {
                 n = k + i*nz + j*nz*nx;
                 m = j + i*my;
-                scalar->data[m] = E->slice.bhflux[CPPR][n+1];
+                scalar->data[m] = E->slice.bhflux[n+1];
             }
         }
         dataset = H5Dopen(file_id, "/botm/heatflux");
@@ -944,7 +944,7 @@ void h5output_surf_botm(struct All_variables *E, int cycles)
         status = H5Dclose(dataset);
 
         /* topography data */
-        topo = E->slice.tpg[CPPR];
+        topo = E->slice.tpg;
         for(i = 0; i < mx; i++)
         {
             for(j = 0; j < my; j++)
diff --git a/lib/Output_vtk.c b/lib/Output_vtk.c
index 6859513..c249dac 100644
--- a/lib/Output_vtk.c
+++ b/lib/Output_vtk.c
@@ -209,11 +209,11 @@ static void vtk_output_stress(struct All_variables *E, FILE *fp)
     void allocate_STD_mem();
     void compute_nodal_stress();
     void free_STD_mem();
-    float *SXX[NCS],*SYY[NCS],*SXY[NCS],*SXZ[NCS],*SZY[NCS],*SZZ[NCS];
-    float *divv[NCS],*vorv[NCS];
+    float *SXX,*SYY,*SXY,*SXZ,*SZY,*SZZ;
+    float *divv,*vorv;
 
     /* those are sorted like stt spp srr stp str srp  */
-    allocate_STD_mem(E, SXX, SYY, SZZ, SXY, SXZ, SZY, divv, vorv);
+    allocate_STD_mem(E, &SXX, &SYY, &SZZ, &SXY, &SXZ, &SZY, &divv, &vorv);
     compute_nodal_stress(E, SXX, SYY, SZZ, SXY, SXZ, SZY, divv, vorv);
     free_STD_mem(E, SXX, SYY, SZZ, SXY, SXZ, SZY, divv, vorv);
 
@@ -282,9 +282,9 @@ static void vtk_output_surf(struct All_variables *E,  FILE *fp, int cycles)
 
                 /* choose either STD topo or pseudo-free-surf topo */
                 if(E->control.pseudo_free_surf)
-                floattopo[(CPPR-1)*E->lmesh.nno + i*E->lmesh.noz-1] = E->slice.freesurf[CPPR][i];
+                floattopo[(CPPR-1)*E->lmesh.nno + i*E->lmesh.noz-1] = E->slice.freesurf[i];
                 else
-                floattopo[(CPPR-1)*E->lmesh.nno + i*E->lmesh.noz-1] = E->slice.tpg[CPPR][i];
+                floattopo[(CPPR-1)*E->lmesh.nno + i*E->lmesh.noz-1] = E->slice.tpg[i];
 
             }
         }
diff --git a/lib/Process_buoyancy.c b/lib/Process_buoyancy.c
index 52563cd..eed76f1 100644
--- a/lib/Process_buoyancy.c
+++ b/lib/Process_buoyancy.c
@@ -120,26 +120,26 @@ void heat_flux(E)
 
   if (E->parallel.me_loc[3]==E->parallel.nprocz-1)
     for(i=1;i<=E->lmesh.nsf;i++)
-      E->slice.shflux[CPPR][i]=2*flux[E->surf_node[CPPR][i]]-flux[E->surf_node[CPPR][i]-1];
+      E->slice.shflux[i]=2*flux[E->surf_node[CPPR][i]]-flux[E->surf_node[CPPR][i]-1];
 
   if (E->parallel.me_loc[3]==0)
     for(i=1;i<=E->lmesh.nsf;i++)
-      E->slice.bhflux[CPPR][i] = 2*flux[E->surf_node[CPPR][i]-E->lmesh.noz+1]
+      E->slice.bhflux[i] = 2*flux[E->surf_node[CPPR][i]-E->lmesh.noz+1]
                               - flux[E->surf_node[CPPR][i]-E->lmesh.noz+2];
 
     for(e=1;e<=E->lmesh.snel;e++) {
-         uT =(E->slice.shflux[CPPR][E->sien[e].node[1]] +
-              E->slice.shflux[CPPR][E->sien[e].node[2]] +
-              E->slice.shflux[CPPR][E->sien[e].node[3]] +
-              E->slice.shflux[CPPR][E->sien[e].node[4]])*0.25;
+         uT =(E->slice.shflux[E->sien[e].node[1]] +
+              E->slice.shflux[E->sien[e].node[2]] +
+              E->slice.shflux[E->sien[e].node[3]] +
+              E->slice.shflux[E->sien[e].node[4]])*0.25;
          el = e*E->lmesh.elz;
          sum_h[0] += uT*E->eco[el].area;
          sum_h[1] += E->eco[el].area;
 
-         uT =(E->slice.bhflux[CPPR][E->sien[e].node[1]] +
-              E->slice.bhflux[CPPR][E->sien[e].node[2]] +
-              E->slice.bhflux[CPPR][E->sien[e].node[3]] +
-              E->slice.bhflux[CPPR][E->sien[e].node[4]])*0.25;
+         uT =(E->slice.bhflux[E->sien[e].node[1]] +
+              E->slice.bhflux[E->sien[e].node[2]] +
+              E->slice.bhflux[E->sien[e].node[3]] +
+              E->slice.bhflux[E->sien[e].node[4]])*0.25;
          el = (e-1)*E->lmesh.elz+1;
          sum_h[2] += uT*E->eco[el].area;
          sum_h[3] += E->eco[el].area;
diff --git a/lib/Regional_parallel_related.c b/lib/Regional_parallel_related.c
index f237376..3dec0f0 100644
--- a/lib/Regional_parallel_related.c
+++ b/lib/Regional_parallel_related.c
@@ -825,8 +825,8 @@ static void exchange_node_f(E, U, lev)
 /* ================================================ */
 /* ================================================ */
 
-void regional_exchange_snode_f(struct All_variables *E, float **U1,
-                               float **U2, int lev)
+void regional_exchange_snode_f(struct All_variables *E, float *U1,
+                               float *U2, int lev)
  {
 
  int ii,j,k,m,kk,t_cap,idb,msginfo[8];
@@ -844,9 +844,9 @@ void regional_exchange_snode_f(struct All_variables *E, float **U1,
    for (k=1;k<=E->parallel.sTNUM_PASS[lev][CPPR];k++)  {
 
      for (j=1;j<=E->parallel.NUM_sNODE[lev][CPPR].pass[k];j++)  {
-       S[k][j-1] = U1[CPPR][ E->parallel.EXCHANGE_sNODE[lev][CPPR][j].pass[k] ];
+       S[k][j-1] = U1[ E->parallel.EXCHANGE_sNODE[lev][CPPR][j].pass[k] ];
        S[k][j-1+E->parallel.NUM_sNODE[lev][CPPR].pass[k]]
-	 = U2[CPPR][ E->parallel.EXCHANGE_sNODE[lev][CPPR][j].pass[k] ];
+	 = U2[ E->parallel.EXCHANGE_sNODE[lev][CPPR][j].pass[k] ];
      }
 
      MPI_Sendrecv(S[k],2*E->parallel.NUM_sNODE[lev][CPPR].pass[k],MPI_FLOAT,
@@ -856,8 +856,8 @@ void regional_exchange_snode_f(struct All_variables *E, float **U1,
 		  E->parallel.world,&status);
 
      for (j=1;j<=E->parallel.NUM_sNODE[lev][CPPR].pass[k];j++)   {
-       U1[CPPR][ E->parallel.EXCHANGE_sNODE[lev][CPPR][j].pass[k] ] += R[k][j-1];
-       U2[CPPR][ E->parallel.EXCHANGE_sNODE[lev][CPPR][j].pass[k] ] +=
+       U1[ E->parallel.EXCHANGE_sNODE[lev][CPPR][j].pass[k] ] += R[k][j-1];
+       U2[ E->parallel.EXCHANGE_sNODE[lev][CPPR][j].pass[k] ] +=
 	 R[k][j-1+E->parallel.NUM_sNODE[lev][CPPR].pass[k]];
      }
 
diff --git a/lib/Sphere_harmonics.c b/lib/Sphere_harmonics.c
index 2f99c7a..63e6858 100644
--- a/lib/Sphere_harmonics.c
+++ b/lib/Sphere_harmonics.c
@@ -100,7 +100,7 @@ double modified_plgndr_a(int l, int m, double t)
    ========================================================= */
 void sphere_expansion(E,TG,sphc,sphs)
      struct All_variables *E;
-     float **TG,*sphc,*sphs;
+     float *TG,*sphc,*sphs;
 {
     int el,nint,d,p,i,m,j,es,mm,ll,rand();
     void sum_across_surf_sph1();
@@ -120,12 +120,12 @@ void sphere_expansion(E,TG,sphc,sphs)
                     for(nint=1;nint<=onedvpoints[E->mesh.nsd];nint++)   {
                         for(d=1;d<=onedvpoints[E->mesh.nsd];d++)   {
                             j = E->sien[es].node[d];
-                            sphc[p] += TG[CPPR][E->sien[es].node[d]]
+                            sphc[p] += TG[E->sien[es].node[d]]
                                 * E->sphere.tablesplm[CPPR][j][p]
                                 * E->sphere.tablescosf[CPPR][j][mm]
                                 * E->M.vpt[GMVINDEX(d,nint)]
                                 * E->surf_det[CPPR][nint][es];
-                            sphs[p] += TG[CPPR][E->sien[es].node[d]]
+                            sphs[p] += TG[E->sien[es].node[d]]
                                 * E->sphere.tablesplm[CPPR][j][p]
                                 * E->sphere.tablessinf[CPPR][j][mm]
                                 * E->M.vpt[GMVINDEX(d,nint)]
@@ -148,9 +148,9 @@ void debug_sphere_expansion(struct All_variables *E)
      */
     int m, i, j, k, p, node;
     int ll, mm;
-    float *TT[NCS], *sph_harm[2];
+    float *TT, *sph_harm[2];
 
-    TT[CPPR] = (float *) malloc ((E->lmesh.nsf+1)*sizeof(float));
+    TT = (float *) malloc ((E->lmesh.nsf+1)*sizeof(float));
 
     /* sin coeff */
     sph_harm[0] = (float*)malloc(E->sphere.hindice*sizeof(float));
@@ -162,7 +162,7 @@ void debug_sphere_expansion(struct All_variables *E)
                 for(j=1;j<=E->lmesh.nox;j++)  {
                     node= k + (j-1)*E->lmesh.noz + (i-1)*E->lmesh.nox*E->lmesh.noz;
                     p = j + (i-1)*E->lmesh.nox;
-                    TT[CPPR][p] = E->T[node];
+                    TT[p] = E->T[node];
                 }
 
         /* expand TT into spherical harmonics */
diff --git a/lib/Topo_gravity.c b/lib/Topo_gravity.c
index 160a35b..c42c69b 100644
--- a/lib/Topo_gravity.c
+++ b/lib/Topo_gravity.c
@@ -31,7 +31,7 @@
 #include "global_defs.h"
 
 void myerror(struct All_variables *, char *);
-void sphere_expansion(struct All_variables *, float **, float *, float *);
+void sphere_expansion(struct All_variables *, float *, float *, float *);
 void sum_across_depth_sph1(struct All_variables *, float *, float *);
 void broadcast_vertical(struct All_variables *, float *, float *, int);
 long double lg_pow(long double, int);
@@ -40,13 +40,13 @@ void allocate_STD_mem(struct All_variables *E,
                       float** , float** , float** ,
                       float** , float** );
 void free_STD_mem(struct All_variables *E,
-                  float** , float** , float** ,
-                  float** , float** , float** ,
-                  float** , float** );
+                  float* , float* , float* ,
+                  float* , float* , float* ,
+                  float* , float* );
 void compute_nodal_stress(struct All_variables *,
-                          float** , float** , float** ,
-                          float** , float** , float** ,
-                          float** , float** );
+                          float* , float* , float* ,
+                          float* , float* , float* ,
+                          float* , float* );
 void stress_conform_bcs(struct All_variables *);
 #ifdef CITCOM_ALLOW_ANISOTROPIC_VISC
 #include "anisotropic_viscosity.h"
@@ -65,8 +65,8 @@ removed, make sure to recompute in output routines
 
 void get_STD_topo(E,tpg,tpgb,divg,vort,ii)
     struct All_variables *E;
-    float **tpg,**tpgb;
-    float **divg,**vort;
+    float *tpg,*tpgb;
+    float *divg,*vort;
     int ii;
 {
     void allocate_STD_mem();
@@ -75,11 +75,11 @@ void get_STD_topo(E,tpg,tpgb,divg,vort,ii)
     //void get_surf_stress();
 
     int node,snode,m;
-    float *SXX[NCS],*SYY[NCS],*SXY[NCS],*SXZ[NCS],*SZY[NCS],*SZZ[NCS];
-    float *divv[NCS],*vorv[NCS];
+    float *SXX,*SYY,*SXY,*SXZ,*SZY,*SZZ;
+    float *divv,*vorv;
     float topo_scaling1, topo_scaling2;
 
-    allocate_STD_mem(E, SXX, SYY, SZZ, SXY, SXZ, SZY, divv, vorv);
+    allocate_STD_mem(E, &SXX, &SYY, &SZZ, &SXY, &SXZ, &SZY, &divv, &vorv);
 
     /* this one is for szz */
     compute_nodal_stress(E, SXX, SYY, SZZ, SXY, SXZ, SZY, divv, vorv);
@@ -93,27 +93,27 @@ void get_STD_topo(E,tpg,tpgb,divg,vort,ii)
 
      for(snode=1;snode<=E->lmesh.nsf;snode++)   {
         node = E->surf_node[CPPR][snode];
-        tpg[CPPR][snode]  = -2*SZZ[CPPR][node]               + SZZ[CPPR][node-1];
-        tpgb[CPPR][snode] =  2*SZZ[CPPR][node-E->lmesh.noz+1]- SZZ[CPPR][node-E->lmesh.noz+2];
+        tpg[snode]  = -2*SZZ[node]               + SZZ[node-1];
+        tpgb[snode] =  2*SZZ[node-E->lmesh.noz+1]- SZZ[node-E->lmesh.noz+2];
 
-        tpg[CPPR][snode]  =  tpg[CPPR][snode] *topo_scaling1;
-        tpgb[CPPR][snode]  = tpgb[CPPR][snode]*topo_scaling2;
+        tpg[snode]  =  tpg[snode] *topo_scaling1;
+        tpgb[snode]  = tpgb[snode]*topo_scaling2;
 
-        divg[CPPR][snode] = 2*divv[CPPR][node]-divv[CPPR][node-1];
-        vort[CPPR][snode] = 2*vorv[CPPR][node]-vorv[CPPR][node-1];
+        divg[snode] = 2*divv[node]-divv[node-1];
+        vort[snode] = 2*vorv[node]-vorv[node-1];
      }
 
    free_STD_mem(E, SXX, SYY, SZZ, SXY, SXZ, SZY, divv, vorv);
 }
 
-void get_STD_freesurf(struct All_variables *E,float **freesurf)
+void get_STD_freesurf(struct All_variables *E,float *freesurf)
 {
         int node,snode,m;
 
         if (E->parallel.me_loc[3]==E->parallel.nprocz-1)
           for(snode=1;snode<=E->lmesh.nsf;snode++) {
             node = E->surf_node[CPPR][snode];
-            freesurf[CPPR][snode] += E->sphere.cap[CPPR].V[3][node]*E->advection.timestep;
+            freesurf[snode] += E->sphere.cap[CPPR].V[3][node]*E->advection.timestep;
           }
 }
 
@@ -125,47 +125,47 @@ void allocate_STD_mem(struct All_variables *E,
 {
   int m, i;
 
-    SXX[CPPR] = (float *)malloc((E->lmesh.nno+1)*sizeof(float));
-    SYY[CPPR] = (float *)malloc((E->lmesh.nno+1)*sizeof(float));
-    SXY[CPPR] = (float *)malloc((E->lmesh.nno+1)*sizeof(float));
-    SXZ[CPPR] = (float *)malloc((E->lmesh.nno+1)*sizeof(float));
-    SZY[CPPR] = (float *)malloc((E->lmesh.nno+1)*sizeof(float));
-    SZZ[CPPR] = (float *)malloc((E->lmesh.nno+1)*sizeof(float));
-    divv[CPPR] = (float *)malloc((E->lmesh.nno+1)*sizeof(float));
-    vorv[CPPR] = (float *)malloc((E->lmesh.nno+1)*sizeof(float));
+    *SXX = (float *)malloc((E->lmesh.nno+1)*sizeof(float));
+    *SYY = (float *)malloc((E->lmesh.nno+1)*sizeof(float));
+    *SXY = (float *)malloc((E->lmesh.nno+1)*sizeof(float));
+    *SXZ = (float *)malloc((E->lmesh.nno+1)*sizeof(float));
+    *SZY = (float *)malloc((E->lmesh.nno+1)*sizeof(float));
+    *SZZ = (float *)malloc((E->lmesh.nno+1)*sizeof(float));
+    *divv = (float *)malloc((E->lmesh.nno+1)*sizeof(float));
+    *vorv = (float *)malloc((E->lmesh.nno+1)*sizeof(float));
 
     for(i=1;i<=E->lmesh.nno;i++) {
-      SZZ[CPPR][i] = 0.0;
-      SXX[CPPR][i] = 0.0;
-      SYY[CPPR][i] = 0.0;
-      SXY[CPPR][i] = 0.0;
-      SXZ[CPPR][i] = 0.0;
-      SZY[CPPR][i] = 0.0;
-      divv[CPPR][i] = 0.0;
-      vorv[CPPR][i] = 0.0;
+      (*SZZ)[i] = 0.0;
+      (*SXX)[i] = 0.0;
+      (*SYY)[i] = 0.0;
+      (*SXY)[i] = 0.0;
+      (*SXZ)[i] = 0.0;
+      (*SZY)[i] = 0.0;
+      (*divv)[i] = 0.0;
+      (*vorv)[i] = 0.0;
     }
 }
 
 
 void free_STD_mem(struct All_variables *E,
-                  float** SXX, float** SYY, float** SZZ,
-                  float** SXY, float** SXZ, float** SZY,
-                  float** divv, float** vorv)
+                  float* SXX, float* SYY, float* SZZ,
+                  float* SXY, float* SXZ, float* SZY,
+                  float* divv, float* vorv)
 {
-    free((void *)SXX[CPPR]);
-    free((void *)SYY[CPPR]);
-    free((void *)SXY[CPPR]);
-    free((void *)SXZ[CPPR]);
-    free((void *)SZY[CPPR]);
-    free((void *)SZZ[CPPR]);
-    free((void *)divv[CPPR]);
-    free((void *)vorv[CPPR]);
+    free((void *)SXX);
+    free((void *)SYY);
+    free((void *)SXY);
+    free((void *)SXZ);
+    free((void *)SZY);
+    free((void *)SZZ);
+    free((void *)divv);
+    free((void *)vorv);
 }
 
 void compute_nodal_stress(struct All_variables *E,
-                          float** SXX, float** SYY, float** SZZ,
-                          float** SXY, float** SXZ, float** SZY,
-                          float** divv, float** vorv)
+                          float* SXX, float* SYY, float* SZZ,
+                          float* SXY, float* SXZ, float* SZY,
+                          float* divv, float* vorv)
 {
   void get_rtf_at_vpts();
   void velo_from_element();
@@ -379,14 +379,14 @@ void compute_nodal_stress(struct All_variables *E,
 
       for(i=1;i<=ends;i++) {
         node = E->ien[e].node[i]; /* assign to global nodes */
-        SZZ[CPPR][node] += tww[i] * Szz;
-        SXX[CPPR][node] += tww[i] * Sxx;
-        SYY[CPPR][node] += tww[i] * Syy;
-        SXY[CPPR][node] += tww[i] * Sxy;
-        SXZ[CPPR][node] += tww[i] * Sxz;
-        SZY[CPPR][node] += tww[i] * Szy;
-        divv[CPPR][node]+= tww[i] * div;
-        vorv[CPPR][node]+= tww[i] * vor;
+        SZZ[node] += tww[i] * Szz;
+        SXX[node] += tww[i] * Sxx;
+        SYY[node] += tww[i] * Syy;
+        SXY[node] += tww[i] * Sxy;
+        SXZ[node] += tww[i] * Sxz;
+        SZY[node] += tww[i] * Szy;
+        divv[node]+= tww[i] * div;
+        vorv[node]+= tww[i] * vor;
       }
 
     }    /* end for el */
@@ -404,26 +404,26 @@ void compute_nodal_stress(struct All_variables *E,
 
     for(node=1;node<=E->lmesh.nno;node++)   {
       mass_fac = E->Mass[CPPR][node]*stress_scaling;
-      SZZ[CPPR][node] *= mass_fac;
-      SXX[CPPR][node] *= mass_fac;
-      SYY[CPPR][node] *= mass_fac;
-      SXY[CPPR][node] *= mass_fac;
-      SXZ[CPPR][node] *= mass_fac;
-      SZY[CPPR][node] *= mass_fac;
+      SZZ[node] *= mass_fac;
+      SXX[node] *= mass_fac;
+      SYY[node] *= mass_fac;
+      SXY[node] *= mass_fac;
+      SXZ[node] *= mass_fac;
+      SZY[node] *= mass_fac;
       
       mass_fac = E->Mass[CPPR][node]*velo_scaling;
-      vorv[CPPR][node] *= mass_fac;
-      divv[CPPR][node] *= mass_fac;
+      vorv[node] *= mass_fac;
+      divv[node] *= mass_fac;
     }
 
   /* assign stress to all the nodes */
     for (node=1;node<=E->lmesh.nno;node++) {
-      E->gstress[CPPR][(node-1)*6+1] = SXX[CPPR][node];
-      E->gstress[CPPR][(node-1)*6+2] = SYY[CPPR][node];
-      E->gstress[CPPR][(node-1)*6+3] = SZZ[CPPR][node];
-      E->gstress[CPPR][(node-1)*6+4] = SXY[CPPR][node];
-      E->gstress[CPPR][(node-1)*6+5] = SXZ[CPPR][node];
-      E->gstress[CPPR][(node-1)*6+6] = SZY[CPPR][node];
+      E->gstress[CPPR][(node-1)*6+1] = SXX[node];
+      E->gstress[CPPR][(node-1)*6+2] = SYY[node];
+      E->gstress[CPPR][(node-1)*6+3] = SZZ[node];
+      E->gstress[CPPR][(node-1)*6+4] = SXY[node];
+      E->gstress[CPPR][(node-1)*6+5] = SXZ[node];
+      E->gstress[CPPR][(node-1)*6+6] = SZY[node];
     }
 
   /* replace boundary stresses with boundary conditions (if specified) */
@@ -529,7 +529,7 @@ static void geoid_from_buoyancy(struct All_variables *E,
      */
 
     int m,k,ll,mm,node,i,j,p,noz,snode,nxnz;
-    float *TT[NCS],radius,*geoid[2],dlayer,con1,grav,scaling2,scaling,radius_m;
+    float *TT,radius,*geoid[2],dlayer,con1,grav,scaling2,scaling,radius_m;
     float cont, conb;
     double buoy2rho;
 
@@ -545,7 +545,7 @@ static void geoid_from_buoyancy(struct All_variables *E,
         / E->data.grav_acc;
 
     /* density of one layer */
-    TT[CPPR] = (float *) malloc ((E->lmesh.nsf+1)*sizeof(float));
+    TT = (float *) malloc ((E->lmesh.nsf+1)*sizeof(float));
 
     /* cos coeff */
     geoid[0] = (float*)malloc(E->sphere.hindice*sizeof(float));
@@ -571,7 +571,7 @@ static void geoid_from_buoyancy(struct All_variables *E,
                     p = j + (i-1)*E->lmesh.nox;
                     /* convert non-dimensional buoyancy to */
                     /* dimensional density */
-                    TT[CPPR][p] = (E->buoyancy[CPPR][node]+E->buoyancy[CPPR][node+1])
+                    TT[p] = (E->buoyancy[CPPR][node]+E->buoyancy[CPPR][node+1])
                         * 0.5 * buoy2rho;
                 }
 
@@ -608,7 +608,7 @@ static void geoid_from_buoyancy(struct All_variables *E,
     /* accumulate geoid from all layers to the CMB (bottom processors) */
     sum_across_depth_sph1(E, harm_geoidb[0], harm_geoidb[1]);
 
-    free ((void *)TT[CPPR]);
+    free ((void *)TT);
 
     free ((void *)geoid[0]);
     free ((void *)geoid[1]);
@@ -911,7 +911,7 @@ separately if stress output is needed
  */
 void get_CBF_topo(E,H,HB)       /* call this only for top and bottom processors*/
     struct All_variables *E;
-    float **H,**HB;
+    float *H,*HB;
 
 {
     void get_elt_k();
@@ -928,7 +928,7 @@ void get_CBF_topo(E,H,HB)       /* call this only for top and bottom processors*
     struct Shape_function1 GM,GMb;
     struct Shape_function1_dA dGammax,dGammabx;
 
-    float *eltTU,*eltTL,*SU[NCS],*SL[NCS],*RU[NCS],*RL[NCS];
+    float *eltTU,*eltTL,*SU,*SL,*RU,*RL;
     float VV[4][9];
 
     double eltk[24*24],eltf[24];
@@ -955,13 +955,13 @@ void get_CBF_topo(E,H,HB)       /* call this only for top and bottom processors*
     eltTU = (float *)malloc((1+Tsize)*sizeof(float));
     eltTL = (float *)malloc((1+Tsize)*sizeof(float));
 
-    SU[CPPR] = (float *)malloc((1+lnsf)*sizeof(float));
-    SL[CPPR] = (float *)malloc((1+lnsf)*sizeof(float));
-    RU[CPPR] = (float *)malloc((1+lnsf)*sizeof(float));
-    RL[CPPR] = (float *)malloc((1+lnsf)*sizeof(float));
+    SU = (float *)malloc((1+lnsf)*sizeof(float));
+    SL = (float *)malloc((1+lnsf)*sizeof(float));
+    RU = (float *)malloc((1+lnsf)*sizeof(float));
+    RL = (float *)malloc((1+lnsf)*sizeof(float));
 
     for(i=0;i<=lnsf;i++)
-      RU[CPPR][i] = RL[CPPR][i] = SU[CPPR][i] = SL[CPPR][i] = 0.0;
+      RU[i] = RL[i] = SU[i] = SL[i] = 0.0;
 
     /* calculate the element residuals */
 
@@ -1028,7 +1028,7 @@ void get_CBF_topo(E,H,HB)       /* call this only for top and bottom processors*
                 nodes = E->sien[els].node[4];
 		break;
 	     }
-	     RL[CPPR][nodes] += resb[(m-1)*dims+2];
+	     RL[nodes] += resb[(m-1)*dims+2];
 	  }
         else   {
            switch (m) {
@@ -1045,7 +1045,7 @@ void get_CBF_topo(E,H,HB)       /* call this only for top and bottom processors*
                 nodes = E->sien[els].node[4];
                 break;
              }
-             RU[CPPR][nodes] += res[(m-1)*dims+2];
+             RU[nodes] += res[(m-1)*dims+2];
           }
         }      /* end for m */
       }
@@ -1074,10 +1074,10 @@ void get_CBF_topo(E,H,HB)       /* call this only for top and bottom processors*
           }
 
         for (m=1;m<=onedv;m++)     /* for bottom */
-            SL[CPPR][E->sien[els].node[m]] += eltTL[m-1];
+            SL[E->sien[els].node[m]] += eltTL[m-1];
 
         for (m=1;m<=onedv;m++)
-            SU[CPPR][E->sien[els].node[m]] += eltTU[m-1];
+            SU[E->sien[els].node[m]] += eltTU[m-1];
 
         }
 
@@ -1090,7 +1090,7 @@ void get_CBF_topo(E,H,HB)       /* call this only for top and bottom processors*
       regional_exchange_snode_f(E,RL,SL,E->mesh.levmax);
 
     for(i=1;i<=E->lmesh.nsf;i++)
-        HB[CPPR][i] = RL[CPPR][i]/SL[CPPR][i];
+        HB[i] = RL[i]/SL[i];
   }
   /* for top topo */
   if(E->parallel.me_loc[3] == E->parallel.nprocz-1) {
@@ -1100,12 +1100,12 @@ void get_CBF_topo(E,H,HB)       /* call this only for top and bottom processors*
       regional_exchange_snode_f(E,RU,SU,E->mesh.levmax);
 
   for(i=1;i<=E->lmesh.nsf;i++)
-      H[CPPR][i] = RU[CPPR][i]/SU[CPPR][i];
+      H[i] = RU[i]/SU[i];
   }
     free((void *)eltTU);
     free((void *)eltTL);
-    free((void *)SU[CPPR]);
-    free((void *)SL[CPPR]);
-    free((void *)RU[CPPR]);
-    free((void *)RL[CPPR]);
+    free((void *)SU);
+    free((void *)SL);
+    free((void *)RU);
+    free((void *)RL);
 }
diff --git a/lib/global_defs.h b/lib/global_defs.h
index ac8b2f8..292456e 100644
--- a/lib/global_defs.h
+++ b/lib/global_defs.h
@@ -371,13 +371,13 @@ struct HAVE {    /* horizontal averages */
 };
 
 struct SLICE {    /* horizontally sliced data, including topography */
-    float *tpg[NCS];
-    float *tpgb[NCS];
-    float *shflux[NCS];
-    float *bhflux[NCS];
-    float *divg[NCS];
-    float *vort[NCS];
-    float *freesurf[NCS];
+    float *tpg;
+    float *tpgb;
+    float *shflux;
+    float *bhflux;
+    float *divg;
+    float *vort;
+    float *freesurf;
   };
 
 
@@ -840,7 +840,7 @@ struct All_variables {
     double *surf_det[NCS][5];
     double *SinCos[MAX_LEVELS][NCS][4];
 
-    float *NP[NCS];
+    float *NP;
   //float *stress[NCS];
     float *gstress[NCS];
     float *Fas670[NCS],*Fas410[NCS],*Fas670_b[NCS],*Fas410_b[NCS];
diff --git a/lib/prototypes.h b/lib/prototypes.h
index 19bc5c5..2e4bce5 100644
--- a/lib/prototypes.h
+++ b/lib/prototypes.h
@@ -140,7 +140,7 @@ void full_parallel_domain_boundary_nodes(struct All_variables *);
 void full_parallel_communication_routs_v(struct All_variables *);
 void full_parallel_communication_routs_s(struct All_variables *);
 void full_exchange_id_d(struct All_variables *, double *, int);
-void full_exchange_snode_f(struct All_variables *, float **, float **, int);
+void full_exchange_snode_f(struct All_variables *, float *, float *, int);
 /* Full_read_input_from_files.c */
 void full_read_input_files_for_timesteps(struct All_variables *, int, int);
 /* Full_solver.c */
@@ -270,7 +270,7 @@ void v_from_vector_pseudo_surf(struct All_variables *);
 void velo_from_element(struct All_variables *, float [4][9], int, int);
 void velo_from_element_d(struct All_variables *, double [4][9], int, int);
 
-void p_to_nodes(struct All_variables *, double *, float **, int);
+void p_to_nodes(struct All_variables *, double *, float *, int);
 
 void visc_from_gint_to_nodes(struct All_variables *, float *, float *, int);
 void visc_from_nodes_to_gint(struct All_variables *, float *, float *, int);
@@ -417,7 +417,7 @@ void regional_parallel_domain_boundary_nodes(struct All_variables *);
 void regional_parallel_communication_routs_v(struct All_variables *);
 void regional_parallel_communication_routs_s(struct All_variables *);
 void regional_exchange_id_d(struct All_variables *, double *, int);
-void regional_exchange_snode_f(struct All_variables *, float **, float **, int);
+void regional_exchange_snode_f(struct All_variables *, float *, float *, int);
 /* Regional_read_input_from_files.c */
 void regional_read_input_files_for_timesteps(struct All_variables *, int, int);
 /* Regional_solver.c */
@@ -479,7 +479,7 @@ void fill_in_gaps(struct All_variables *, double *, int);
 /* Sphere_harmonics.c */
 void set_sphere_harmonics(struct All_variables *);
 double modified_plgndr_a(int, int, double);
-void sphere_expansion(struct All_variables *, float **, float *, float *);
+void sphere_expansion(struct All_variables *, float *, float *, float *);
 void debug_sphere_expansion(struct All_variables *);
 /* Sphere_util.c */
 void even_divide_arc12(int, double, double, double, double, double, double, double *, double *);
@@ -492,14 +492,14 @@ double get_angle(double [4], double [4]);
 /* Stokes_flow_Incomp.c */
 void solve_constrained_flow_iterative(struct All_variables *);
 /* Topo_gravity.c */
-void get_STD_topo(struct All_variables *, float **, float **, float **, float **, int);
-void get_STD_freesurf(struct All_variables *, float **);
+void get_STD_topo(struct All_variables *, float *, float *, float *, float *, int);
+void get_STD_freesurf(struct All_variables *, float *);
 void allocate_STD_mem(struct All_variables *, float **, float **, float **, float **, float **, float **, float **, float **);
-void free_STD_mem(struct All_variables *, float **, float **, float **, float **, float **, float **, float **, float **);
-void compute_nodal_stress(struct All_variables *, float **, float **, float **, float **, float **, float **, float **, float **);
+void free_STD_mem(struct All_variables *, float *, float *, float *, float *, float *, float *, float *, float *);
+void compute_nodal_stress(struct All_variables *, float *, float *, float *, float *, float *, float *, float *, float *);
 void stress_conform_bcs(struct All_variables *);
 void compute_geoid(struct All_variables *);
-void get_CBF_topo(struct All_variables *, float **, float **);
+void get_CBF_topo(struct All_variables *, float *, float *);
 /* Tracer_setup.c */
 void tracer_input(struct All_variables *);
 void tracer_initial_settings(struct All_variables *);



More information about the CIG-COMMITS mailing list