[cig-commits] commit: Hard code in reading in viscosity data from a file.

Mercurial hg at geodynamics.org
Mon Apr 11 12:14:45 PDT 2011


changeset:   151:f8207678dd77
tag:         tip
user:        Walter Landry <wlandry at caltech.edu>
date:        Mon Apr 11 01:17:24 2011 -0700
files:       FACStokes/initializeLevelData.C
description:
Hard code in reading in viscosity data from a file.


diff -r dd6088a218ae -r f8207678dd77 FACStokes/initializeLevelData.C
--- a/FACStokes/initializeLevelData.C	Mon Apr 11 01:15:46 2011 -0700
+++ b/FACStokes/initializeLevelData.C	Mon Apr 11 01:17:24 2011 -0700
@@ -32,18 +32,12 @@ void SAMRAI::FACStokes::initializeLevelD
 void SAMRAI::FACStokes::initializeLevelData
 (const tbox::Pointer<hier::BasePatchHierarchy> patch_hierarchy,
  const int level_number,
- const double init_data_time,
- const bool can_be_refined,
- const bool initial_time,
- const tbox::Pointer<hier::BasePatchLevel> old_level,
+ const double ,
+ const bool ,
+ const bool ,
+ const tbox::Pointer<hier::BasePatchLevel> ,
  const bool allocate_data)
 {
-
-  (void)init_data_time;
-  (void)can_be_refined;
-  (void)initial_time;
-  (void)old_level;
-
   tbox::Pointer<hier::PatchHierarchy> hierarchy = patch_hierarchy;
   tbox::Pointer<geom::CartesianGridGeometry> grid_geom =
     hierarchy->getGridGeometry();
@@ -65,6 +59,49 @@ void SAMRAI::FACStokes::initializeLevelD
   const double inclusion_radius=0.5;
   const double inclusion_viscosity=1e2;
   const double background_viscosity=1;
+
+  static double viscosity[129][129];
+  static int max_x(0), max_y(0);
+
+  double max_viscosity(.1), min_viscosity(0.0001);
+  // double max_viscosity(100), min_viscosity(0);
+
+  max_x=127;
+  // max_y=127;
+  max_y=31;
+
+  double scale_x(0.21615179018), scale_y(0.04);
+  // double scale_x(1), scale_y(1);
+
+  if(viscosity[128][128]!=boundary_value)
+    {
+      viscosity[128][128]=boundary_value;
+      std::ifstream infile("viscosity");
+      // int i, j;
+      // infile >> i >> j;
+      double x, y;
+      infile >> x >> y;
+      while(infile)
+        {
+          // max_x=std::max(i,max_x);
+          // max_y=std::max(j,max_y);
+          double visc;
+          infile >> visc;
+          int i(static_cast<int>(max_x*x/scale_x + 0.05)),
+            j(static_cast<int>(max_y*y/scale_y + 0.05));
+          // viscosity[i][j]=1;
+          viscosity[i][j]=std::max(min_viscosity,std::min(max_viscosity,visc));
+          // std::cout << "viscosity "
+          //           << i << " " << j << " "
+          //           << (max_x*x/scale_x) << " "
+          //           << (max_y*y/scale_y) << " "
+          //           << visc << " "
+          //           << viscosity[i][j] << " "
+          //           << "\n";
+          infile >> x >> y;
+        }
+    }
+
 
   /*
    * Initialize data in all patches in the level.
@@ -93,10 +130,26 @@ void SAMRAI::FACStokes::initializeLevelD
         double y=geom->getXLower()[1]
           + geom->getDx()[1]*(c[1]-cell_visc_box.lower()[1] + 0.5);
 
-        if(x*x + y*y < inclusion_radius*inclusion_radius)
-          cell_viscosity(c)=inclusion_viscosity;
-        else
-          cell_viscosity(c)=background_viscosity;
+        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";
+
+
+        // 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)
@@ -113,10 +166,28 @@ void SAMRAI::FACStokes::initializeLevelD
               + geom->getDx()[0]*(e[0]-edge_visc_box.lower()[0]);
             double y=geom->getXLower()[1]
               + geom->getDx()[1]*(e[1]-edge_visc_box.lower()[1]);
-            if(x*x + y*y < inclusion_radius*inclusion_radius)
-              edge_viscosity(e)=inclusion_viscosity;
-            else
-              edge_viscosity(e)=background_viscosity;
+
+            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";
+
+            // if(x*x + y*y < inclusion_radius*inclusion_radius)
+            //   edge_viscosity(e)=inclusion_viscosity;
+            // else
+            //   edge_viscosity(e)=background_viscosity;
           }
       }
     else if(d_dim.getValue()==3)
@@ -140,10 +211,13 @@ void SAMRAI::FACStokes::initializeLevelD
                 + 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);
-              if(x*x + y*y < inclusion_radius*inclusion_radius)
-                edge_viscosity(e)=inclusion_viscosity;
-              else
-                edge_viscosity(e)=background_viscosity;
+
+              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;
             }
       }
 
@@ -171,8 +245,8 @@ void SAMRAI::FACStokes::initializeLevelD
     for(pdat::SideIterator si(pbox,1); si; si++)
       {
         pdat::SideIndex s=si();
-        (*v_rhs_data)(s)=10;
-        // (*v_rhs_data)(s)=0;
+        // (*v_rhs_data)(s)=10;
+        (*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