[cig-commits] [commit] rajesh-petsc-schur: Changed the shape of the ien member of the All_variables struct as part of caps_per_proc removal (c06f5c7)

cig_noreply at geodynamics.org cig_noreply at geodynamics.org
Wed Nov 5 19:10:17 PST 2014


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

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

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

commit c06f5c7e5549e42e9c4bf2e47757db7d839e512a
Author: Rajesh Kommu <rajesh.kommu at gmail.com>
Date:   Thu Sep 18 13:45:29 2014 -0700

    Changed the shape of the ien member of the All_variables struct as part of caps_per_proc removal


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

c06f5c7e5549e42e9c4bf2e47757db7d839e512a
 lib/Advection_diffusion.c            | 16 ++++-----
 lib/Anisotropic_viscosity.c          |  6 ++--
 lib/Composition_related.c            |  2 +-
 lib/Construct_arrays.c               | 10 +++---
 lib/Determine_net_rotation.c         | 22 ++++++-------
 lib/Element_calculations.c           | 20 +++++------
 lib/Full_read_input_from_files.c     |  2 +-
 lib/Full_tracer_advection.c          | 24 +++++++-------
 lib/Ggrd_handling.c                  |  4 +--
 lib/Global_operations.c              | 36 ++++++++++----------
 lib/Instructions.c                   |  2 +-
 lib/Nodal_mesh.c                     |  8 ++---
 lib/Output_gzdir.c                   | 16 ++++-----
 lib/Output_h5.c                      |  2 +-
 lib/Process_buoyancy.c               |  8 ++---
 lib/Regional_read_input_from_files.c |  2 +-
 lib/Size_does_matter.c               |  8 ++---
 lib/Topo_gravity.c                   |  2 +-
 lib/Viscosity_structures.c           | 64 ++++++++++++++++++------------------
 lib/global_defs.h                    |  2 +-
 20 files changed, 128 insertions(+), 128 deletions(-)

diff --git a/lib/Advection_diffusion.c b/lib/Advection_diffusion.c
index d1804ca..5cc2e1b 100644
--- a/lib/Advection_diffusion.c
+++ b/lib/Advection_diffusion.c
@@ -387,7 +387,7 @@ static void pg_solver(struct All_variables *E,
                        FLAGS);
 
       for(a=1;a<=ends;a++) {
-        a1 = E->ien[CPPR][el].node[a];
+        a1 = E->ien[el].node[a];
         DTdot[CPPR][a1] += Eres[a];
       }
 
