[cig-commits] commit: Computes solCx correctly for constant viscosity
Mercurial
hg at geodynamics.org
Fri Feb 10 16:00:17 PST 2012
changeset: 18:868bc23b3588
user: Walter Landry <wlandry at caltech.edu>
date: Sun Dec 04 12:09:25 2011 -0800
files: constants.hxx initial.cxx
description:
Computes solCx correctly for constant viscosity
diff -r d933ef1bd792 -r 868bc23b3588 constants.hxx
--- a/constants.hxx Sun Dec 04 12:00:01 2011 -0800
+++ b/constants.hxx Sun Dec 04 12:09:25 2011 -0800
@@ -6,7 +6,7 @@ const double eta_jump=max_eta-min_eta;
#include <cmath>
const double log_max_eta=std::log(max_eta);
const double log_min_eta=std::log(min_eta);
-const double middle=0.5;
+const double middle=0.4;
const double h(1.0/N);
const double pi(atan(1.0)*4);
diff -r d933ef1bd792 -r 868bc23b3588 initial.cxx
--- a/initial.cxx Sun Dec 04 12:00:01 2011 -0800
+++ b/initial.cxx Sun Dec 04 12:09:25 2011 -0800
@@ -14,7 +14,7 @@ void initial(const Model &model, double
std::complex<double> phi, psi, dphi, v;
const double pi(std::atan(1.0)*4);
- const double kx0(pi*middle), kx1(pi*(1-middle));
+ const double kx0(pi*middle), kx1(pi*(middle-1));
const double cosh0(std::cosh(kx0)), sinh0(std::sinh(kx0)),
cos0(std::cos(kx0)), sin0(std::sin(kx0)),
cosh1(std::cosh(kx1)), sinh1(std::sinh(kx1)),
@@ -23,16 +23,16 @@ void initial(const Model &model, double
const double eta0(min_eta), eta1(max_eta), rho(0.5);
double m[]={
- -kx0*cosh0, sinh0-kx0*cosh0, -kx1*cosh1, (sinh1-kx1*cosh1),
+ -kx0*cosh0, sinh0-kx0*cosh0, kx1*cosh1, -(sinh1-kx1*cosh1),
cosh0+kx0*sinh0, kx0*sinh0, -(cosh1+kx1*sinh1), -kx1*sinh1,
-kx0*sinh0, cosh0-kx0*sinh0, kx1*sinh1, -(cosh1-kx1*sinh1),
- -sinh0-kx0*cosh0, -kx0*cosh0, -(sinh1+kx1*cosh1), -kx1*cosh1};
+ -sinh0-kx0*cosh0, -kx0*cosh0, (sinh1+kx1*cosh1), kx1*cosh1};
double rhs[]={
- ((kx0*cosh0 - sin0)*eta0 - (kx1*cosh1 - sin1)*eta1)*rho/2,
+ ((kx0*cosh0 - sin0)*eta0 + (kx1*cosh1 - sin1)*eta1)*rho/2,
((cos0 - cosh0 - kx0*sinh0)*eta0 + (cos1 - cosh1 - kx1*sinh1)*eta1)*rho/2,
(kx0*sinh0*eta0 + kx1*sinh1*eta1)*rho/2,
- ((sinh0 + kx0*cosh0)*eta0 - (sinh1 + kx1*cosh1)*eta1)*rho/2};
+ ((sinh0 + kx0*cosh0)*eta0 + (sinh1 + kx1*cosh1)*eta1)*rho/2};
gsl_matrix_view mv=gsl_matrix_view_array(m,4,4);
@@ -77,13 +77,14 @@ void initial(const Model &model, double
break;
case Model::solCx:
{
- double kx, v, tau, eta;
+ double kx, v, tau, eta, sign;
if(x<middle)
{
kx=pi*x;
v=v0;
tau=tau_0;
eta=min_eta;
+ sign=1;
}
else
{
@@ -91,10 +92,11 @@ void initial(const Model &model, double
v=v1;
tau=tau_1;
eta=max_eta;
+ sign=-1;
}
const double csh(std::cosh(kx)), cs(std::cos(kx)),
snh(std::sinh(kx)), sn(std::sin(kx));
- p[i][j]=-2*pi*((v/eta + tau)*csh + (csh - cs)*rho/2)
+ p[i][j]=-2*pi*((v/eta + tau)*csh + sign*(csh - cs)*rho/2)
*std::cos(pi*y);
}
break;
@@ -123,25 +125,27 @@ void initial(const Model &model, double
log_etax[i][j]=log_min_eta;
}
{
- double kx, v, tau, eta;
+ double kx, v, tau, eta, sign;
if(x<middle)
{
kx=pi*x;
v=v0;
tau=tau_0;
eta=min_eta;
+ sign=1;
}
else
{
- kx=pi*(1-x);
+ kx=pi*(x-1);
v=v1;
tau=tau_1;
eta=max_eta;
+ sign=-1;
}
const double csh(std::cosh(kx)), cs(std::cos(kx)),
snh(std::sinh(kx)), sn(std::sin(kx));
- zx[i][j]=
- (eta*tau*snh - (v+tau*eta)*kx*csh - rho*eta*(kx*csh/2 - sn/2))
+ zx[i][j]=(eta*tau*snh - (v+tau*eta)*kx*csh
+ - sign*rho*eta*(kx*csh/2 - sn/2))
*std::cos(pi*y);
}
break;
@@ -200,13 +204,14 @@ void initial(const Model &model, double
}
{
const double pi(atan(1.0)*4);
- double kx, v, tau, eta;
+ double kx, v, tau, eta, sign;
if(x<middle)
{
kx=pi*x;
v=v0;
tau=tau_0;
eta=min_eta;
+ sign=1;
}
else
{
@@ -214,11 +219,12 @@ void initial(const Model &model, double
v=v1;
tau=tau_1;
eta=max_eta;
+ sign=-1;
}
const double csh(std::cosh(kx)), cs(std::cos(kx)),
snh(std::sinh(kx)), sn(std::sin(kx));
- zy[i][j]=
- (v*csh + (v+tau*eta)*kx*snh - eta*rho*(cs - csh - kx*snh)/2)
+ zy[i][j]=(v*csh + (v+tau*eta)*kx*snh
+ - sign*eta*rho*(cs - csh - kx*snh)/2)
*std::sin(pi*y);
}
break;
More information about the CIG-COMMITS
mailing list