[cig-commits] commit: Add an interface forcing term to initializeLevelData

Mercurial hg at geodynamics.org
Thu Jun 7 13:35:58 PDT 2012


changeset:   272:eba2a1fe6b22
user:        Walter Landry <wlandry at caltech.edu>
date:        Sat May 05 05:51:52 2012 -0700
files:       src/FACStokes/initializeLevelData.C
description:
Add an interface forcing term to initializeLevelData


diff -r c7e04498ed50 -r eba2a1fe6b22 src/FACStokes/initializeLevelData.C
--- a/src/FACStokes/initializeLevelData.C	Thu May 03 11:13:17 2012 -0700
+++ b/src/FACStokes/initializeLevelData.C	Sat May 05 05:51:52 2012 -0700
@@ -33,7 +33,7 @@ double gauss(double x, double sigma)
 
 double omega(double x, double beta)
 {
-  double pi=4*atan(1);
+  const double pi=4*atan(1);
 
   if (fabs(x) <= (1-2*beta)/(1-beta)/2)
     {
@@ -178,6 +178,54 @@ void SAMRAI::FACStokes::initializeLevelD
         double beta(0.2);
 	double scale(-10.);
 
+        hier::Box pbox = v_rhs_data->getBox();
+        for(int ix=0;ix<dim;++ix)
+          {
+            double offset[]={0.5,0.5,0.5};
+            offset[ix]=0;
+
+            for(pdat::SideIterator si(pbox,ix); si; si++)
+              {
+                pdat::SideIndex s=si();
+                double xyz[dim];
+                for(int d=0;d<dim;++d)
+                  xyz[d]=geom->getXLower()[d]
+                    + dx[d]*(s[d]-pbox.lower()[d]+offset[d]);
+
+                (*v_rhs_data)(s)=0;
+                int sign(0);
+                if(xyz[0]<=x && xyz[0]+dx[0]>x)
+                  sign=1;
+                else if(xyz[0]>x && xyz[0]-dx[0]<=x)
+                  sign=-1;
+                if(sign!=0)
+                  {
+                    switch(ix)
+                      {
+                      case 0:
+                        if(xyz[1]<=y+L/2 && xyz[1]+dx[1]>y+L/2)
+                          sign=-1;
+                        else if(xyz[1]<=y-L/2 && xyz[1]+dx[1]>y-L/2)
+                          sign=1;
+                        else
+                          sign=0;
+                        (*v_rhs_data)(s)=scale*sign/(dx[0]*dx[1]);
+                        break;
+                      case 1:
+                        if(sign!=0 && xyz[1]<=y+L/2 && xyz[1]>y-L/2)
+                          (*v_rhs_data)(s)=scale*sign/(dx[0]*dx[0]);
+                        break;
+                      case 2:
+                        break;
+                      default:
+                        break;
+                      }
+                  }
+              }
+          }
+        if(0)
+          {
+
 	typedef struct {
 		double x1s,x1i,x2s,x3s,x3i;
 	} rpoint;
@@ -192,7 +240,6 @@ void SAMRAI::FACStokes::initializeLevelD
 	zr = sdip   *x2r+cdip   *z;
 
         hier::Box pbox = v_rhs_data->getBox();
-        int ix_offset(0);
         for(int ix=0;ix<dim;++ix)
           {
             double offset[]={0.5,0.5,0.5};
@@ -324,7 +371,7 @@ void SAMRAI::FACStokes::initializeLevelD
             int i=1;
             for(int d=0;d<dim;++d)
               i*=v_rhs_ijk[d];
-            ix_offset+=i;
+          }
           }
       }
   }    // End patch loop.



More information about the CIG-COMMITS mailing list