[cig-commits] commit: Make the sinker initialization work in 3D

Mercurial hg at geodynamics.org
Fri Apr 15 06:01:46 PDT 2011


changeset:   155:39e11db3c0a4
user:        Walter Landry <wlandry at caltech.edu>
date:        Thu Apr 14 13:23:29 2011 -0700
files:       FACStokes/initializeLevelData.C
description:
Make the sinker initialization work in 3D


diff -r 3ff94602daf5 -r 39e11db3c0a4 FACStokes/initializeLevelData.C
--- a/FACStokes/initializeLevelData.C	Thu Apr 14 13:03:34 2011 -0700
+++ b/FACStokes/initializeLevelData.C	Thu Apr 14 13:23:29 2011 -0700
@@ -56,7 +56,7 @@ void SAMRAI::FACStokes::initializeLevelD
     level->allocatePatchData(v_rhs_id);
   }
 
-  const double inclusion_radius=0.5;
+  // const double inclusion_radius=0.5;
   const double inclusion_viscosity=1e2;
   const double background_viscosity=1;
 
@@ -130,26 +130,34 @@ void SAMRAI::FACStokes::initializeLevelD
         double y=geom->getXLower()[1]
           + geom->getDx()[1]*(c[1]-cell_visc_box.lower()[1] + 0.5);
 
-        int i(static_cast<int>(x*max_x/scale_x)),
-          j(static_cast<int>(y*max_y/scale_y));
-        i=std::max(0,std::min(max_x,i));
-        j=std::max(0,std::min(max_y,j));
+        // int i(static_cast<int>(x*max_x/scale_x)),
+        //   j(static_cast<int>(y*max_y/scale_y));
+        // i=std::max(0,std::min(max_x,i));
+        // j=std::max(0,std::min(max_y,j));
               
-        cell_viscosity(c)=viscosity[i][j];
-
-        // std::cout << "cell "
-        //           << c[0] << " "
-        //           << c[1] << " "
-        //           << i << " "
-        //           << j << " "
-        //           << cell_viscosity(c) << " "
-        //           << "\n";
-
+        // cell_viscosity(c)=viscosity[i][j];
 
         // if(x*x + y*y < inclusion_radius*inclusion_radius)
         //   cell_viscosity(c)=inclusion_viscosity;
         // else
         //   cell_viscosity(c)=background_viscosity;
+
+        if(d_dim.getValue()==2)
+          {
+            if(x<1.0/3 || x>2.0/3 || y<1.0/3 || y>2.0/3)
+              cell_viscosity(c)=background_viscosity;
+            else
+              cell_viscosity(c)=inclusion_viscosity;
+          }
+        else
+          {
+            double z=geom->getXLower()[2]
+              + geom->getDx()[2]*(c[2]-cell_visc_box.lower()[2] + 0.5);
+            if(x<1.0/3 || x>2.0/3 || y<1.0/3 || y>2.0/3 || z<1.0/3 || z>2.0/3)
+              cell_viscosity(c)=background_viscosity;
+            else
+              cell_viscosity(c)=inclusion_viscosity;
+          }
       }
 
     if(d_dim.getValue()==2)
@@ -167,27 +175,22 @@ void SAMRAI::FACStokes::initializeLevelD
             double y=geom->getXLower()[1]
               + geom->getDx()[1]*(e[1]-edge_visc_box.lower()[1]);
 
-            int i(static_cast<int>(x*max_x/scale_x)),
-              j(static_cast<int>(y*max_y/scale_y));
-            i=std::max(0,std::min(max_x,i));
-            j=std::max(0,std::min(max_y,j));
+            // int i(static_cast<int>(x*max_x/scale_x)),
+            //   j(static_cast<int>(y*max_y/scale_y));
+            // i=std::max(0,std::min(max_x,i));
+            // j=std::max(0,std::min(max_y,j));
               
-            edge_viscosity(e)=viscosity[i][j];
-
-        // std::cout << "edge "
-        //           << e[0] << " "
-        //           << e[1] << " "
-        //           << i << " "
-        //           << j << " "
-        //           << x << " "
-        //           << y << " "
-        //           << edge_viscosity(e) << " "
-        //           << "\n";
+            // edge_viscosity(e)=viscosity[i][j];
 
             // if(x*x + y*y < inclusion_radius*inclusion_radius)
             //   edge_viscosity(e)=inclusion_viscosity;
             // else
             //   edge_viscosity(e)=background_viscosity;
+
+            if(x<1.0/3 || x>2.0/3 || y<1.0/3 || y>2.0/3)
+              edge_viscosity(e)=background_viscosity;
+            else
+              edge_viscosity(e)=inclusion_viscosity;
           }
       }
     else if(d_dim.getValue()==3)
@@ -207,17 +210,29 @@ void SAMRAI::FACStokes::initializeLevelD
               double dy(0);
               if(ix==1)
                 dy=0.5;
+              double dz(0);
+              if(ix==2)
+                dz=0.5;
               double x=geom->getXLower()[0]
                 + geom->getDx()[0]*(e[0]-edge_visc_box.lower()[0] + dx);
               double y=geom->getXLower()[1]
                 + geom->getDx()[1]*(e[1]-edge_visc_box.lower()[1] + dy);
+              double z=geom->getXLower()[2]
+                + geom->getDx()[2]*(e[2]-edge_visc_box.lower()[2] + dz);
 
-              int i(static_cast<int>(x*max_x)), j(static_cast<int>(y*max_y));
-              edge_viscosity(e)=viscosity[i][j];
+              // int i(static_cast<int>(x*max_x)), j(static_cast<int>(y*max_y));
+              // edge_viscosity(e)=viscosity[i][j];
+
               // if(x*x + y*y < inclusion_radius*inclusion_radius)
               //   edge_viscosity(e)=inclusion_viscosity;
               // else
               //   edge_viscosity(e)=background_viscosity;
+
+
+            if(x<1.0/3 || x>2.0/3 || y<1.0/3 || y>2.0/3 || z<1.0/3 || z>2.0/3)
+              edge_viscosity(e)=background_viscosity;
+            else
+              edge_viscosity(e)=inclusion_viscosity;
             }
       }
 
@@ -245,8 +260,31 @@ void SAMRAI::FACStokes::initializeLevelD
     for(pdat::SideIterator si(pbox,1); si; si++)
       {
         pdat::SideIndex s=si();
+
+        double x=geom->getXLower()[0]
+          + geom->getDx()[0]*(s[0]-pbox.lower()[0]+0.5);
+        double y=geom->getXLower()[1]
+          + geom->getDx()[1]*(s[1]-pbox.lower()[1]);
+
+        if(d_dim.getValue()==2)
+          {
+            if(x<1.0/3 || x>2.0/3 || y<1.0/3 || y>2.0/3)
+              (*v_rhs_data)(s)=1;
+            else
+              (*v_rhs_data)(s)=1.03;
+          }
+        else
+          {
+            double z=geom->getXLower()[2]
+              + geom->getDx()[2]*(s[2]-pbox.lower()[2]);
+            if(x<1.0/3 || x>2.0/3 || y<1.0/3 || y>2.0/3 || z<1.0/3 || z>2.0/3)
+              (*v_rhs_data)(s)=1;
+            else
+              (*v_rhs_data)(s)=1.03;
+          }
+            
         // (*v_rhs_data)(s)=10;
-        (*v_rhs_data)(s)=0;
+        // (*v_rhs_data)(s)=0;
       }
     if(d_dim.getValue()==3)
       for(pdat::SideIterator si(pbox,2); si; si++)



More information about the CIG-COMMITS mailing list