[cig-commits] commit: Clean up the implementation of setting the viscosity from an input array

Mercurial hg at geodynamics.org
Mon May 2 12:38:56 PDT 2011


changeset:   229:9f5ef593327d
tag:         tip
user:        Walter Landry <wlandry at caltech.edu>
date:        Mon May 02 12:37:35 2011 -0700
files:       src/FACStokes/initializeLevelData.C
description:
Clean up the implementation of setting the viscosity from an input array


diff -r c2163049e005 -r 9f5ef593327d src/FACStokes/initializeLevelData.C
--- a/src/FACStokes/initializeLevelData.C	Mon May 02 12:29:26 2011 -0700
+++ b/src/FACStokes/initializeLevelData.C	Mon May 02 12:37:35 2011 -0700
@@ -62,41 +62,28 @@ void SAMRAI::FACStokes::initializeLevelD
     const double *dx=geom->getDx();
 
     /* Initialize cell viscosity */
-    tbox::Pointer<pdat::CellData<double> > cell_viscosity_ptr =
+    tbox::Pointer<pdat::CellData<double> > cell_viscosity =
       patch->getPatchData(cell_viscosity_id);
-    pdat::CellData<double> &cell_viscosity(*cell_viscosity_ptr);
 
-    hier::Box cell_visc_box = cell_viscosity.getBox();
-    for(pdat::CellIterator ci(cell_viscosity.getGhostBox()); ci; ci++)
+    hier::Box cell_visc_box = cell_viscosity->getBox();
+    for(pdat::CellIterator ci(cell_viscosity->getGhostBox()); ci; ci++)
       {
         pdat::CellIndex c=ci();
-        double x=geom->getXLower()[0]
-          + geom->getDx()[0]*(c[0]-cell_visc_box.lower()[0] + 0.5);
-        double y=geom->getXLower()[1]
-          + geom->getDx()[1]*(c[1]-cell_visc_box.lower()[1] + 0.5);
+        double xyz[dim];
+        for(int d=0;d<dim;++d)
+          xyz[d]=geom->getXLower()[d]
+            + dx[d]*(c[d]-cell_visc_box.lower()[d] + 0.5);
 
-        int i(static_cast<int>(x*(viscosity_ijk[0]-1)
-                               /(viscosity_xyz_max[0]-viscosity_xyz_min[0]))),
-          j(static_cast<int>(y*(viscosity_ijk[1]-1)
-                             /(viscosity_xyz_max[1]-viscosity_xyz_min[1])));
-        i=std::max(0,std::min(viscosity_ijk[0]-1,i));
-        j=std::max(0,std::min(viscosity_ijk[1]-1,j));
-
-        if(dim==2)
+        int ijk(0), factor(1);
+        for(int d=0;d<dim;++d)
           {
-            cell_viscosity(c)=viscosity[i+viscosity_ijk[0]*j];
+            int i=static_cast<int>(xyz[d]*(viscosity_ijk[d]-1)
+                                   /(viscosity_xyz_max[d]-viscosity_xyz_min[d]));
+            i=std::max(0,std::min(viscosity_ijk[d]-1,i));
+            ijk+=i*factor;
+            factor*=viscosity_ijk[d];
           }
-        else
-          {
-            double z=geom->getXLower()[2]
-              + geom->getDx()[2]*(c[2]-cell_visc_box.lower()[2] + 0.5);
-            int k(static_cast<int>(z*(viscosity_ijk[2]-1)
-                                   /(viscosity_xyz_max[2]
-                                     - viscosity_xyz_min[2])));
-            k=std::max(0,std::min(viscosity_ijk[2]-1,k));
-            cell_viscosity(c)=
-              viscosity[i+viscosity_ijk[0]*(j+viscosity_ijk[1]*k)];
-          }
+        (*cell_viscosity)(c)=viscosity[ijk];
       }
 
     /* I do not think this is actually necessary. */
@@ -128,7 +115,7 @@ void SAMRAI::FACStokes::initializeLevelD
             for(pdat::SideIterator si(pbox,ix); si; si++)
               {
                 pdat::SideIndex s=si();
-                double xyz[]={0,0,0};
+                double xyz[dim];
                 for(int d=0;d<dim;++d)
                   xyz[d]=geom->getXLower()[d]
                     + dx[d]*(s[d]-pbox.lower()[d]+offset[d]);



More information about the CIG-COMMITS mailing list