@@ -425,7 +425,7 @@ static void pg_shape_fn(struct All_variables *E, int el,
 
     double prod1,unorm,twodiff;
 
-    ienm=E->ien[CPPR][el].node;
+    ienm=E->ien[el].node;
 
     twodiff = 2.0*diffusion;
 
@@ -525,7 +525,7 @@ static void element_residual(struct All_variables *E, int el,
         sint[i] = rtf[3][i]/sin(rtf[1][i]);
 
     for(j=1;j<=ends;j++)       {
-      node = E->ien[CPPR][el].node[j];
+      node = E->ien[el].node[j];
       T = field[CPPR][node];
       if(E->node[CPPR][node] & (TBX | TBY | TBZ))
 	    DT=0.0;
@@ -607,11 +607,11 @@ static void element_residual(struct All_variables *E, int el,
 
     if(FLAGS!=NULL) {
       aid = -1;
-      if (FLAGS[CPPR][E->ien[CPPR][el].node[1]] & FBZ) {   // only check for the 1st node
+      if (FLAGS[CPPR][E->ien[el].node[1]] & FBZ) {   // only check for the 1st node
           aid = 0;
 	  get_global_1d_shape_fn(E,el,&GM,&dGamma,aid);
           }
-      else if (FLAGS[CPPR][E->ien[CPPR][el].node[5]] & FBZ) {   // only check for the 5th node
+      else if (FLAGS[CPPR][E->ien[el].node[5]] & FBZ) {   // only check for the 5th node
           aid = 1;
 	  get_global_1d_shape_fn(E,el,&GM,&dGamma,aid);
           }
@@ -621,7 +621,7 @@ static void element_residual(struct All_variables *E, int el,
 	  for(j=1;j<=onedvpts;j++)  {
             dT[j] = 0.0;
 	    for(k=1;k<=onedvpts;k++)
-              dT[j] += E->M.vpt[GMVINDEX(k,j)]*BC[3][E->ien[CPPR][el].node[k+aid*onedvpts]];
+              dT[j] += E->M.vpt[GMVINDEX(k,j)]*BC[3][E->ien[el].node[k+aid*onedvpts]];
             }
 	  for(j=1;j<=onedvpts;j++)  {
 	    Eres[a+aid*onedvpts] += dGamma.vpt[GMVGAMMA(aid,j)] *
@@ -763,7 +763,7 @@ static void process_adi_heating(struct All_variables *E, double *heating)
 
         temp1 = 0.0;
         for(i=1; i<=ends; i++) {
-            j = E->ien[CPPR][e].node[i];
+            j = E->ien[e].node[i];
             temp1 += E->sphere.cap[CPPR].V[3][j]
                 * (E->T[CPPR][j] + E->control.surface_temp);
         }
@@ -798,7 +798,7 @@ static void latent_heating(struct All_variables *E,
         temp2 = 0;
         temp3 = 0;
         for(i=1; i<=ends; i++) {
-            j = E->ien[CPPR][e].node[i];
+            j = E->ien[e].node[i];
             temp = (1.0 - B[CPPR][j]) * B[CPPR][j]
                 * (E->T[CPPR][j] + E->control.surface_temp);
             temp2 += temp * E->sphere.cap[CPPR].V[3][j];
diff --git a/lib/Anisotropic_viscosity.c b/lib/Anisotropic_viscosity.c
index 89c1e5e..cfeb439 100644
--- a/lib/Anisotropic_viscosity.c
+++ b/lib/Anisotropic_viscosity.c
@@ -453,7 +453,7 @@ void set_anisotropic_viscosity_at_element_level(struct All_variables *E,
 #endif
 	      for(u=0.,inode=1;inode <= ends;inode++){ /* mean vertical coordinate */
 #ifdef CitcomS_global_defs_h	/* CitcomS */
-		off = E->ien[CPPR][j].node[inode];
+		off = E->ien[j].node[inode];
 		u += E->sx[CPPR][3][off];
 #else
 		off = E->ien[j].node[inode];
@@ -483,7 +483,7 @@ void set_anisotropic_viscosity_at_element_level(struct All_variables *E,
 		  /* CitcomS */
 		  xloc[0] = xloc[1] = xloc[2] = 0.0;
 		  for(inode=1;inode <= ends;inode++){
-		    off = E->ien[CPPR][el].node[inode];
+		    off = E->ien[el].node[inode];
 		    rtp2xyz((float)E->sx[CPPR][3][off],(float)E->sx[CPPR][1][off],(float)E->sx[CPPR][2][off],rout);
 		    xloc[0] += rout[0];xloc[1] += rout[1];xloc[2] += rout[2];
 		  }
@@ -828,7 +828,7 @@ void align_director_with_ISA_for_element(struct All_variables *E,
 	//if((e-1)%E->lmesh.elz==0)
 	construct_c3x3matrix_el(E,e,&E->element_Cc,&E->element_Ccx,lev,1);
 	for(i = 1; i <= ends; i++){	/* velocity at element nodes */
-	  off = E->ien[CPPR][e].node[i];
+	  off = E->ien[e].node[i];
 	  VV[1][i] = E->sphere.cap[CPPR].V[1][off];
 	  VV[2][i] = E->sphere.cap[CPPR].V[2][off];
 	  VV[3][i] = E->sphere.cap[CPPR].V[3][off];
diff --git a/lib/Composition_related.c b/lib/Composition_related.c
index 233233d..28a671b 100644
--- a/lib/Composition_related.c
+++ b/lib/Composition_related.c
@@ -425,7 +425,7 @@ void map_composition_to_nodes(struct All_variables *E)
             /* weight composition */
 
             for (nodenum=1;nodenum<=8;nodenum++) {
-                n = E->ien[CPPR][nelem].node[nodenum];
+                n = E->ien[nelem].node[nodenum];
                 for(i=0;i<E->composition.ncomp;i++) {
 
                     E->composition.comp_node[CPPR][i][n] +=
diff --git a/lib/Construct_arrays.c b/lib/Construct_arrays.c
index 4ed7ce4..24c8dcc 100644
--- a/lib/Construct_arrays.c
+++ b/lib/Construct_arrays.c
@@ -103,10 +103,10 @@ void construct_surface( struct All_variables *E)
     for(element=1;element<=E->lmesh.nel;element++)
       if ( element%E->lmesh.elz==0) { /* top */
         e ++;
-        E->sien[CPPR][e].node[1] = E->ien[CPPR][element].node[5]/E->lmesh.noz;
-        E->sien[CPPR][e].node[2] = E->ien[CPPR][element].node[6]/E->lmesh.noz;
-        E->sien[CPPR][e].node[3] = E->ien[CPPR][element].node[7]/E->lmesh.noz;
-        E->sien[CPPR][e].node[4] = E->ien[CPPR][element].node[8]/E->lmesh.noz;
+        E->sien[CPPR][e].node[1] = E->ien[element].node[5]/E->lmesh.noz;
+        E->sien[CPPR][e].node[2] = E->ien[element].node[6]/E->lmesh.noz;
+        E->sien[CPPR][e].node[3] = E->ien[element].node[7]/E->lmesh.noz;
+        E->sien[CPPR][e].node[4] = E->ien[element].node[8]/E->lmesh.noz;
         E->surf_element[CPPR][e] = element;
         }
 
@@ -777,7 +777,7 @@ void construct_mat_group(E)
   } else {
           for(el=1;el<=E->lmesh.nel;el++) {
               E->mat[CPPR][el] = 1;
-              nodea = E->ien[CPPR][el].node[2];
+              nodea = E->ien[el].node[2];
               llayer = layers(E,nodea);
               if (llayer)  {
                   E->mat[CPPR][el] = llayer;
diff --git a/lib/Determine_net_rotation.c b/lib/Determine_net_rotation.c
index bb37b5b..972fbe0 100644
--- a/lib/Determine_net_rotation.c
+++ b/lib/Determine_net_rotation.c
@@ -102,10 +102,10 @@ double determine_model_net_rotation(struct All_variables *E,double *omega)
 
 	  x[0] = x[1] = x[2] = v[0] = v[1] = vw = 0.0;
 
-          lnode[1] = E->ien[CPPR][el].node[1];
-          lnode[2] = E->ien[CPPR][el].node[2];
-          lnode[3] = E->ien[CPPR][el].node[3];
-          lnode[4] = E->ien[CPPR][el].node[4];
+          lnode[1] = E->ien[el].node[1];
+          lnode[2] = E->ien[el].node[2];
+          lnode[3] = E->ien[el].node[3];
+          lnode[4] = E->ien[el].node[4];
 
           for(nint=1;nint <= onedvpoints[E->mesh.nsd];nint++)   {
             for(d=1;d <= onedvpoints[E->mesh.nsd];d++){
@@ -120,10 +120,10 @@ double determine_model_net_rotation(struct All_variables *E,double *omega)
 	    }
 	  }
           if (i==elz)  {
-            lnode[1] = E->ien[CPPR][el].node[5];
-            lnode[2] = E->ien[CPPR][el].node[6];
-            lnode[3] = E->ien[CPPR][el].node[7];
-            lnode[4] = E->ien[CPPR][el].node[8];
+            lnode[1] = E->ien[el].node[5];
+            lnode[2] = E->ien[el].node[6];
+            lnode[3] = E->ien[el].node[7];
+            lnode[4] = E->ien[el].node[8];
 
             for(nint=1;nint<=onedvpoints[E->mesh.nsd];nint++)   {
               for(d=1;d<=onedvpoints[E->mesh.nsd];d++){
@@ -154,20 +154,20 @@ double determine_model_net_rotation(struct All_variables *E,double *omega)
   omega[0]=omega[1]=omega[2]=0.0;
 
   /* depth range */
-  rr = E->sx[1][3][E->ien[1][elz].node[5]] - E->sx[1][3][E->ien[1][1].node[1]];
+  rr = E->sx[CPPR][3][E->ien[elz].node[5]] - E->sx[CPPR][3][E->ien[1].node[1]];
   if(rr < 1e-7)
     myerror(E,"rr error in net r determine");
   vw = 0.0;
   for (i=0;i < elz;i++) {	/* regular 0..n-1 loop */
     /* solve layer NR */
     lamp = determine_netr_tp(ddummy,ddummy,ddummy,ddummy,ddummy,2,(acoef+i*9),(lomega+i*3));
-    r1 = E->sx[1][3][E->ien[1][i+1].node[1]]; /* nodal radii for the
+    r1 = E->sx[CPPR][3][E->ien[i+1].node[1]]; /* nodal radii for the
 						 i-th element, this
 						 assumes that there
 						 are no lateral
 						 variations in radii!
 					      */
-    r2 = E->sx[1][3][E->ien[1][i+1].node[5]];
+    r2 = E->sx[CPPR][3][E->ien[i+1].node[5]];
     vtmp = (r2-r1)/rr;		/* weight for this layer */
     //if(E->parallel.me == 0)
     //  fprintf(stderr,"NR layer %5i (%11g - %11g, %11g): |%11g %11g %11g| = %11g\n",
diff --git a/lib/Element_calculations.c b/lib/Element_calculations.c
index 9b6f779..ed74a7d 100644
--- a/lib/Element_calculations.c
+++ b/lib/Element_calculations.c
@@ -57,7 +57,7 @@ static void add_force(struct All_variables *E, int e, double elt_f[24])
   int a, a1, a2, a3, p, node;
 
   for(a=1;a<=ends;a++)          {
-    node = E->ien[CPPR][e].node[a];
+    node = E->ien[e].node[a];
     p=(a-1)*dims;
     a1=E->id[CPPR][node].doff[1];
     E->F[CPPR][a1] += elt_f[p];
@@ -992,7 +992,7 @@ void get_elt_f(E,el,elt_f,bcs)
   for(p=0;p<n;p++) elt_f[p] = 0.0;
 
   for(p=1;p<=ends;p++)
-    force[p] = E->buoyancy[CPPR][E->ien[CPPR][el].node[p]];
+    force[p] = E->buoyancy[CPPR][E->ien[el].node[p]];
 
   for(j=1;j<=vpts;j++)       {   /*compute force at each int point */
     force_at_gs[j] = 0.0;
@@ -1002,7 +1002,7 @@ void get_elt_f(E,el,elt_f,bcs)
 
   for(i=1;i<=dims;i++)  {
     for(a=1;a<=ends;a++)  {
-      nodea=E->ien[CPPR][el].node[a];
+      nodea=E->ien[el].node[a];
       p= dims*(a-1)+i-1;
 
       for(j=1;j<=vpts;j++)     /*compute sum(Na(j)*F(j)*det(j)) */
@@ -1017,7 +1017,7 @@ void get_elt_f(E,el,elt_f,bcs)
         for(j=1;j<=dims;j++) {
 	  type=vbc_flag[j];
           for(b=1;b<=ends;b++) {
-            nodeb=E->ien[CPPR][el].node[b];
+            nodeb=E->ien[el].node[b];
             if ((E->node[CPPR][nodeb]&type)&&(E->sphere.cap[CPPR].VB[j][nodeb]!=0.0)){
               if(!got_elt_k) {
                 get_elt_k(E,el,elt_k,E->mesh.levmax,1);
@@ -1069,7 +1069,7 @@ static void get_elt_tr(struct All_variables *E, int bel, int side, double elt_tr
 
 	if(E->control.side_sbcs)
 		for(a=1;a<=ends1;a++)  {
-			nodea = E->ien[CPPR][el].node[ sidenodes[side][a] ];
+			nodea = E->ien[el].node[ sidenodes[side][a] ];
 			for(d=1;d<=dims;d++) {
 				value = E->sbc.SB[CPPR][side][d][ E->sbc.node[CPPR][nodea] ];
 				flagged = (E->node[CPPR][nodea] & sbc_flag[d]) && (value);
@@ -1081,7 +1081,7 @@ static void get_elt_tr(struct All_variables *E, int bel, int side, double elt_tr
 		/* if side_sbcs is false, only apply sbc on top and bottom surfaces */
 		if(side == SIDE_BOTTOM || side == SIDE_TOP) {
 			for(a=1;a<=ends1;a++)  {
-				nodea = E->ien[CPPR][el].node[ sidenodes[side][a] ];
+				nodea = E->ien[el].node[ sidenodes[side][a] ];
 				for(d=1;d<=dims;d++) {
 					value = E->sphere.cap[CPPR].VB[d][nodea];
 					flagged = (E->node[CPPR][nodea] & sbc_flag[d]) && (value);
@@ -1151,7 +1151,7 @@ static void get_elt_tr_pseudo_surf(struct All_variables *E, int bel, int side, d
 
 	if(E->control.side_sbcs)
 		for(a=1;a<=ends1;a++)  {
-			nodea = E->ien[CPPR][el].node[ sidenodes[side][a] ];
+			nodea = E->ien[el].node[ sidenodes[side][a] ];
 			for(d=1;d<=dims;d++) {
 				value = E->sbc.SB[CPPR][side][d][ E->sbc.node[CPPR][nodea] ];
 				flagged = (E->node[CPPR][nodea] & sbc_flag[d]) && (value);
@@ -1162,8 +1162,8 @@ static void get_elt_tr_pseudo_surf(struct All_variables *E, int bel, int side, d
 	else {
 		if( side == SIDE_TOP && E->parallel.me_loc[3]==E->parallel.nprocz-1 && (el%E->lmesh.elz==0)) {
 			for(a=1;a<=ends1;a++)  {
-				nodea = E->ien[CPPR][el].node[ sidenodes[side][a] ];
-				nodeas = E->ien[CPPR][el].node[ sidenodes[side][a] ]/E->lmesh.noz;
+				nodea = E->ien[el].node[ sidenodes[side][a] ];
+				nodeas = E->ien[el].node[ sidenodes[side][a] ]/E->lmesh.noz;
 				traction[1][a] = 0.0;
 				traction[2][a] = 0.0;
 				traction[3][a] = -1.0*factor*rho*g*(R*R*R)/(eta*kappa)
@@ -1183,7 +1183,7 @@ static void get_elt_tr_pseudo_surf(struct All_variables *E, int bel, int side, d
 		}
 		else {
 			for(a=1;a<=ends1;a++)  {
-				nodea = E->ien[CPPR][el].node[ sidenodes[side][a] ];
+				nodea = E->ien[el].node[ sidenodes[side][a] ];
 				for(d=1;d<=dims;d++) {
 					value = E->sphere.cap[CPPR].VB[d][nodea];
 					flagged = (E->node[CPPR][nodea] & sbc_flag[d]) && (value);
diff --git a/lib/Full_read_input_from_files.c b/lib/Full_read_input_from_files.c
index b4427f4..91dfb00 100644
--- a/lib/Full_read_input_from_files.c
+++ b/lib/Full_read_input_from_files.c
@@ -319,7 +319,7 @@ void full_read_input_files_for_timesteps(E,action,output)
 
 
           for (el=1; el<=elx*ely*elz; el++)  {
-            nodea = E->ien[CPPR][el].node[2];
+            nodea = E->ien[el].node[2];
             llayer = layers(E,nodea);
             if (llayer)  { /* for layers:1-lithosphere,2-upper, 3-trans, and 4-lower mantle */
               E->mat[CPPR][el] = llayer;
diff --git a/lib/Full_tracer_advection.c b/lib/Full_tracer_advection.c
index 990ca58..8e9198c 100644
--- a/lib/Full_tracer_advection.c
+++ b/lib/Full_tracer_advection.c
@@ -933,13 +933,13 @@ void full_get_shape_functions(struct All_variables *E,
                     fprintf(E->trace.fpt,"u %f v %f element: %d \n",u,v, nelem);
                     fprintf(E->trace.fpt,"Element uv boundaries: \n");
                     for(kk=1;kk<=4;kk++) {
-                        i = (E->ien[CPPR][nelem].node[kk] - 1) / E->lmesh.noz + 1;
+                        i = (E->ien[nelem].node[kk] - 1) / E->lmesh.noz + 1;
                         fprintf(E->trace.fpt,"%d: U: %f V:%f\n",kk,E->gnomonic[i].u,E->gnomonic[i].v);
                     }
                     fprintf(E->trace.fpt,"theta: %f phi: %f rad: %f\n",theta,phi,rad);
                     fprintf(E->trace.fpt,"Element theta-phi boundaries: \n");
                     for(kk=1;kk<=4;kk++)
-                        fprintf(E->trace.fpt,"%d: Theta: %f Phi:%f\n",kk,E->sx[CPPR][1][E->ien[CPPR][nelem].node[kk]],E->sx[CPPR][2][E->ien[CPPR][nelem].node[kk]]);
+                        fprintf(E->trace.fpt,"%d: Theta: %f Phi:%f\n",kk,E->sx[CPPR][1][E->ien[nelem].node[kk]],E->sx[CPPR][2][E->ien[nelem].node[kk]]);
                     sphere_to_cart(E,theta,phi,rad,&x,&y,&z);
                     ival=icheck_element(E,nelem,x,y,z,rad);
                     fprintf(E->trace.fpt,"ICHECK?: %d\n",ival);
@@ -1161,8 +1161,8 @@ static void get_radial_shape(struct All_variables *E,
     double top_bound=1.0+eps;
     double bottom_bound=0.0-eps;
 
-    node1=E->ien[CPPR][nelem].node[1];
-    node5=E->ien[CPPR][nelem].node[5];
+    node1=E->ien[nelem].node[1];
+    node5=E->ien[nelem].node[5];
 
     rad1=E->sx[CPPR][3][node1];
     rad5=E->sx[CPPR][3][node5];
@@ -1469,7 +1469,7 @@ static void make_regular_grid(struct All_variables *E)
                     phi_max=0.0;
                     for (pp=1;pp<=4;pp++)
                         {
-                            node=E->ien[CPPR][mm].node[pp];
+                            node=E->ien[mm].node[pp];
                             theta=E->sx[CPPR][1][node];
                             phi=E->sx[CPPR][2][node];
 
@@ -2096,11 +2096,11 @@ static int icheck_shell(struct All_variables *E,
     double top_rad;
 
 
-    ibottom_node=E->ien[1][nel].node[1];
-    itop_node=E->ien[1][nel].node[5];
+    ibottom_node=E->ien[nel].node[1];
+    itop_node=E->ien[nel].node[5];
 
-    bottom_rad=E->sx[1][3][ibottom_node];
-    top_rad=E->sx[1][3][itop_node];
+    bottom_rad=E->sx[CPPR][3][ibottom_node];
+    top_rad=E->sx[CPPR][3][itop_node];
 
     ival=0;
     if ((rad>=bottom_rad)&&(rad<top_rad)) ival=1;
@@ -2135,7 +2135,7 @@ static int icheck_element_column(struct All_variables *E,
     for (kk=1;kk<=4;kk++)
         {
 
-            node=E->ien[CPPR][nel].node[kk+4];
+            node=E->ien[nel].node[kk+4];
 
             rnode[kk][1]=E->x[CPPR][1][node];
             rnode[kk][2]=E->x[CPPR][2][node];
@@ -2709,7 +2709,7 @@ static int iget_radial_element(struct All_variables *E,
     for (kk=1;kk<=elz;kk++)
         {
 
-            node=E->ien[CPPR][iradial_element].node[8];
+            node=E->ien[iradial_element].node[8];
             top_rad=E->sx[CPPR][3][node];
 
             if (rad<top_rad) goto found_it;
@@ -2892,7 +2892,7 @@ static void determine_shape_coefficients(struct All_variables *E)
         /* find u,v of local nodes at one radius  */
 
         for(kk=1; kk<=4; kk++) {
-            snode = (E->ien[CPPR][nelem].node[kk]-1) / E->lmesh.noz + 1;
+            snode = (E->ien[nelem].node[kk]-1) / E->lmesh.noz + 1;
             u[kk] = E->gnomonic[snode].u;
             v[kk] = E->gnomonic[snode].v;
         }
diff --git a/lib/Ggrd_handling.c b/lib/Ggrd_handling.c
index db98b79..56bbb92 100644
--- a/lib/Ggrd_handling.c
+++ b/lib/Ggrd_handling.c
@@ -525,7 +525,7 @@ void ggrd_read_mat_from_file(struct All_variables *E, int is_geographic)
 	      */
 	      xloc[1] = xloc[2] = xloc[3] = 0.0;
 	      for(inode=1;inode <= ends;inode++){
-		ind = E->ien[CPPR][el].node[inode];
+		ind = E->ien[el].node[inode];
 		xloc[1] += E->x[CPPR][1][ind];xloc[2] += E->x[CPPR][2][ind];xloc[3] += E->x[CPPR][3][ind];
 	      }
 	      xloc[1]/=ends;xloc[2]/=ends;xloc[3]/=ends;
@@ -1652,7 +1652,7 @@ void ggrd_read_anivisc_from_file(struct All_variables *E, int is_geographic)
 	    */
 	    xloc[1] = xloc[2] = xloc[3] = 0.0;
 	    for(inode=1;inode <= ends;inode++){
-	      ind = E->ien[CPPR][el].node[inode];
+	      ind = E->ien[el].node[inode];
 	      xloc[1] += E->x[CPPR][1][ind];
 	      xloc[2] += E->x[CPPR][2][ind];
 	      xloc[3] += E->x[CPPR][3][ind];
diff --git a/lib/Global_operations.c b/lib/Global_operations.c
index 9373632..35b35a5 100644
--- a/lib/Global_operations.c
+++ b/lib/Global_operations.c
@@ -114,10 +114,10 @@ void return_horiz_ave(E,X,H)
           el = i + (j-1)*elz + (k-1)*elx*elz;
           get_global_1d_shape_fn(E,el,&M,&dGamma,top);
 
-          lnode[1] = E->ien[CPPR][el].node[1];
-          lnode[2] = E->ien[CPPR][el].node[2];
-          lnode[3] = E->ien[CPPR][el].node[3];
-          lnode[4] = E->ien[CPPR][el].node[4];
+          lnode[1] = E->ien[el].node[1];
+          lnode[2] = E->ien[el].node[2];
+          lnode[3] = E->ien[el].node[3];
+          lnode[4] = E->ien[el].node[4];
 
           for(nint=1;nint<=onedvpoints[E->mesh.nsd];nint++)   {
             for(d=1;d<=onedvpoints[E->mesh.nsd];d++)
@@ -127,10 +127,10 @@ void return_horiz_ave(E,X,H)
             }
 
           if (i==elz)  {
-            lnode[1] = E->ien[CPPR][el].node[5];
-            lnode[2] = E->ien[CPPR][el].node[6];
-            lnode[3] = E->ien[CPPR][el].node[7];
-            lnode[4] = E->ien[CPPR][el].node[8];
+            lnode[1] = E->ien[el].node[5];
+            lnode[2] = E->ien[el].node[6];
+            lnode[3] = E->ien[el].node[7];
+            lnode[4] = E->ien[el].node[8];
 
             for(nint=1;nint<=onedvpoints[E->mesh.nsd];nint++)   {
               for(d=1;d<=onedvpoints[E->mesh.nsd];d++)
@@ -191,10 +191,10 @@ void return_horiz_ave_f(E,X,H)
           el = i + (j-1)*elz + (k-1)*elx*elz;
           get_global_1d_shape_fn(E,el,&M,&dGamma,top);
 
-          lnode[1] = E->ien[CPPR][el].node[1];
-          lnode[2] = E->ien[CPPR][el].node[2];
-          lnode[3] = E->ien[CPPR][el].node[3];
-          lnode[4] = E->ien[CPPR][el].node[4];
+          lnode[1] = E->ien[el].node[1];
+          lnode[2] = E->ien[el].node[2];
+          lnode[3] = E->ien[el].node[3];
+          lnode[4] = E->ien[el].node[4];
 
           for(nint=1;nint<=onedvpoints[E->mesh.nsd];nint++)   {
             for(d=1;d<=onedvpoints[E->mesh.nsd];d++)
@@ -204,10 +204,10 @@ void return_horiz_ave_f(E,X,H)
             }
 
           if (i==elz)  {
-            lnode[1] = E->ien[CPPR][el].node[5];
-            lnode[2] = E->ien[CPPR][el].node[6];
-            lnode[3] = E->ien[CPPR][el].node[7];
-            lnode[4] = E->ien[CPPR][el].node[8];
+            lnode[1] = E->ien[el].node[5];
+            lnode[2] = E->ien[el].node[6];
+            lnode[3] = E->ien[el].node[7];
+            lnode[4] = E->ien[el].node[8];
 
             for(nint=1;nint<=onedvpoints[E->mesh.nsd];nint++)   {
               for(d=1;d<=onedvpoints[E->mesh.nsd];d++)
@@ -318,7 +318,7 @@ float return_bulk_value(E,Z,average)
 
 	  for(j=1;j<=vpts;j++)
 	    for(i=1;i<=ends;i++) {
-		n = E->ien[CPPR][el].node[i];
+		n = E->ien[el].node[i];
 		volume1 += E->N.vpt[GNVINDEX(i,j)] * E->gDA[CPPR][el].vpt[j];
 		integral1 += Z[CPPR][n] * E->N.vpt[GNVINDEX(i,j)] * E->gDA[CPPR][el].vpt[j];
                 }
@@ -361,7 +361,7 @@ double return_bulk_value_d(E,Z,average)
 
           for(j=1;j<=vpts;j++)
             for(i=1;i<=ends;i++) {
-                n = E->ien[CPPR][el].node[i];
+                n = E->ien[el].node[i];
                 volume1 += E->N.vpt[GNVINDEX(i,j)] * E->gDA[CPPR][el].vpt[j];
                 integral1 += Z[CPPR][n] * E->N.vpt[GNVINDEX(i,j)] * E->gDA[CPPR][el].vpt[j];
             }
diff --git a/lib/Instructions.c b/lib/Instructions.c
index 0f75aff..12b2e97 100644
--- a/lib/Instructions.c
+++ b/lib/Instructions.c
@@ -1352,7 +1352,7 @@ void set_up_nonmg_aliases(struct All_variables *E)
   int i;
 
   E->eco[CPPR] = E->ECO[E->mesh.levmax][CPPR];
-  E->ien[CPPR] = E->IEN[E->mesh.levmax][CPPR];
+  E->ien = E->IEN[E->mesh.levmax][CPPR];
   E->id[CPPR] = E->ID[E->mesh.levmax][CPPR];
   E->Vi[CPPR] = E->VI[E->mesh.levmax][CPPR];
   E->EVi[CPPR] = E->EVI[E->mesh.levmax][CPPR];
diff --git a/lib/Nodal_mesh.c b/lib/Nodal_mesh.c
index ccdccfa..00999bd 100644
--- a/lib/Nodal_mesh.c
+++ b/lib/Nodal_mesh.c
@@ -121,14 +121,14 @@ void velo_from_element(E,VV,el,sphere_key)
 
     if (sphere_key)
         for(a=1;a<=ends;a++)   {
-            node = E->ien[CPPR][el].node[a];
+            node = E->ien[el].node[a];
             VV[1][a] = E->sphere.cap[CPPR].V[1][node];
             VV[2][a] = E->sphere.cap[CPPR].V[2][node];
             VV[3][a] = E->sphere.cap[CPPR].V[3][node];
         }
     else {
         for(a=1;a<=ends;a++)   {
-            node = E->ien[CPPR][el].node[a];
+            node = E->ien[el].node[a];
 
             sint = E->SinCos[lev][CPPR][0][node]; 
             sinf = E->SinCos[lev][CPPR][1][node];
@@ -163,14 +163,14 @@ void velo_from_element_d(E,VV,el,sphere_key)
 
     if (sphere_key)
         for(a=1;a<=ends;a++)   {
-            node = E->ien[CPPR][el].node[a];
+            node = E->ien[el].node[a];
             VV[1][a] = E->sphere.cap[CPPR].V[1][node];
             VV[2][a] = E->sphere.cap[CPPR].V[2][node];
             VV[3][a] = E->sphere.cap[CPPR].V[3][node];
         }
     else {
         for(a=1;a<=ends;a++)   {
-            node = E->ien[CPPR][el].node[a];
+            node = E->ien[el].node[a];
 
             sint = E->SinCos[lev][CPPR][0][node];
             sinf = E->SinCos[lev][CPPR][1][node];
diff --git a/lib/Output_gzdir.c b/lib/Output_gzdir.c
index d2e0ace..6fbd0c9 100644
--- a/lib/Output_gzdir.c
+++ b/lib/Output_gzdir.c
@@ -336,10 +336,10 @@ void gzdir_output_coord(struct All_variables *E)
 	   need to add offset according to the processor for global
 	   node numbers
 	*/
-	ix[1]= E->ien[CPPR][i].node[1]+offset;ix[2] = E->ien[CPPR][i].node[2]+offset;
-	ix[3]= E->ien[CPPR][i].node[3]+offset;ix[4] = E->ien[CPPR][i].node[4]+offset;
-	ix[5]= E->ien[CPPR][i].node[5]+offset;ix[6] = E->ien[CPPR][i].node[6]+offset;
-	ix[7]= E->ien[CPPR][i].node[7]+offset;ix[8] = E->ien[CPPR][i].node[8]+offset;
+	ix[1]= E->ien[i].node[1]+offset;ix[2] = E->ien[i].node[2]+offset;
+	ix[3]= E->ien[i].node[3]+offset;ix[4] = E->ien[i].node[4]+offset;
+	ix[5]= E->ien[i].node[5]+offset;ix[6] = E->ien[i].node[6]+offset;
+	ix[7]= E->ien[i].node[7]+offset;ix[8] = E->ien[i].node[8]+offset;
 	if(be_write_int_to_file(ix,9,fp1)!=9)
 	  BE_WERROR;
       }
@@ -422,10 +422,10 @@ void gzdir_output_coord(struct All_variables *E)
 	     node numbers
 	  */
 	  gzprintf(gz1,"%6i %6i %6i %6i %6i %6i %6i %6i\n",
-		   E->ien[CPPR][i].node[1]+offset,E->ien[CPPR][i].node[2]+offset,
-		   E->ien[CPPR][i].node[3]+offset,E->ien[CPPR][i].node[4]+offset,
-		   E->ien[CPPR][i].node[5]+offset,E->ien[CPPR][i].node[6]+offset,
-		   E->ien[CPPR][i].node[7]+offset,E->ien[CPPR][i].node[8]+offset);
+		   E->ien[i].node[1]+offset,E->ien[i].node[2]+offset,
+		   E->ien[i].node[3]+offset,E->ien[i].node[4]+offset,
+		   E->ien[i].node[5]+offset,E->ien[i].node[6]+offset,
+		   E->ien[i].node[7]+offset,E->ien[i].node[8]+offset);
 	}
       gzclose(gz1);
     } /* end vtkio = 1 (pre VTK) */
diff --git a/lib/Output_h5.c b/lib/Output_h5.c
index 7abc9df..676d028 100644
--- a/lib/Output_h5.c
+++ b/lib/Output_h5.c
@@ -1274,7 +1274,7 @@ void h5output_connectivity(struct All_variables *E)
 
         for(e = 0; e < nel; e++)
         {
-            ien = E->ien[CPPR][e+1].node;
+            ien = E->ien[e+1].node;
             data[8*e+0] = ien[1]-1; /* TODO: subtract one? */
             data[8*e+1] = ien[2]-1;
             data[8*e+2] = ien[3]-1;
diff --git a/lib/Process_buoyancy.c b/lib/Process_buoyancy.c
index cdf634e..e0b5fb7 100644
--- a/lib/Process_buoyancy.c
+++ b/lib/Process_buoyancy.c
@@ -90,11 +90,11 @@ void heat_flux(E)
         dTdz[i] = 0.0;
         rho[i] = 0.0;
         for(j=1;j<=ends;j++)  {
-          nz = ((E->ien[CPPR][e].node[j]-1) % E->lmesh.noz)+1;
+          nz = ((E->ien[e].node[j]-1) % E->lmesh.noz)+1;
           rho[i] += E->refstate.rho[nz]*E->N.vpt[GNVINDEX(j,i)];
           u[i] += VV[3][j]*E->N.vpt[GNVINDEX(j,i)];
-          T[i] += E->T[CPPR][E->ien[CPPR][e].node[j]]*E->N.vpt[GNVINDEX(j,i)];
-          dTdz[i] += -E->T[CPPR][E->ien[CPPR][e].node[j]]*E->gNX[CPPR][e].vpt[GNVXINDEX(2,j,i)];
+          T[i] += E->T[CPPR][E->ien[e].node[j]]*E->N.vpt[GNVINDEX(j,i)];
+          dTdz[i] += -E->T[CPPR][E->ien[e].node[j]]*E->gNX[CPPR][e].vpt[GNVXINDEX(2,j,i)];
           }
         }
 
@@ -108,7 +108,7 @@ void heat_flux(E)
       uT /= E->eco[CPPR][e].area;
 
       for(j=1;j<=ends;j++)
-        flux[CPPR][E->ien[CPPR][e].node[j]] += uT*E->TWW[lev][CPPR][e].node[j];
+        flux[CPPR][E->ien[e].node[j]] += uT*E->TWW[lev][CPPR][e].node[j];
 
       }             /* end of e */
 
diff --git a/lib/Regional_read_input_from_files.c b/lib/Regional_read_input_from_files.c
index b6fd0b0..eca3891 100644
--- a/lib/Regional_read_input_from_files.c
+++ b/lib/Regional_read_input_from_files.c
@@ -325,7 +325,7 @@ void regional_read_input_files_for_timesteps(E,action,output)
         LL2 = (int*) malloc ((emax+1)*sizeof(int));
 
           for (el=1; el<=elx*ely*elz; el++)  {
-            nodea = E->ien[CPPR][el].node[2];
+            nodea = E->ien[el].node[2];
             llayer = layers(E,nodea);
             if (llayer)  { /* for layers:1-lithosphere,2-upper, 3-trans, and 4-lower mantle */
               E->mat[CPPR][el] = llayer;
diff --git a/lib/Size_does_matter.c b/lib/Size_does_matter.c
index b527a8d..2a1553e 100644
--- a/lib/Size_does_matter.c
+++ b/lib/Size_does_matter.c
@@ -267,7 +267,7 @@ void get_side_x_cart(struct All_variables *E, double xx[4][5], int el, int side)
 
   for(i=1;i<=oned;i++) {     /* nodes */
     s = sidenodes[side][i];
-    node = E->ien[CPPR][el].node[s];
+    node = E->ien[el].node[s];
     xx[1][i] = E->x[CPPR][1][node]*dxdy[1][1]
              + E->x[CPPR][2][node]*dxdy[1][2]
              + E->x[CPPR][3][node]*dxdy[1][3];
@@ -449,7 +449,7 @@ void get_global_1d_shape_fn_L(E,el,GM,dGammax,top)
 
         for(i=1;i<=oned;i++) {     /* nodes */
             e = i+ii*oned;
-            node = E->ien[CPPR][el].node[e];
+            node = E->ien[el].node[e];
             xx[1][i] = E->x[CPPR][1][node]*dxdy[1][1]
                 + E->x[CPPR][2][node]*dxdy[1][2]
                 + E->x[CPPR][3][node]*dxdy[1][3];
@@ -1064,7 +1064,7 @@ void mass_matrix(struct All_variables *E)
         for(e=1;e<=E->lmesh.nel;e++)  {
             for(node=1;node<=enodes[E->mesh.nsd];node++) {
                 temp[node] = 0.0;
-                nz = ((E->ien[CPPR][e].node[node]-1) % E->lmesh.noz) + 1;
+                nz = ((E->ien[e].node[node]-1) % E->lmesh.noz) + 1;
                 for(nint=1;nint<=vpts;nint++)
                     temp[node] += E->refstate.rho[nz]
                         * E->refstate.heat_capacity[nz]
@@ -1075,7 +1075,7 @@ void mass_matrix(struct All_variables *E)
 
             /* lumped mass matrix, equivalent to tmass in ConMan */
             for(node=1;node<=enodes[E->mesh.nsd];node++)
-                E->TMass[CPPR][E->ien[CPPR][e].node[node]] += temp[node];
+                E->TMass[CPPR][E->ien[e].node[node]] += temp[node];
 
         } /* end of for e */
 
diff --git a/lib/Topo_gravity.c b/lib/Topo_gravity.c
index 01dd0bd..9597e5b 100644
--- a/lib/Topo_gravity.c
+++ b/lib/Topo_gravity.c
@@ -378,7 +378,7 @@ void compute_nodal_stress(struct All_variables *E,
       Syy -= E->P[CPPR][e-1]; /* 0 to nel-1, instead of the current 1 to nel */
 
       for(i=1;i<=ends;i++) {
-        node = E->ien[CPPR][e].node[i]; /* assign to global nodes */
+        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;
diff --git a/lib/Viscosity_structures.c b/lib/Viscosity_structures.c
index a235a84..44e0ed4 100644
--- a/lib/Viscosity_structures.c
+++ b/lib/Viscosity_structures.c
@@ -489,7 +489,7 @@ void visc_from_T(E,EEta,propogate)
                     tempa = E->viscosity.N0[l]*E->VIP[CPPR][i];
 
                 for(kk=1;kk<=ends;kk++) {
-                    TT[kk] = E->T[CPPR][E->ien[CPPR][i].node[kk]];
+                    TT[kk] = E->T[CPPR][E->ien[i].node[kk]];
                 }
 
                 for(jj=1;jj<=vpts;jj++) {
@@ -516,7 +516,7 @@ void visc_from_T(E,EEta,propogate)
                     tempa = E->viscosity.N0[l]*E->VIP[CPPR][i];
 
                 for(kk=1;kk<=ends;kk++) {
-                    TT[kk] = E->T[CPPR][E->ien[CPPR][i].node[kk]];
+                    TT[kk] = E->T[CPPR][E->ien[i].node[kk]];
                 }
 
                 for(jj=1;jj<=vpts;jj++) {
@@ -546,7 +546,7 @@ void visc_from_T(E,EEta,propogate)
 		  tempa = E->viscosity.N0[l];
 
                 for(kk=1;kk<=ends;kk++) {
-		  TT[kk] = E->T[CPPR][E->ien[CPPR][i].node[kk]];
+		  TT[kk] = E->T[CPPR][E->ien[i].node[kk]];
                 }
 
                 for(jj=1;jj<=vpts;jj++) {
@@ -575,8 +575,8 @@ void visc_from_T(E,EEta,propogate)
 		  tempa = E->viscosity.N0[l];
 
                 for(kk=1;kk<=ends;kk++) {
-                    TT[kk] = E->T[CPPR][E->ien[CPPR][i].node[kk]];
-                    zz[kk] = (1.-E->sx[CPPR][3][E->ien[CPPR][i].node[kk]]);
+                    TT[kk] = E->T[CPPR][E->ien[i].node[kk]];
+                    zz[kk] = (1.-E->sx[CPPR][3][E->ien[i].node[kk]]);
                 }
 
                 for(jj=1;jj<=vpts;jj++) {
@@ -607,7 +607,7 @@ void visc_from_T(E,EEta,propogate)
                 tempa = E->viscosity.N0[l];
                 /* fprintf(stderr,"\nINSIDE visc_from_T, l=%d, tempa=%g",l+1,tempa);*/
                 for(kk=1;kk<=ends;kk++) {
-                    TT[kk] = E->T[CPPR][E->ien[CPPR][i].node[kk]];
+                    TT[kk] = E->T[CPPR][E->ien[i].node[kk]];
                 }
 
                 for(jj=1;jj<=vpts;jj++) {
@@ -656,8 +656,8 @@ void visc_from_T(E,EEta,propogate)
 	      tempa = E->viscosity.N0[l];
 
 	    for(kk=1;kk<=ends;kk++) {
-	      TT[kk] = E->T[CPPR][E->ien[CPPR][i].node[kk]];
-	      zz[kk] = (1.0 - E->sx[CPPR][3][E->ien[CPPR][i].node[kk]]);
+	      TT[kk] = E->T[CPPR][E->ien[i].node[kk]];
+	      zz[kk] = (1.0 - E->sx[CPPR][3][E->ien[i].node[kk]]);
 	    }
 
 	    for(jj=1;jj <= vpts;jj++) {
@@ -711,8 +711,8 @@ void visc_from_T(E,EEta,propogate)
 		  tempa = E->viscosity.N0[l];
 
                 for(kk=1;kk<=ends;kk++) {
-                    TT[kk] = E->T[CPPR][E->ien[CPPR][i].node[kk]];
-                    zz[kk] = (1.-E->sx[CPPR][3][E->ien[CPPR][i].node[kk]]);
+                    TT[kk] = E->T[CPPR][E->ien[i].node[kk]];
+                    zz[kk] = (1.-E->sx[CPPR][3][E->ien[i].node[kk]]);
                 }
 
                 for(jj=1;jj<=vpts;jj++) {
@@ -759,8 +759,8 @@ void visc_from_T(E,EEta,propogate)
 		  tempa = E->viscosity.N0[l];
 
                 for(kk=1;kk<=ends;kk++) {
-		  TT[kk] = E->T[CPPR][E->ien[CPPR][i].node[kk]];
-		  zz[kk] = E->sx[CPPR][3][E->ien[CPPR][i].node[kk]]; /* radius */
+		  TT[kk] = E->T[CPPR][E->ien[i].node[kk]];
+		  zz[kk] = E->sx[CPPR][3][E->ien[i].node[kk]]; /* radius */
                 }
 
                 for(jj=1;jj<=vpts;jj++) {
@@ -795,7 +795,7 @@ void visc_from_T(E,EEta,propogate)
 		else
 		  tempa = E->viscosity.N0[l];
                 for(kk=1;kk<=ends;kk++) 
-		  TT[kk] = E->T[CPPR][E->ien[CPPR][i].node[kk]];
+		  TT[kk] = E->T[CPPR][E->ien[i].node[kk]];
 		
                 for(jj=1;jj<=vpts;jj++) {
                     temp=0.0;
@@ -827,8 +827,8 @@ void visc_from_T(E,EEta,propogate)
 		  tempa = E->viscosity.N0[l];
 
                 for(kk=1;kk<=ends;kk++) {
-		  TT[kk] = E->T[CPPR][E->ien[CPPR][i].node[kk]];
-		  zz[kk] = E->sx[CPPR][3][E->ien[CPPR][i].node[kk]]; /* radius */
+		  TT[kk] = E->T[CPPR][E->ien[i].node[kk]];
+		  zz[kk] = E->sx[CPPR][3][E->ien[i].node[kk]]; /* radius */
                 }
 
                 for(jj=1;jj<=vpts;jj++) {
@@ -993,7 +993,7 @@ void visc_from_P(E,EEta) /* "plasticity" implementation
 	l = E->mat[CPPR][e] -1 ;	/* material of this element */
 	
 	for(kk=1;kk <= ends;kk++) /* nodal depths */
-	  zz[kk] = (1.0 - E->sx[CPPR][3][E->ien[CPPR][e].node[kk]]); /* for depth, zz = 1 - r */
+	  zz[kk] = (1.0 - E->sx[CPPR][3][E->ien[e].node[kk]]); /* for depth, zz = 1 - r */
 	
 	for(jj=1;jj <= vpts;jj++){ /* loop through integration points */
 	  
@@ -1025,7 +1025,7 @@ void visc_from_P(E,EEta) /* "plasticity" implementation
 	
 	l = E->mat[CPPR][e] -1 ;	
 	for(kk=1;kk <= ends;kk++)
-	  zz[kk] = (1.0 - E->sx[CPPR][3][E->ien[CPPR][e].node[kk]]); 
+	  zz[kk] = (1.0 - E->sx[CPPR][3][E->ien[e].node[kk]]); 
 	for(jj=1;jj <= vpts;jj++){ 
 	  zzz = 0.0;
 	  for(kk=1;kk<=ends;kk++)
@@ -1072,7 +1072,7 @@ void visc_from_C( E, EEta)
 	 element */
         for(p=0; p<E->composition.ncomp; p++) {
             for(kk = 1; kk <= ends; kk++){
-                CC[p][kk] = E->composition.comp_node[CPPR][p][E->ien[CPPR][i].node[kk]];
+                CC[p][kk] = E->composition.comp_node[CPPR][p][E->ien[i].node[kk]];
                 if(CC[p][kk] < 0)CC[p][kk]=0.0;
                 if(CC[p][kk] > 1)CC[p][kk]=1.0;
             }
@@ -1305,16 +1305,16 @@ static void low_viscosity_channel_factor(struct All_variables *E, float *F)
 
         /* find index of radius corresponding to lv_min_radius */
         for(e=1; e<=E->lmesh.elz; e++) {
-            rad_mean = 0.5 * (E->sx[CPPR][3][E->ien[CPPR][e].node[1]] +
-                              E->sx[CPPR][3][E->ien[CPPR][e].node[8]]);
+            rad_mean = 0.5 * (E->sx[CPPR][3][E->ien[e].node[1]] +
+                              E->sx[CPPR][3][E->ien[e].node[8]]);
             if(rad_mean >= E->viscosity.lv_min_radius) break;
         }
         nz_min[CPPR] = e;
 
         /* find index of radius corresponding to lv_max_radius */
         for(e=E->lmesh.elz; e>=1; e--) {
-            rad_mean = 0.5 * (E->sx[CPPR][3][E->ien[CPPR][e].node[1]] +
-                              E->sx[CPPR][3][E->ien[CPPR][e].node[8]]);
+            rad_mean = 0.5 * (E->sx[CPPR][3][E->ien[e].node[1]] +
+                              E->sx[CPPR][3][E->ien[e].node[8]]);
             if(rad_mean <= E->viscosity.lv_max_radius) break;
         }
         nz_max[CPPR] = e;
@@ -1325,15 +1325,15 @@ static void low_viscosity_channel_factor(struct All_variables *E, float *F)
             for(i=nz_min[CPPR]; i<=nz_max[CPPR]; i++) {
                 e = (k-1)*E->lmesh.elz + i;
 
-                rad_mean = 0.5 * (E->sx[CPPR][3][E->ien[CPPR][e].node[1]] +
-                                  E->sx[CPPR][3][E->ien[CPPR][e].node[8]]);
+                rad_mean = 0.5 * (E->sx[CPPR][3][E->ien[e].node[1]] +
+                                  E->sx[CPPR][3][E->ien[e].node[8]]);
 
                 /* loop over elements below e */
                 for(ii=i; ii>=nz_min[CPPR]; ii--) {
                     ee = (k-1)*E->lmesh.elz + ii;
 
-                    rr = 0.5 * (E->sx[CPPR][3][E->ien[CPPR][ee].node[1]] +
-                                E->sx[CPPR][3][E->ien[CPPR][ee].node[8]]);
+                    rr = 0.5 * (E->sx[CPPR][3][E->ien[ee].node[1]] +
+                                E->sx[CPPR][3][E->ien[ee].node[8]]);
 
                     /* if ee has tracers in it and is within the channel */
                     if((E->trace.ntracer_flavor[CPPR][flavor][ee] > 0) &&
@@ -1356,16 +1356,16 @@ static void low_viscosity_wedge_factor(struct All_variables *E, float *F)
 
         /* find index of radius corresponding to lv_min_radius */
         for(e=1; e<=E->lmesh.elz; e++) {
-            rad_mean = 0.5 * (E->sx[CPPR][3][E->ien[CPPR][e].node[1]] +
-                              E->sx[CPPR][3][E->ien[CPPR][e].node[8]]);
+            rad_mean = 0.5 * (E->sx[CPPR][3][E->ien[e].node[1]] +
+                              E->sx[CPPR][3][E->ien[e].node[8]]);
             if(rad_mean >= E->viscosity.lv_min_radius) break;
         }
         nz_min[CPPR] = e;
 
         /* find index of radius corresponding to lv_max_radius */
         for(e=E->lmesh.elz; e>=1; e--) {
-            rad_mean = 0.5 * (E->sx[CPPR][3][E->ien[CPPR][e].node[1]] +
-                              E->sx[CPPR][3][E->ien[CPPR][e].node[8]]);
+            rad_mean = 0.5 * (E->sx[CPPR][3][E->ien[e].node[1]] +
+                              E->sx[CPPR][3][E->ien[e].node[8]]);
             if(rad_mean <= E->viscosity.lv_max_radius) break;
         }
         nz_max[CPPR] = e;
@@ -1376,8 +1376,8 @@ static void low_viscosity_wedge_factor(struct All_variables *E, float *F)
             for(i=nz_min[CPPR]; i<=nz_max[CPPR]; i++) {
                 e = (k-1)*E->lmesh.elz + i;
 
-                rad_mean = 0.5 * (E->sx[CPPR][3][E->ien[CPPR][e].node[1]] +
-                                  E->sx[CPPR][3][E->ien[CPPR][e].node[8]]);
+                rad_mean = 0.5 * (E->sx[CPPR][3][E->ien[e].node[1]] +
+                                  E->sx[CPPR][3][E->ien[e].node[8]]);
 
                 /* loop over elements below e */
                 for(ii=i; ii>=nz_min[CPPR]; ii--) {
diff --git a/lib/global_defs.h b/lib/global_defs.h
index a783ca4..19e6987 100644
--- a/lib/global_defs.h
+++ b/lib/global_defs.h
@@ -797,7 +797,7 @@ struct All_variables {
     double gnomonic_reference_phi;
 
     struct COORD *eco[NCS];
-    struct IEN *ien[NCS];  /* global */
+    struct IEN *ien;  /* global */
     struct SIEN *sien[NCS];
     struct ID *id[NCS];
     struct COORD *ECO[MAX_LEVELS][NCS];



More information about the CIG-COMMITS mailing list