}
q. close();
ofstream y("r. txt");
for(int i=0;i<n;i++)
{
y<<i<<" "<<r[i]<<endl;
}
y. close();
}
void pred ()
{
for(i=1; i<n-1; i++)
{
aa1[i]=a1[i]+tx*(b1[i]-b1[i+1]);
aa2[i]=a2[i]+tx*(b2[i]-b2[i+1]);
aa3[i]=a3[i]+tx*(b3[i]-b3[i+1]);
rr[i]=aa1[i];
uu[i]=aa2[i]/aa1[i];
ee[i]=aa3[i]/aa1[i];
pp[i]=(k-1)*aa1[i]*ee[i];
rr[0]=rr[1];
uu[0]=uu[1];
ee[0]=ee[1];
pp[0]=pp[1];
rr[n-1]=rr[n-2];
uu[n-1]=-uu[n-2];
ee[n-1]=ee[n-2];
pp[n-1]=pp[n-2];
}
}
void bbcom ()
{
for(i=0; i<n; i++)
{
bb1[i]=rr[i]*uu[i];
bb2[i]=rr[i]*uu[i]*uu[i]+pp[i];
bb3[i]=uu[i]*(rr[i]*ee[i]+pp[i]);
}
}
void correc ()
{
for(i=1; i<n-1; i++)
{
a1[i]=(a1[i]+aa1[i]+tx*(bb1[i-1]-bb1[i]))/2;
a2[i]=(a2[i]+aa2[i]+tx*(bb2[i-1]-bb2[i]))/2;
a3[i]=(a3[i]+aa3[i]+tx*(bb3[i-1]-bb3[i]))/2;
r[i]=a1[i];
u[i]=a2[i]/a1[i];
e[i]=a3[i]/a1[i];
p[i]=(k-1)*a1[i]*e[i];
r[0]=r[1];
u[0]=u[1];
e[0]=e[1];
p[0]=p[1];
r[n-1]=r[n-2];
u[n-1]=-u[n-2];
e[n-1]=e[n-2];
p[n-1]=p[n-2];
}
}
void bcom ()
{
for(i=0; i<n; i++)
{
b1[i]=r[i]*u[i];
b2[i]=r[i]*u[i]*u[i]+p[i];
b3[i]=u[i]*(r[i]*e[i]+p[i]);
}
}
int _tmain(int argc, _TCHAR* argv[])
{
for(i=0; i<m; i++)
{
r[i]=k/((k-1)/(k+1)+2/(k+1)/Max/Max);
p[i]=2*k/(k+1)*Max*Max-(k-1)/(k+1);
u[i]=(2*Max-2/Max)/(k+1);//((Max-1/Max)*2)/(k+1);
e[i]=p[i]/(k-1)/r[i];
}
for(i=m; i<n; i++)
{
r[i]=1.4;
u[i]=0.0;
e[i]=1.7857;
p[i]=1.0;
}
for(i=0; i<n; i++)
{
a1[i]=r[i];
a2[i]=r[i]*u[i];
a3[i]=r[i]*e[i];
b1[i]=r[i]*u[i];
b2[i]=r[i]*u[i]*u[i]+p[i];
b3[i]=u[i]*(r[i]*e[i]+p[i]);
}
t=0;
do
{
pred();
bbcom();
correc();
bcom();
t=t+dt;
}while(t<20*dt);
vivod ();
system ("pause");
return 0;
}
ПРИЛОЖЕНИЕ 2
Программа расчета газодинамических характеристик при движении ударной волны в ударной трубе (двумерный случай).
// prosto. cpp: определяет точку входа для консольного приложения.
//
#include "stdafx. h"
#include "iostream"
#include "fstream"
#include "vector"
using namespace std;
int i, j;
const int n=11, m=11, l=5;
const double lx=1.0, ly=0.01, Mu=0.0001;
double dx=lx/(m-1), dy=ly/(n-1), dt=0.0004, tx=dt/dx, ty=dt/dy, t, k=1.4, Max=2.0;
double eps1, eps2, eps3, eps4, eps5, eps6;
double e[n][m],u[n][m],v[n][m],r[n][m],p[n][m],ee[n][m],uu[n][m],vv[n][m],rr[n][m],pp[n][m];
double a1[n][m],a2[n][m],a3[n][m],a4[n][m],aa1[n][m],aa2[n][m],aa3[n][m],aa4[n][m];
double b1[n][m],b2[n][m],b3[n][m],b4[n][m],bb1[n][m],bb2[n][m],bb3[n][m],bb4[n][m];
double c1[n][m],c2[n][m],c3[n][m],c4[n][m],cc1[n][m],cc2[n][m],cc3[n][m],cc4[n][m];
void vivod ()
{
ofstream z("y. txt");
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
z<<" "<<i*dy<<endl;
}
}
z. close();
ofstream o("x. txt");
for(int i=0;i<n ;i++)
{
for(int j=0;j<m;j++)
{
o<<" "<<i*dy<<" "<<j*dx<<endl;
}
}
o. close();
ofstream f("u. txt");
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
f<<j*dx<<" "<<i*dy<<" "<<u[i][j]<<endl;
}
}
f. close();
ofstream l("e. txt");
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
l<<j*dx<<" "<<i*dy<<" "<<e[i][j]<<endl;
}
}
l. close();
ofstream q("p. txt");
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
q<<j*dx<<" "<<i*dy<<" "<<p[i][j]<<endl;
}
}
q. close();
ofstream y("r. txt");
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
y<<j*dx<<" "<<i*dy<<" "<<r[i][j]<<endl;
}
}
y. close();
ofstream s("v. txt");
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
s<<j*dx<<" "<<i*dy<<" "<<v[i][j]<<endl;
}
}
s. close();
}
void pred ()
{
for(i=1; i<n-1; i++)
{
for(j=1; j<m-1; j++)
{
aa1[i][j]=a1[i][j]+tx*(b1[i][j]-b1[i][j+1])+ty*(c1[i][j]-c1[i+1][j]);
aa2[i][j]=a2[i][j]+tx*(b2[i][j]-b2[i][j+1])+ty*(c2[i][j]-c2[i+1][j]);
aa3[i][j]=a3[i][j]+tx*(b3[i][j]-b3[i][j+1])+ty*(c3[i][j]-c3[i+1][j]);
aa4[i][j]=a4[i][j]+tx*(b4[i][j]-b4[i][j+1])+ty*(c4[i][j]-c4[i+1][j]);
rr[i][j]=aa1[i][j];
uu[i][j]=aa2[i][j]/aa1[i][j];
vv[i][j]=aa3[i][j]/aa1[i][j];
ee[i][j]=aa4[i][j]/aa1[i][j];
pp[i][j]=(k-1)*aa1[i][j]*ee[i][j];
}
}
for(i=1; i<n-1; i++)
{
rr[i][0]=k/((k-1)/(k+1)+2/(k+1)/Max/Max);//*/rr[i][1];
uu[i][0]=(2*Max-2/Max)/(k+1);//*/uu[i][1];
vv[i][0]=vv[i][1];
pp[i][0]=2*k/(k+1)*Max*Max-(k-1)/(k+1);//*/pp[i][1];
ee[i][0]=p[i][0]/(k-1)/r[i][0];//*/ee[i][1];
rr[i][n-1]=rr[i][n-2];
uu[i][n-1]=-uu[i][n-2];
vv[i][n-1]=vv[i][n-2];
ee[i][n-1]=ee[i][n-2];
pp[i][n-1]=pp[i][n-2];
}
for(j=0; j<m; j++)
{
rr[0][j]=rr[1][j];
uu[0][j]=0.0;
vv[0][j]=0.0;
ee[0][j]=ee[1][j];
pp[0][j]=pp[1][j];
rr[n-1][j]=rr[n-2][j];
uu[n-1][j]=0.0;
vv[n-1][j]=0.0;
ee[n-1][j]=ee[n-2][j];
pp[n-1][j]=pp[n-2][j];
}
}
void bbcom ()
{
for(i=0; i<n-1; i++)
{
for(j=0; j<m; j++)
{
bb1[i][j]=rr[i][j]*uu[i][j];
bb2[i][j]=rr[i][j]*uu[i][j]*uu[i][j]+pp[i][j];
bb3[i][j]=rr[i][j]*uu[i][j]*vv[i][j];
bb4[i][j]=uu[i][j]*(rr[i][j]*ee[i][j]+pp[i][j]);
cc1[i][j]=rr[i][j]*vv[i][j];
cc2[i][j]=rr[i][j]*uu[i][j]*vv[i][j]-Mu*(uu[i+1][j]-uu[i][j])/dy;
cc3[i][j]=rr[i][j]*vv[i][j]*vv[i][j]+pp[i][j]-1.33*Mu*(vv[i+1][j]-vv[i][j])/dy;
cc4[i][j]=vv[i][j]*(rr[i][j]*ee[i][j]+pp[i][j]);
}
}
}
void correc ()
{
for(i=1; i<n-1; i++)
{
for(j=1; j<m-1; j++)
{
a1[i][j]=(a1[i][j]+aa1[i][j]+tx*(bb1[i][j-1]-bb1[i][j])+ty*(cc1[i-1][j]-cc1[i][j]))/2;
a2[i][j]=(a2[i][j]+aa2[i][j]+tx*(bb2[i][j-1]-bb2[i][j])+ty*(cc2[i-1][j]-cc2[i][j]))/2;
a3[i][j]=(a3[i][j]+aa3[i][j]+tx*(bb3[i][j-1]-bb3[i][j])+ty*(cc3[i-1][j]-cc3[i][j]))/2;
a4[i][j]=(a4[i][j]+aa4[i][j]+tx*(bb4[i][j-1]-bb4[i][j])+ty*(cc4[i-1][j]-cc4[i][j]))/2;
r[i][j]=a1[i][j];
u[i][j]=a2[i][j]/a1[i][j];
v[i][j]=a3[i][j]/a1[i][j];
e[i][j]=a4[i][j]/a1[i][j];
p[i][j]=(k-1)*a1[i][j]*e[i][j];
}
}
for(i=1; i<n-1; i++)
{
r[i][0]=k/((k-1)/(k+1)+2/(k+1)/Max/Max);//*/r[i][1];
u[i][0]=(2*Max-2/Max)/(k+1);//*/u[i][1];
v[i][0]=v[i][1];
p[i][0]=2*k/(k+1)*Max*Max-(k-1)/(k+1);//*/p[i][1];
e[i][0]=p[i][0]/(k-1)/r[i][0];//*/e[i][1];
r[i][n-1]=r[i][n-2];
u[i][n-1]=-u[i][n-2];
v[i][n-1]=v[i][n-2];
e[i][n-1]=e[i][n-2];
p[i][n-1]=p[i][n-2];
}
for(j=0; j<m; j++)
{
r[0][j]=r[1][j];
u[0][j]=0.0;
v[0][j]=0.0;
e[0][j]=e[1][j];
p[0][j]=p[1][j];
r[n-1][j]=r[n-2][j];
u[n-1][j]=0.0;
v[n-1][j]=0.0;
e[n-1][j]=e[n-2][j];
p[n-1][j]=p[n-2][j];
}
}
void bcom ()
{
for(i=1; i<n; i++)
{
for(j=0; j<m; j++)
{
b1[i][j]=r[i][j]*u[i][j];
b2[i][j]=r[i][j]*u[i][j]*u[i][j]+p[i][j];
b3[i][j]=r[i][j]*u[i][j]*v[i][j];
b4[i][j]=u[i][j]*(r[i][j]*e[i][j]+p[i][j]);
c1[i][j]=r[i][j]*v[i][j];
c2[i][j]=r[i][j]*u[i][j]*v[i][j]-Mu*(u[i][j]-u[i-1][j])/dy;
c3[i][j]=r[i][j]*v[i][j]*v[i][j]+p[i][j]-1.33*Mu*(v[i][j]-v[i-1][j])/dy;
c4[i][j]=v[i][j]*(r[i][j]*e[i][j]+p[i][j]);
}
}
}
int _tmain(int argc, _TCHAR* argv[])
{
for(i=1; i<n-1; i++)
{
for(j=0; j<l; j++)
{
r[i][j]=k/((k-1)/(k+1)+2/(k+1)/Max/Max);
p[i][j]=2*k/(k+1)*Max*Max-(k-1)/(k+1);
u[i][j]=(2*Max-2/Max)/(k+1);
v[i][j]=0.0;
e[i][j]=p[i][j]/(k-1)/r[i][j];
}
}
for(i=1; i<n-1; i++)
{
for(j=l; j<m; j++)
{
r[i][j]=1.4;
u[i][j]=0.0;
v[i][j]=0.0;
e[i][j]=1.7857;
p[i][j]=1.0;
}
}
for(i=1; i<n-1; i++)
{
r[i][0]=k/((k-1)/(k+1)+2/(k+1)/Max/Max);//*/r[i][1];
u[i][0]=(2*Max-2/Max)/(k+1);//*/u[i][1];
v[i][0]=v[i][1];
p[i][0]=2*k/(k+1)*Max*Max-(k-1)/(k+1);//*/p[i][1];
e[i][0]=p[i][0]/(k-1)/r[i][0];//*/e[i][1];
r[i][n-1]=r[i][n-2];
u[i][n-1]=-u[i][n-2];
v[i][n-1]=v[i][n-2];
e[i][n-1]=e[i][n-2];
p[i][n-1]=p[i][n-2];
}
for(j=0; j<m; j++)
{
r[0][j]=r[1][j];
u[0][j]=0.0;
v[0][j]=0.0;
e[0][j]=e[1][j];
p[0][j]=p[1][j];
r[n-1][j]=r[n-2][j];
u[n-1][j]=0.0;
v[n-1][j]=0.0;
e[n-1][j]=e[n-2][j];
p[n-1][j]=p[n-2][j];
}
for(i=1; i<n; i++)
{
for(j=0; j<m; j++)
{
a1[i][j]=r[i][j];
a2[i][j]=r[i][j]*u[i][j];
a3[i][j]=r[i][j]*v[i][j];
a4[i][j]=r[i][j]*e[i][j];
b1[i][j]=r[i][j]*u[i][j];
b2[i][j]=r[i][j]*u[i][j]*u[i][j]+p[i][j];
b3[i][j]=r[i][j]*u[i][j]*v[i][j];
b4[i][j]=u[i][j]*(r[i][j]*e[i][j]+p[i][j]);
c1[i][j]=r[i][j]*v[i][j];
c2[i][j]=r[i][j]*u[i][j]*v[i][j]-Mu*(u[i][j]-u[i-1][j])/dy;
c3[i][j]=r[i][j]*v[i][j]*v[i][j]+p[i][j]-1.33*Mu*(v[i][j]-v[i-1][j])/dy;
c4[i][j]=v[i][j]*(r[i][j]*e[i][j]+p[i][j]);
}
}
t=0;
do
{
pred();
bbcom();
correc();
bcom();
t=t+dt;
}while(t<1600*dt);
vivod ();
system ("pause");
return 0;
}
ПРИЛОЖЕНИЕ 3
Программа для расчета характеристик течения электролита в МЭЗ.
// ruslan1504.cpp: определяет точку входа для консольного приложения.
//
#include "stdafx. h"
#include "iostream"
#include "fstream"
#include "vector"
using namespace std;
int i, j, schet;
const int n=7, m=7;
const double lx=0.1, ly=0.001, R=4.124, Mu=0.000018, Mu1=0.001,roh0=0.09;
double ean=0.00000029, cp=3760, t0=293, roan=7600, mu0=0.001, egas=0.0000000104, rgas4150, h=0.3, xi=0.025, ka0=11, uc=7, alf=1;
const int ro0=1000,u0=2,tma=300, tmk=300, tm0=300, tmv=300;
double dx=lx/(m-1), dy=ly/(n-1), dt=0.000000005, tx=dt/dx, ty=dt/dy;
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 |


