[cig-commits] commit: switch jump computation out to compute_jumps

Mercurial hg at geodynamics.org
Sun Mar 25 19:15:05 PDT 2012


changeset:   115:06aaacbd9afb
tag:         tip
user:        Walter Landry <wlandry at caltech.edu>
date:        Sun Mar 25 19:14:56 2012 -0700
files:       compute_Cxyz.cxx compute_jumps.cxx wscript
description:
switch jump computation out to compute_jumps


diff -r 2690d006b243 -r 06aaacbd9afb compute_Cxyz.cxx
--- a/compute_Cxyz.cxx	Sun Mar 25 16:28:14 2012 -0700
+++ b/compute_Cxyz.cxx	Sun Mar 25 19:14:56 2012 -0700
@@ -3,6 +3,15 @@
 #include "compute_v_on_interface.hxx"
 #include "FTensor.hpp"
 #include "Interface.hxx"
+
+void compute_jumps(const FTensor::Tensor1<double,2> &v,
+                   const FTensor::Tensor1<double,2> &dv,
+                   const FTensor::Tensor1<double,2> &ddv, 
+                   FTensor::Tensor1<double,2> &z_jump,
+                   FTensor::Tensor2<double,2,2> &dz_jump,
+                   FTensor::Tensor3_christof<double,2,2> &ddz_jump,
+                   double &p_jump,
+                   FTensor::Tensor1<double,2> &dp_jump);
 
 void compute_Cxyz(const double zx[Nx+1][Ny],
                   const double zy[Nx][Ny+1],
@@ -41,38 +50,22 @@ void compute_Cxyz(const double zx[Nx+1][
                                  interface.pos[dd],d,
                                  v,dv,ddv);
 
-          FTensor::Tensor2_symmetric<int,2> ddel(0,1,0);
-  
-          double dx=(pos(dd)>interface.pos[dd](dd))
-            ? (interface.pos[dd](dd)-(pos(dd)-h))
-            : (interface.pos[dd](dd)-(pos(dd)+h));
-          double z_jump=eta_jump*v(a)*xyz(a);
+          
+          FTensor::Tensor1<double,2> dx(0,0);
+          dx(dd)=interface.pos[dd](dd) - pos(dd)
+            - h*sign(interface.pos[dd](dd)-pos(dd));
+          FTensor::Tensor1<double,2> z_jump;
+          FTensor::Tensor2<double,2,2> dz_jump;
+          FTensor::Tensor3_christof<double,2,2> ddz_jump;
+          double p_jump;
+          FTensor::Tensor1<double,2> dp_jump;
 
-          FTensor::Tensor2<double,2,2> dz_jump;
-          FTensor::Number<0> n;
-          FTensor::Number<1> t;
-
-          dz_jump(a,n)=-eta_jump*dv(b)*ddel(a,b);
-          dz_jump(a,t)=eta_jump*dv(a);
-          double dz_d_jump=dz_jump(a,b)*xyz(a)*dir(b);
-
-          double p_jump=-2*eta_jump*dv(1);
-
-          /* TODO: dp_jump and ddz_jump both need to be corrected for
-             curvature and density jumps. */
-
-          FTensor::Tensor1<double,2> dp_jump(2*eta_jump*ddv(n),
-                                             -2*eta_jump*ddv(t));
-
-          FTensor::Tensor3_christof<double,2,2> ddz_jump;
-          ddz_jump(a,t,t)=eta_jump*ddv(a);
-          ddz_jump(a,n,n)=-ddz_jump(a,t,t) + dp_jump(a);
-          ddz_jump(a,n,t)=-eta_jump*ddv(b)*ddel(a,b);
-          
-          double ddz_dd_jump=ddz_jump(a,b,c)*xyz(a)*dir(b)*dir(c);
+          compute_jumps(v,dv,ddv,z_jump,dz_jump,ddz_jump,p_jump,dp_jump);
 
           double dz_dd_correction=
-            -(z_jump - dx*dz_d_jump + dx*dx*ddz_dd_jump/2)/(h*h);
+            -xyz(a)*(z_jump(a) - dz_jump(a,b)*dx(b)
+                     + ddz_jump(a,b,c)*dx(b)*dx(c)/2)/(h*h);
+
           const int dz_dd_factor((pos(dd)>interface.pos[dd](dd) ? -1 : 1)
                                  *(d==dd ? 2 : 1));
 
@@ -80,11 +73,11 @@ void compute_Cxyz(const double zx[Nx+1][
 
           if(d==dd && interface.intersect_dp)
             {
-              dx=(pos(dd)>interface.pos[dd](dd))
+              dx(dd)=(pos(dd)>interface.pos[dd](dd))
                 ? ((pos(dd)-h/2)-interface.pos[dd](dd))
                 : ((pos(dd)+h/2)-interface.pos[dd](dd));
 
-              C+=(p_jump + dx*dp_jump(a)*dir(a))/h;
+              C+=(p_jump + dp_jump(a)*dx(a))/h;
             }
 
           if(interface.intersect_sides[dd])
@@ -93,12 +86,12 @@ void compute_Cxyz(const double zx[Nx+1][
               FTensor::Tensor1<int,2> dir2(0,0), dir3(0,0);
               dir2((d+1)%2)=1;
               dir3((dd+1)%2)=1;
-              dx=(pos(dd)>interface.pos[dd](dd))
+              dx(dd)=(pos(dd)>interface.pos[dd](dd))
                 ? ((pos(dd)-h/2)-interface.pos[dd](dd))
                 : ((pos(dd)+h/2)-interface.pos[dd](dd));
 
               C+=-(dz_jump(a,b)*dir2(a)*dir3(b)
-                   + dx*ddz_jump(a,b,c)*dir2(a)*dir3(b)*dir(c))/h;
+                   + ddz_jump(a,b,c)*dir2(a)*dir3(b)*dx(c))/h;
             }
         }
     }
diff -r 2690d006b243 -r 06aaacbd9afb compute_jumps.cxx
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/compute_jumps.cxx	Sun Mar 25 19:14:56 2012 -0700
@@ -0,0 +1,36 @@
+#include "FTensor.hpp"
+#include "constants.hxx"
+
+void compute_jumps(const FTensor::Tensor1<double,2> &v,
+                   const FTensor::Tensor1<double,2> &dv,
+                   const FTensor::Tensor1<double,2> &ddv, 
+                   FTensor::Tensor1<double,2> &z_jump,
+                   FTensor::Tensor2<double,2,2> &dz_jump,
+                   FTensor::Tensor3_christof<double,2,2> &ddz_jump,
+                   double &p_jump,
+                   FTensor::Tensor1<double,2> &dp_jump)
+{
+  const FTensor::Index<'a',2> a;
+  const FTensor::Index<'b',2> b;
+
+  z_jump(a)=eta_jump*v(a);
+  
+  FTensor::Number<0> n;
+  FTensor::Number<1> t;
+  FTensor::Tensor2_symmetric<int,2> ddel(0,1,0);
+  
+  dz_jump(a,n)=-eta_jump*dv(b)*ddel(a,b);
+  dz_jump(a,t)=eta_jump*dv(a);
+
+  p_jump=-2*eta_jump*dv(1);
+
+  /* TODO: dp_jump and ddz_jump both need to be corrected for
+     curvature and density jumps. */
+
+  dp_jump(n)=2*eta_jump*ddv(n);
+  dp_jump(t)=-2*eta_jump*ddv(t);
+
+  ddz_jump(a,t,t)=eta_jump*ddv(a);
+  ddz_jump(a,n,n)=-ddz_jump(a,t,t) + dp_jump(a);
+  ddz_jump(a,n,t)=-eta_jump*ddv(b)*ddel(a,b);
+}
diff -r 2690d006b243 -r 06aaacbd9afb wscript
--- a/wscript	Sun Mar 25 16:28:14 2012 -0700
+++ b/wscript	Sun Mar 25 19:14:56 2012 -0700
@@ -13,6 +13,7 @@ def build(bld):
                         'compute_Cxyz.cxx',
                         'compute_Cp.cxx',
                         'compute_dC_dv.cxx',
+                        'compute_jumps.cxx',
                         'Interface/Interface.cxx'],
 
         target       = 'Gamr_disc',



More information about the CIG-COMMITS mailing list