proteus
1.8.1
C/C++/Fortran libraries
|
Go to the documentation of this file.
55 double vx=rwork[0], h=rwork[1];
59 for (i=0; i<nPoints; i++)
84 int diffusionSin1D(
int *iwork,
double *rwork,
int nPoints,
double t,
double *x,
double *
u)
87 double omega_x = iwork[0];
89 for (i=0; i<nPoints; i++)
91 u[i] = -pow(2.0*PI*omega_x,2.0)*sin(2.0*PI*omega_x*x[i*3+0]);
111 int diffusionSin2D(
int *iwork,
double *rwork,
int nPoints,
double t,
double *x,
double *
u)
114 double omega_x=iwork[0];
115 double omega_y=iwork[1];
117 for (i=0; i<nPoints; i++)
119 u[i] = -pow(2.0*PI*omega_x,2.0)*sin(2.0*PI*omega_x*x[i*3+0])
120 -pow(2.0*PI*omega_y,2.0)*sin(2.0*PI*omega_y*x[i*3+1]) ;
141 int diffusionSin3D(
int *iwork,
double *rwork,
int nPoints,
double t,
double *x,
double *
u)
144 double omega_x=2.0*PI*iwork[0];
145 double omega_y=2.0*PI*iwork[1];
146 double omega_z=2.0*PI*iwork[2];
148 for (i=0; i<nPoints; i++)
150 u[i] = -pow(2.0*PI*omega_x,2.0)*sin(2.0*PI*omega_x*x[i*3+0])
151 -pow(2.0*PI*omega_y,2.0)*sin(2.0*PI*omega_y*x[i*3+1])
152 -pow(2.0*PI*omega_z,2.0)*sin(2.0*PI*omega_z*x[i*3+2]) ;
172 int diffusionSin1D_r(
int *iwork,
double *rwork,
int nPoints,
double t,
double *x,
double *
u,
double *
r)
175 double omega_x=iwork[0];
177 for (i=0; i<nPoints; i++)
179 r[i] = pow(2.0*PI*omega_x,2.0)*sin(2.0*PI*omega_x * x[i*3+0]);
200 int diffusionSin2D_r(
int *iwork,
double *rwork,
int nPoints,
double t,
double *x,
double *
u,
double *
r)
203 double omega_x=iwork[0];
204 double omega_y=iwork[1];
206 for (i=0; i<nPoints; i++)
208 r[i] = pow(2.0*PI*omega_x,2.0) * sin(2.0*PI*omega_x * x[i*3+0]) +
209 pow(2.0*PI*omega_y,2.0) * sin(2.0*PI*omega_y * x[i*3+1]) ;
231 int diffusionSin3D_r(
int *iwork,
double *rwork,
int nPoints,
double t,
double *x,
double *
u,
double *
r)
234 double omega_x=iwork[0];
235 double omega_y=iwork[1];
236 double omega_z=iwork[2];
238 for (i=0; i<nPoints; i++)
240 r[i] = pow(2.0*PI*omega_x,2.0) * sin(2.0*PI*omega_x * x[i*3+0]) +
241 pow(2.0*PI*omega_y,2.0) * sin(2.0*PI*omega_y * x[i*3+1]) +
242 pow(2.0*PI*omega_z,2.0) * sin(2.0*PI*omega_z * x[i*3+2]) ;
287 double b[3]={rwork[0],rwork[1],rwork[2]};
288 double n=rwork[3], a=rwork[4], tStart=rwork[5], u0=rwork[6];
289 double x0[3]={rwork[7],rwork[8],rwork[9]};
290 double y[3], exp_arg, yDoty, t =
T + tStart;
292 for (i=0; i<nPoints; i++)
294 for (yDoty=0.0,j=0; j<3; j++)
296 y[j] = x[i*3+j] - x0[j] - b[j]*t;
299 exp_arg = yDoty / (4.0 * a * t) ;
307 u[i] = u0*exp(-exp_arg) / pow( (4.0*a*PI*t),(
n/2.0) );
339 double b[3]={rwork[0],rwork[1],rwork[2]};
340 double *
u = (
double *)malloc(nPoints*
sizeof(
double));
346 for (i=0; i<nPoints; i++)
350 f[i*3+j] = b[j]*
u[i];
388 for (i=0; i<nPoints; i++)
392 f[i*3+j] = -a *
f[i*3+j];
426 double b[3]={rwork[0],rwork[1],rwork[2]};
427 double a=rwork[4], tStart=rwork[5];
428 double x0[3]={rwork[7],rwork[8],rwork[9]};
429 double y[3], t=
T + tStart;
430 double *
u = (
double *)malloc(nPoints*
sizeof(
double));
434 for (i=0; i<nPoints; i++)
438 y[j] = x[i*3+j] - x0[j] - b[j]*t;
439 f[i*3+j] =
u[i]*2.0*y[j] / (4.0*a*t);
474 double *f_adv = (
double *)malloc(nPoints*3*
sizeof(
double));
479 for (i=0; i<nPoints; i++)
483 f[i*3+j] += f_adv[i*3+j];
517 double b=rwork[0], a=rwork[1];
522 D = (1.0/(exp(b/a)-1.0));
526 for (i=0;i<nPoints;i++)
531 u[i] = (-
D)*exp(b*x/a) - C;
577 double c=rwork[10], tStart=rwork[5];
578 double t =
T + tStart;
581 for (i=0; i<nPoints; i++)
620 for (i=0; i<nPoints; i++)
659 for (i=0; i<nPoints; i++)
691 int LinearADR_Sine(
int *iwork,
double *rwork,
int nPoints,
double t,
double *x,
double *
u)
709 double omega[3]={rwork[0],rwork[1],rwork[2]};
710 double omega0=rwork[3];
713 for (i=0;i<nPoints;i++)
715 Y = omega[0]*x[i*3+0] + omega[1]*x[i*3+1] + omega[2]*x[i*3+2] + omega0;
752 double b[3]={rwork[4],rwork[5],rwork[6]};
753 double *
u = (
double *)malloc(nPoints *
sizeof(
double));
762 for (i=0; i<nPoints; i++)
766 f[i*3+j] =
u[i]*b[j];
805 double a[3][3]={ {rwork[7],rwork[8],rwork[9]},{rwork[10],rwork[11],rwork[12]},{rwork[13],rwork[14],rwork[15]} };
806 double *du = (
double *)malloc(nPoints*3*
sizeof(
double));
811 for (i=0; i<nPoints; i++)
815 f[i*3+j] = -( a[j][0]*du[i*3+j] + a[j][1]*du[i*3+j] + a[j][2]*du[i*3+j] );
851 int LinearADR_Sine_dr(
int *iwork,
double *rwork,
int nPoints,
double t,
double *x,
double *
u,
double *dr)
858 for (i=0; i<nPoints; i++)
893 double omega[3]={rwork[0],rwork[1],rwork[2]};
894 double omega0=rwork[3];
897 for (i=0;i<nPoints;i++)
899 Y = cos( omega[0]*x[i*3+0] + omega[1]*x[i*3+1] + omega[2]*x[i*3+2] + omega0 );
902 f[i*3+j] = omega[j] *
Y;
938 int LinearADR_Sine_r(
int *iwork,
double *rwork,
int nPoints,
double t,
double *x,
double *
u,
double *
r)
941 double omega[3]={rwork[0],rwork[1],rwork[2]};
942 double omega0=rwork[3];
943 double b[3]={rwork[4],rwork[5],rwork[6]};
944 double a[3][3]={ {rwork[7],rwork[8],rwork[9]},{rwork[10],rwork[11],rwork[12]},{rwork[13],rwork[14],rwork[15]}};
954 MM[j] = a[j][0]*omega[0] + a[j][1]*omega[1] + a[j][2]*omega[2];
956 E = - ( MM[0]*omega[0] + MM[1]*omega[1] + MM[2]*omega[2] ) -
c;
959 D = -( b[0]*omega[0] + b[1]*omega[1] + b[2]*omega[2] );
961 for (i=0; i<nPoints; i++)
963 Y = omega[0]*x[i*3+0] + omega[1]*x[i*3+1] + omega[2]*x[i*3+2] + omega0;
964 r[i] =
c*
u[i] +
D*cos(
Y) + E*sin(
Y);
1000 double *f_adv = (
double *)malloc(nPoints*3*
sizeof(
double));
1005 for (i=0;i<nPoints;i++)
1009 f[i*3+j] += f_adv[i*3+j];
1044 int q=iwork[0],
r=iwork[1];
1045 double b=rwork[0], a=rwork[1];
1046 double x, lu, f0, ff, fC;
1047 double C, rtmC=0.0, Ctmp, dC, nlC=0.0, nlD=0.0;
1053 printf(
"Solving for sqrt(-C) for q=2, r=1\n");
1055 while ( fabs(
f(rtmC,b,a,
q,
r) ) > 1.0E-8 )
1057 rtmC -= (
f(rtmC,b,a,
q,
r) /
df(rtmC,b,a,
q,
r) );
1059 printf(
"sqrt(-C)= %lf \n",rtmC);
1062 else if (
q==1 &&
r==2)
1064 printf(
"\nSolving for C in q=1,r=2\n" );
1067 printf(
"f0 = %lf\n", f0);
1068 while ( fabs(
f(C,b,a,
q,
r)) > (1.0E-7*fabs(f0) + 1.0E-7))
1070 dC = -
f(C,b,a,
q,
r)/
df(C,b,a,
q,
r);
1071 printf(
"dc = %lf\n",dC);
1073 while ( (fabs(ff=
f(Ctmp,b,a,
q,
r)) > 0.99*fabs(fC=
f(C,b,a,
q,
r))) || (Ctmp <= 1.0) )
1075 printf(
"f(%lf) = %lf\n", Ctmp, ff);
1076 printf(
"f(%lf) = %lf\n", C, fC);
1082 printf(
"%lf \n",Ctmp);
1084 printf(
" f(%lf) = %lf\n",Ctmp,
f(Ctmp,b,a,
q,
r));
1085 printf(
"df(%lf) = %lf\n",Ctmp,
df(Ctmp,b,a,
q,
r));
1088 printf(
"C = %lf\n",C);
1090 nlD = 0.5*(2.0*C*log(C*(C-1)) - 4.0*C + 2.0 - b/a);
1091 printf(
"D = %lf\n",nlD);
1095 printf(
"q,r not implemented\n");
1105 for (i=0; i<nPoints; i++)
1113 u[i] = rtmC * tanh( (-b*rtmC/a)*(x - 1.0) );
1120 else if (
q==1 &&
r==2)
1123 f0 =
uOfX_f(a, b, nlC, nlD, x, lu) ;
1124 while ( fabs(
uOfX_f(a, b, nlC, nlD, x, lu)) > (1.0E-6*fabs(f0) + 1.0E-6) )
1132 printf(
"q,r not implemented");
1175 double c=rwork[10], d=rwork[11], tStart=rwork[5];
1176 double t =
T + tStart;
1180 for (i=0; i<nPoints; i++)
1184 u[i] *= exp( -(2.0*
c*t*pow(
u[i],(d-1.0)))/(d+1.0) );
1219 double c=rwork[10], d=rwork[11];
1223 for (i=0; i<nPoints; i++)
1225 dr[i] = d*
c*pow(
u[i],(d-1.0));
1260 double c=rwork[10], d=rwork[11];
1264 for (i=0; i<nPoints; i++)
1266 r[i] =
c*pow(
u[i],d);
1287 int NonlinearDAE(
int *iwork,
double *rwork,
int nPoints,
double T,
double *x,
double *
u)
1296 double q, t, a=rwork[0], p=rwork[1];
1298 for (i=0;i<nPoints;i++)
1309 u[i] = pow(
max( (1.0 - (1.0 - p)*a*t), 0.0 ),
q ) ;
1330 int NonlinearDAE_f(
int *iwork,
double *rwork,
int nPoints,
double t,
double *x,
double *
f)
1339 double a=rwork[0], p=rwork[1];
1341 for (i=0;i<nPoints;i++)
1345 f[i*3+j] = -a*pow(
max(
f[i*3+j],0.0),p) ;
1407 double h=rwork[0], mu=rwork[1];
1408 double GradP = rwork[2],
q = rwork[3];
1415 umax = -GradP *(1.0/(2.0*mu)) * (h*h/4.0);
1419 umax = (3.0/2.0)*
q/h;
1423 printf(
"Please enter input values for either q(Flow Rate per unit depth) or GradP(Pressure Gradient)\n");
1427 for (i=0; i<nPoints; i++)
1431 u[i] = (4.0*umax*
Y*(h-
Y))/(h*h);
1499 double r=rwork[0], mu = rwork[1];
1500 double GradP=rwork[2],
Q=rwork[3];
1507 umax = -GradP *(
r*
r/(4.0*mu));
1511 umax = 2.0*
Q/(PI *
r*
r);
1515 printf(
"Please enter input values for either Q(Flow Rate) or GradP(Pressure Gradient)\n");
1519 for (i=0; i<nPoints; i++)
1523 u[i] = umax*(1.0 - ((
Y*
Y)/(
r*
r)));
1577 double r=rwork[0], mu=rwork[1];
1578 double GradP=rwork[2],
Q=rwork[3],
L=rwork[4];
1583 if(GradP == 0.0 &&
Q != 0.0)
1585 GradP = - (8.0*
Q*mu) / (PI*pow(
r,4.0));
1587 else if(GradP == 0.0)
1589 printf(
"Please enter input values for either Q(Flow Rate) OR GradP(Pressure Gradient)\n");
1593 for (i=0; i<nPoints; i++)
1597 u[i] = -GradP*
L*(1.0-X);
1634 for (i=0;i<nPoints;i++)
1637 u[i] = K*x*(1.0-x)*exp(x*x);
1665 for (i=0;i<nPoints;i++)
1669 u[i] = K*x*(1.0-x)*y*(1.0-y)*exp(x*x + y*y);
1696 for (i=0;i<nPoints;i++)
1701 u[i] = K*x*(1.0-x)*y*(1.0-y)*
z*(1.0-
z)*exp(x*x + y*y +
z*
z);
1728 for (i=0; i<nPoints; i++)
1760 for (i=0;i<nPoints;i++)
1764 r[i] = K*(4.0*(1.0-x)*pow(x,3.0) - 4.0*x*x + 6.0*(1.0-x)*x - 2.0)*exp(x*x) ;
1793 for (i=0;i<nPoints;i++)
1798 r[i] = K*(y*(1.0-y)*(4.0*(1.0-x)*pow(x,3) - 4.0*x*x + 6.0*x*(1.0-x) - 2.0) +
1799 x*(1.0-x)*(4.0*(1.0-y)*pow(y,3) - 4.0*y*y + 6.0*y*(1.0-y) - 2.0))*exp(x*x + y*y);
1828 for (i=0; i<nPoints; i++)
1834 r[i] = K*(y*(1.0-y)*
z*(1.0-
z)*(4.0*(1.0-x)*pow(x,3) - 4.0*x*x + 6.0*x*(1.0-x) - 2.0) +
1835 x*(1.0-x)*
z*(1.0-
z)*(4.0*(1.0-y)*pow(y,3) - 4.0*y*y + 6.0*y*(1.0-y) - 2.0) +
1836 x*(1.0-x)*y*(1.0-y)*(4.0*(1.0-
z)*pow(
z,3) - 4.0*
z*
z + 6.0*
z*(1.0-
z) - 2.0))*exp(x*x + y*y +
z*
z);
1864 int STflowSphere_P(
int *iwork,
double *rwork,
int nPoints,
double t,
double *x,
double *
u)
1876 double vx=rwork[0],
vy=rwork[1], vz=rwork[2];
1877 double rS=rwork[3], xS=rwork[4], yS=rwork[5], zS=rwork[6];
1879 double eR[3],eTHETA[3];
1880 double norm_v,theta,
r;
1882 for (i=0; i<nPoints; i++)
1893 u[i] = (-3.0*rS*mu*norm_v*cos(theta))/(2.0*
r*
r);
1940 double vx=rwork[0],
vy=rwork[1], vz=rwork[2];
1941 double rS=rwork[3], xS=rwork[4], yS=rwork[5], zS=rwork[6];
1942 double eR[3],eTHETA[3];
1943 double norm_v,theta,
r;
1946 for (i=0; i<nPoints; i++)
1956 vel(rS,norm_v,
r,theta,&vR,&vTHETA);
1957 u[i] = vR * eR[0]+ vTHETA * eTHETA[0];
2004 double vx=rwork[0],
vy=rwork[1], vz=rwork[2];
2005 double rS=rwork[3], xS=rwork[4], yS=rwork[5], zS=rwork[6];
2006 double eR[3],eTHETA[3];
2007 double norm_v,theta,
r;
2010 for (i=0; i<nPoints; i++)
2020 vel(rS,norm_v,
r,theta,&vR,&vTHETA);
2021 u[i] = vR * eR[1] + vTHETA * eTHETA[1];
2067 double vx=rwork[0],
vy=rwork[1], vz=rwork[2];
2068 double rS=rwork[3], xS=rwork[4], yS=rwork[5], zS=rwork[6];
2069 double eR[3],eTHETA[3];
2070 double norm_v,theta,
r;
2073 for (i=0; i<nPoints; i++)
2083 vel(rS,norm_v,
r,theta,&vR,&vTHETA);
2084 u[i] = vR * eR[2] + vTHETA* eTHETA[2];
2094 double xS,
double yS,
double zS,
2114 norm_xBar = sqrt(xBar[0]*xBar[0] + xBar[1]*xBar[1] + xBar[2]*xBar[2]);
2118 if (norm_xBar != 0.0)
2120 eR[0]=xBar[0]/norm_xBar;
2121 eR[1]=xBar[1]/norm_xBar;
2122 eR[2]=xBar[2]/norm_xBar;
2130 xBar_dot_v = xBar[0]*
vx + xBar[1]*
vy + xBar[2]*vz;
2132 if (norm_xBar != 0.0)
2133 *theta = acos(xBar_dot_v/(norm_xBar*(*norm_v)));
2137 eTHETA[0] = eR[0] -
vx/(*norm_v);
2138 eTHETA[1] = eR[1] -
vy/(*norm_v);
2139 eTHETA[2] = eR[2] - vz/(*norm_v);
2141 eTHETA_dot_eR = eTHETA[0]*eR[0] + eTHETA[1]*eR[1] + eTHETA[2]*eR[2];
2143 eTHETA[0] -= eTHETA_dot_eR*eR[0];
2144 eTHETA[1] -= eTHETA_dot_eR*eR[1];
2145 eTHETA[2] -= eTHETA_dot_eR*eR[2];
2147 norm_eTHETA = sqrt(eTHETA[0]*eTHETA[0] + eTHETA[1]*eTHETA[1] + eTHETA[2]*eTHETA[2]);
2149 if (norm_eTHETA > 0.0)
2151 eTHETA[0]/= norm_eTHETA;
2152 eTHETA[1]/= norm_eTHETA;
2153 eTHETA[2]/= norm_eTHETA;
2163 void vel(
double rS,
double norm_v,
double r,
double theta,
double* vR,
double* vTHETA)
2167 *vR = norm_v * cos(theta) * ( 1.0 - (3.0*rS/(2.0*
r)) + (pow(rS,3.0)/(2.0*pow(
r,3.0))) );
2168 *vTHETA = -norm_v * sin(theta) * ( 1.0 - (3.0*rS/(4.0*
r)) - (pow(rS,3.0)/(4.0*pow(
r,3.0))) );
2179 return ( (2.0*nlC/(lu-nlC)+2.0) );
2181 double uOfX_f(
double a,
double b,
double nlC,
double nlD,
double x,
double lu)
2183 return ( (2.0 * (nlC * log(nlC-lu) - (nlC-lu)) - nlD) - b*x/a );
2185 double f(
double C,
double b,
double a,
int q,
int r)
2191 return ( C*tanh(b*C/a) - 1.0 );
2195 printf(
"function f(q=2,r=1,b=0) returns -99999.99\n");
2199 else if (
q==1 &&
r==2)
2201 return ( 2.0*C*(log(C-1.0) - log(C)) + 2.0 + b/a );
2205 printf(
"q,r not implemented: function f returns -99999.99\n");
2209 double df(
double C,
double b,
double a,
int q,
int r)
2215 return ( C*(1.0/pow(cosh(b*C/a),2))*(b/a) + tanh(b*C/a) );
2219 printf(
"function df(q=2,r=1,b=0) returns -99999.99\n");
2223 else if (
q==1 &&
r==2)
2225 return ( 2.0*(log(C-1.0) - log(C)) + 2.0*C*(1.0/(C-1.0) - 1.0/C) ) ;
2230 printf(
"q,r not implemented: function df returns -99999.99\n");
int LinearADR_Sine_diffusiveVelocity(int *iwork, double *rwork, int nPoints, double t, double *x, double *f)
Linear Avection Diffusion Reaction Sine function (diffusive velocity)
int STflowSphere_Vy(int *iwork, double *rwork, int nPoints, double t, double *x, double *u)
Stokes Flow around moving Sphere.
int diffusionSin1D_r(int *iwork, double *rwork, int nPoints, double t, double *x, double *u, double *r)
Sinusoidal 1D diffusion (reaction)
int poissonsEquationExp3D(int *iwork, double *rwork, int nPoints, double t, double *X, double *u)
Poisson Exponential Equation 3D.
int LinearADR_Sine_dr(int *iwork, double *rwork, int nPoints, double t, double *x, double *u, double *dr)
Linear Avection Diffusion Reaction Sine function (dr)
int PoiseuillePipeFlow_P(int *iwork, double *rwork, int nPoints, double t, double *x, double *u)
Poiseuille Flow through a circular pipe.
int NonlinearADR_Decay_DiracIC_dr(int *iwork, double *rwork, int nPoints, double T, double *x, double *u, double *dr)
Non Linear Avection Diffusion Reaction Decay Dirac Initial Condition (dr)
int poissonsEquationExp2D(int *iwork, double *rwork, int nPoints, double t, double *X, double *u)
Poisson Exponential Equation 2D.
int LinearAD_DiracIC_advectiveVelocity(int *iwork, double *rwork, int nPoints, double T, double *x, double *f)
Linear Advective Diffusion Dirac Initial Condition(advective velocity)
int poissonsEquationExp1D_r(int *iwork, double *rwork, int nPoints, double t, double *X, double *u, double *r)
Poisson Exponential Equation 1D (reaction)
int poissonsEquationExp1D(int *iwork, double *rwork, int nPoints, double t, double *X, double *u)
Poisson Exponential Equation 1D.
int NonlinearDAE_f(int *iwork, double *rwork, int nPoints, double t, double *x, double *f)
Nonlinear Differential-algebraic equations.
int NonlinearDAE(int *iwork, double *rwork, int nPoints, double T, double *x, double *u)
Nonlinear Differential-algebraic equations.
int PoiseuillePipeFlow(int *iwork, double *rwork, int nPoints, double t, double *x, double *u)
Poiseuille Flow through a circular pipe.
double df(double C, double b, double a, int q, int r)
int diffusionSin2D(int *iwork, double *rwork, int nPoints, double t, double *x, double *u)
Sinusoidal 2D diffusion.
int diffusionSin3D(int *iwork, double *rwork, int nPoints, double t, double *x, double *u)
Sinusoidal 3D diffusion.
void vel(double rS, double norm_v, double r, double theta, double *vR, double *vTHETA)
int LinearAD_SteadyState(int *iwork, double *rwork, int nPoints, double t, double *X, double *u)
Linear Advection-Diffusion Steady State.
int NonlinearADR_Decay_DiracIC_r(int *iwork, double *rwork, int nPoints, double T, double *x, double *u, double *r)
Non Linear Avection Diffusion Reaction Decay Dirac Initial Condition (reaction)
int STflowSphere_Vx(int *iwork, double *rwork, int nPoints, double t, double *x, double *u)
Stokes Flow around moving Sphere.
int poissonsEquationExp3D_dr(int *iwork, double *rwork, int nPoints, double t, double *X, double *u, double *dr)
Poisson Exponential Equation 3D (dr)
int LinearADR_Sine_du(int *iwork, double *rwork, int nPoints, double t, double *x, double *f)
Linear Avection Diffusion Reaction Sine function (du)
int poissonsEquationExp3D_r(int *iwork, double *rwork, int nPoints, double t, double *X, double *u, double *r)
Poisson Exponential Equation 3D (reaction)
int LinearADR_Sine_advectiveVelocity(int *iwork, double *rwork, int nPoints, double t, double *x, double *f)
Linear Avection Diffusion Reaction Sine function (advective velocity)
int diffusionSin2D_r(int *iwork, double *rwork, int nPoints, double t, double *x, double *u, double *r)
Sinusoidal 2D diffusion (reaction)
int poissonsEquationExp2D_r(int *iwork, double *rwork, int nPoints, double t, double *X, double *u, double *r)
Poisson Exponential Equation 2D (reaction)
int NonlinearADR_Decay_DiracIC(int *iwork, double *rwork, int nPoints, double T, double *x, double *u)
Non Linear Avection Diffusion Reaction Decay Dirac Initial Condition.
int PlaneCouetteFlow_u(int *iwork, double *rwork, int nPoints, double t, double *x, double *u)
Couette Flow between two parallel plates. One moving relative to the other with constant seperation (...
int LinearADR_Decay_DiracIC(int *iwork, double *rwork, int nPoints, double T, double *x, double *u)
Linear Avection Diffusion Reaction Decay Dirac Initial Condition.
int STflowSphere_Vz(int *iwork, double *rwork, int nPoints, double t, double *x, double *u)
Stokes Flow around moving Sphere.
int LinearAD_DiracIC_totalVelocity(int *iwork, double *rwork, int nPoints, double T, double *x, double *f)
Linear Advective Diffusion Dirac Initial Condition(total velocity)
int LinearADR_Decay_DiracIC_r(int *iwork, double *rwork, int nPoints, double T, double *x, double *u, double *r)
Linear Avection Diffusion Reaction Decay Dirac Initial Condition (reaction)
int LinearADR_Sine_totalVelocity(int *iwork, double *rwork, int nPoints, double t, double *x, double *f)
Linear Avection Diffusion Reaction Sine function (total velocity)
int LinearADR_Sine_r(int *iwork, double *rwork, int nPoints, double t, double *x, double *u, double *r)
Linear Avection Diffusion Reaction Sine function (reaction)
int LinearAD_DiracIC_du(int *iwork, double *rwork, int nPoints, double T, double *x, double *f)
Linear Advective Diffusion Dirac Initial Condition (du)
int LinearADR_Sine(int *iwork, double *rwork, int nPoints, double t, double *x, double *u)
Linear Avection Diffusion Reaction Sine function.
int LinearAD_DiracIC(int *iwork, double *rwork, int nPoints, double T, double *x, double *u)
Linear Advective Diffusion Dirac Initial Condition.
int LinearAD_DiracIC_diffusiveVelocity(int *iwork, double *rwork, int nPoints, double T, double *x, double *f)
Linear Advective Diffusion Dirac Initial Condition(diffusive velocity)
int PlanePoiseuilleFlow_u(int *iwork, double *rwork, int nPoints, double t, double *x, double *u)
Poiseuille Flow between two parallel fixed plates with constant seperation (width).
int NonlinearAD_SteadyState(int *iwork, double *rwork, int nPoints, double t, double *X, double *u)
Nonlinear Advection-Diffusion Steady State.
int LinearADR_Decay_DiracIC_dr(int *iwork, double *rwork, int nPoints, double T, double *x, double *u, double *dr)
Linear Avection Diffusion Reaction Decay Dirac Initial Condition (dr)
int STflowSphere_P(int *iwork, double *rwork, int nPoints, double t, double *x, double *u)
Stokes Flow around moving Sphere.
void coords(double vx, double vy, double vz, double xS, double yS, double zS, double *x, double *r, double *theta, double *norm_v, double *eR, double *eTHETA)
int diffusionSin3D_r(int *iwork, double *rwork, int nPoints, double t, double *x, double *u, double *r)
Sinusoidal 3D diffusion (reaction)
double f(double C, double b, double a, int q, int r)
int diffusionSin1D(int *iwork, double *rwork, int nPoints, double t, double *x, double *u)
Sinusoidal 1D diffusion.
double uOfX_f(double a, double b, double nlC, double nlD, double x, double lu)
double uOfX_df(double nlC, double lu)