[cig-commits] commit: Convert all of the jump calculation in compute_Cx to FTensor
Mercurial
hg at geodynamics.org
Sat Mar 10 15:11:46 PST 2012
changeset: 77:e7346f4e5961
tag: tip
user: Walter Landry <wlandry at caltech.edu>
date: Sat Mar 10 15:11:33 2012 -0800
files: compute_Cx.cxx
description:
Convert all of the jump calculation in compute_Cx to FTensor
diff -r 4db4b87a3fdf -r e7346f4e5961 compute_Cx.cxx
--- a/compute_Cx.cxx Sat Mar 10 15:11:15 2012 -0800
+++ b/compute_Cx.cxx Sat Mar 10 15:11:33 2012 -0800
@@ -27,40 +27,56 @@ void compute_Cx(const Model &model, cons
vx,vy,dvx_y,dvy_y,
dvx_yy,dvy_yy);
- const int d(0);
- FTensor::Tensor1<double,2> v(vx,0), dv(0,dvy_y), ddv(dvx_yy,0), norm(1,0),
- tangent(0,1);
- FTensor::Tensor2_antisymmetric<double,2> eps(1);
+ FTensor::Tensor1<double,2> v(vx,0), dv(0,dvy_y), ddv(dvx_yy,0),
+ xyz(1,0), dir(1,0);
+ FTensor::Tensor2_symmetric<double,2> ddel(0,1,0);
const FTensor::Index<'a',2> a;
+ const FTensor::Index<'b',2> b;
+ const FTensor::Index<'c',2> c;
double dx=(x>middle) ? (middle-(x-h))
: (middle-(x+h));
- double z_jump=eta_jump*v(d);
+ double z_jump=eta_jump*v(a)*xyz(a);
- double dz_n_jump=eta_jump*(dv(0)*norm(a) - dv(1)*tangent(a))*eps(d,a);
- double dz_t_jump=eta_jump*(dv(0)*norm(d) + dv(1)*tangent(d));
- double dz_x_jump=dz_n_jump*norm(d) + dz_t_jump*tangent(d);
+ 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);
- double dp_t_jump=-2*eta_jump*ddv(1);
- double dp_n_jump=2*eta_jump*ddv(0);
- double dp_x_jump=dp_n_jump*norm(d) + dp_t_jump*tangent(d);
+ FTensor::Tensor1<double,2> dp_jump;
+ dp_jump(1)=-2*eta_jump*ddv(1);
+ dp_jump(0)=2*eta_jump*ddv(0);
+ double dp_d_jump=dp_jump(a)*dir(a);
- double dz_tt=eta_jump*(ddv(0)*norm(d) + ddv(1)*tangent(d));
- double dz_xx_jump=-dz_tt + dp_x_jump;
+ FTensor::Tensor3_christof<double,2,2> ddz_jump;
- double dz_xx_correction=
- -(z_jump - dx*dz_x_jump
- + dx*dx*dz_xx_jump/2)/(h*h);
- const int dz_xx_sign(x>middle ? -1 : 1);
- Cx=dz_xx_sign*2*dz_xx_correction;
+ 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);
+
+ double dz_dd_correction=
+ -(z_jump - dx*dz_d_jump
+ + dx*dx*ddz_dd_jump/2)/(h*h);
+ const int dz_dd_sign(x>middle ? -1 : 1);
+ 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);
double dzx_x_dv=eta_jump*dvy_y_dv;
@@ -72,7 +88,7 @@ void compute_Cx(const Model &model, cons
double dzx_xx_dv=-eta_jump*dvx_yy_dv + dp_x_dv;
double dp_dv=-2*eta_jump*dvy_y_dv;
- dCx_dvx=-dz_xx_sign*2*(eta_jump*dvx_dv + dx*dzx_x_dv
+ dCx_dvx=-dz_dd_sign*2*(eta_jump*dvx_dv + dx*dzx_x_dv
+ dx*dx*dzx_xx_dv/2)/(h*h);
if(x+h/2>middle && x-h/2<middle)
@@ -80,7 +96,7 @@ void compute_Cx(const Model &model, cons
dx=(x>middle) ? ((x-h/2)-middle)
: ((x+h/2)-middle);
- Cx+=(p_jump + dx*dp_x_jump)/h;
+ Cx+=(p_jump + dx*dp_d_jump)/h;
Cx-=eta_jump*(dvy_y - dx*dvx_yy)/h;
More information about the CIG-COMMITS
mailing list