[cig-commits] commit: Change dCx to use FTensor

Mercurial hg at geodynamics.org
Sun Mar 11 01:48:10 PST 2012


changeset:   79:168fc9952868
tag:         tip
user:        Walter Landry <wlandry at caltech.edu>
date:        Sun Mar 11 01:47:57 2012 -0800
files:       compute_Cx.cxx
description:
Change dCx to use FTensor


diff -r e14e5fab7ba8 -r 168fc9952868 compute_Cx.cxx
--- a/compute_Cx.cxx	Sat Mar 10 20:11:14 2012 -0800
+++ b/compute_Cx.cxx	Sun Mar 11 01:47:57 2012 -0800
@@ -52,12 +52,10 @@ void compute_Cx(const Model &model, cons
 
           double p_jump=-2*eta_jump*dv(1);
 
-          FTensor::Tensor1<double,2> dp_jump;
-          dp_jump(t)=-2*eta_jump*ddv(t);
-          dp_jump(n)=2*eta_jump*ddv(n);
+          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);
@@ -71,21 +69,11 @@ void compute_Cx(const Model &model, cons
           Cx=dz_dd_sign*2*dz_dd_correction;
 
 
-
-
-
-
-
-
           double eta=exp(log_etax[i][j]);
           double delta=(h-std::fabs(dx))/h;
           double dvx_yy_dv=-2*eta*eta/(h*h*(min_eta*min_eta + max_eta*max_eta));
           if(j==0 || j==Ny-1)
             dvx_yy_dv/=2;
-
-
-          // double ddv_dv=dvx_yy_dv,0;
-          // double dz_nt_dv=-eta_jump*ddv_dv;
 
           double dzy_yx_dv=-eta_jump*dvx_yy_dv;
           double dvy_y_dv=-dzy_yx_dv*h/(min_eta+max_eta);
@@ -94,27 +82,42 @@ void compute_Cx(const Model &model, cons
           double dvpp_dv=-(1-delta)/2 + (1-delta)*(1-delta)/2;
           double dvx_dv=(eta*(4*dvp_dv - dvpp_dv)  + 2*h*dzx_x_dv)
             /(3*(min_eta+max_eta));
-          double dp_x_dv=2*eta_jump*dvx_yy_dv;
-          double dzx_xx_dv=-eta_jump*dvx_yy_dv + dp_x_dv;
-          double dp_dv=-2*eta_jump*dvy_y_dv;
 
-          dCx_dvx=-dz_dd_sign*2*(eta_jump*dvx_dv + dx*dzx_x_dv
-                                  + dx*dx*dzx_xx_dv/2)/(h*h);
+
+          FTensor::Tensor1<double,2> ddv_dv(dvx_yy_dv,0);
+          FTensor::Tensor1<double,2> dv_dv(0,dvy_y_dv);
+          FTensor::Tensor1<double,2> v_dv(dvx_dv,0);
+
+          FTensor::Tensor1<double,2> dp_dv(2*eta_jump*ddv_dv(n),
+                                           -2*eta_jump*ddv_dv(t));
+          double p_dv=-2*eta_jump*dv_dv(t);
+
+          FTensor::Tensor2<double,2,2> dz_dv;
+          dz_dv(a,n)=-eta_jump*dv_dv(b)*ddel(a,b);
+          dz_dv(a,t)=eta_jump*dv_dv(a);
+
+          FTensor::Tensor3_christof<double,2,2> ddz_dv;
+          ddz_dv(a,t,t)=eta_jump*ddv_dv(a);
+          ddz_dv(a,n,n)=-ddz_dv(a,t,t) + dp_dv(a);
+          ddz_dv(a,n,t)=-eta_jump*ddv_dv(b)*ddel(a,b);
+
+          dCx_dvx=-dz_dd_sign*2*(eta_jump*v_dv(a)*xyz(a)
+                                 - dx*dz_dv(a,b)*xyz(a)*dir(b)
+                                 + dx*dx*ddz_dv(a,b,c)*xyz(a)*dir(b)*dir(c)/2)
+            /(h*h);
 
           if(x+h/2>middle && x-h/2<middle)
             {
               dx=(x>middle) ? ((x-h/2)-middle)
                 : ((x+h/2)-middle);
 
-              double dp_d_jump=dp_jump(a)*dir(a);
-              Cx+=(p_jump + dx*dp_d_jump)/h;
+              Cx+=(p_jump + dx*dp_jump(a)*dir(a))/h
+                - (dz_jump(a,b)*dir2(a)*dir3(b)
+                   + dx*ddz_jump(a,b,c)*dir2(a)*dir3(b)*dir4(c))/h;
 
-              double dz2_3_jump=dz_jump(a,b)*dir2(a)*dir3(b);
-              double ddz2_34_jump=ddz_jump(a,b,c)*dir2(a)*dir3(b)*dir4(c);
-              Cx-=(dz2_3_jump + dx*ddz2_34_jump)/h;
-
-              dCx_dvx+= -(eta_jump*dvy_y_dv + dx*dzy_yx_dv)/h
-                + (dp_dv + dx*dp_x_dv)/h;
+              dCx_dvx+=(p_dv + dx*dp_dv(a)*dir(a))/h
+                - (dz_dv(a,b)*dir2(a)*dir3(b)
+                   + dx*ddz_dv(a,b,c)*dir2(a)*dir3(b)*dir4(c))/h;
             }
           dCx_dzx=dCx_dvx/eta;
         }



More information about the CIG-COMMITS mailing list