void LBM::m_Envolution()
{
double** u = new double* [Nx];
double** v = new double* [Nx];
double** dens = new double* [Nx];
double** u0 = new double* [Nx];
double** v0 = new double* [Nx];
double*** f = new double** [Nx];
double*** f_post = new double** [Nx];
for (int i = 0; i < Nx; i++)
{
u[i] = new double[Ny];
v[i] = new double[Ny];
dens[i] = new double[Ny];
u0[i] = new double[Ny];
v0[i] = new double[Ny];
f[i] = new double* [Ny];
f_post[i] = new double* [Ny];
for (int j = 0; j < Ny; j++)
{
u[i][j] = this->m_u[i][j];
v[i][j] = this->m_v[i][j];
dens[i][j] = this->m_dens[i][j];
u0[i][j] = this->m_u0[i][j];
v0[i][j] = this->m_v0[i][j];
f[i][j] = new double[Q];
f_post[i][j] = new double[Q];
for (int k = 0; k < Q; k++)
{
f[i][j][k] = this->m_f[i][j][k];
f_post[i][j][k] = this->m_f_post[i][j][k];
}
}
}
for (int i = 0; i < Nx; i++)
{
delete[]this->m_u[i];
delete[]this->m_v[i];
delete[]this->m_dens[i];
delete[]this->m_u0[i];
delete[]this->m_v0[i];
this->m_dens[i] = NULL;
this->m_u[i] = NULL;
this->m_v[i] = NULL;
this->m_u0[i]= NULL;
this->m_v0[i] = NULL;
}
delete[]this->m_u;
delete[]this->m_v;
delete[]this->m_dens;
delete[]this->m_u0;
delete[]this->m_v0;
this->m_dens = NULL;
this->m_u = NULL;
this->m_v = NULL;
this->m_u0 = NULL;
this->m_v0 = NULL;
for (int i = 0; i < Nx; i++)
{
for (int j = 0; j < Ny; j++)
{
delete[]this->m_f[i][j];
delete[]this->m_f_post[i][j];
this->m_f[i][j] = NULL;
this->m_f_post[i][j] = NULL;
}
delete[]this->m_f[i];
delete[]this->m_f_post[i];
this->m_f[i] = NULL;
this->m_f_post[i] = NULL;
}
delete[]this->m_f;
delete[]this->m_f_post;
this->m_f = NULL;
this->m_f_post = NULL;
this->m_u = u;
this->m_v = v;
this->m_dens = dens;
this->m_u0 = u0;
this->m_v0 = v0;
this->m_f = f;
this->m_f_post = f_post;
for (int i = 0; i < Nx; i++)
{
delete[]u[i];
delete[]v[i];
delete[]dens[i];
delete[]u0[i];
delete[]v0[i];
dens[i] = NULL;
u[i] = NULL;
v[i] = NULL;
u0[i] = NULL;
v0[i] = NULL;
}
delete[]m_u;
delete[]m_v;
delete[]m_dens;
delete[]m_u0;
delete[]m_v0;
m_dens = NULL;
m_u = NULL;
m_v = NULL;
m_u0 = NULL;
m_v0 = NULL;
for (int i = 0; i < Nx; i++)
{
for (int j = 0; j < Ny; j++)
{
delete[]f[i][j];
delete[]f_post[i][j];
f[i][j] = NULL;
f_post[i][j] = NULL;
}
delete[]f[i];
delete[]f_post[i];
f[i] = NULL;
f_post[i] = NULL;
}
delete[]f;
delete[]f_post;
f = NULL;
f_post = NULL;
}
二级指针和数组指针可不一样