我是C ++的新手,目前我正在尝试重新编写Barbas教授关于“Navier Stokes" 12步骤”的讲座。但是用C ++而不是Python。我尝试了第1步,我遇到了一些问题,下面是我的代码:
#include <iostream>
#include <cmath>
using namespace std;
int main(){
///////////////////////////////////////////////////
//Start of C++
int nx = 41;
double dx = double(2) /(nx-1);
int nt = 25;
double dt = 0.025;
int c = 1;
double u[nx][nt];
double un[nx][nt];
//Initial Condition. Step function
for (int i = 1; i <= nx-1; i++){
if(i*dx >= 0.5 && i*dx <=1){
u[i][0] = 2;
}else{
u[i][0] = 1;
}
cout << u[i][0] << endl;
}
//Finite Difference Loop
for (int it = 1; it<= nt-1; it++){
for (int k = 0; k<= nx-1; k++){
un[k][it-1] = u[k][it-1];
}
for (int i = 0; i < nx; i++){
u[i][it+1] = u[i][it] - c*dt/dx*(un[i][it-1]-un[i-1][it-1]);
}
}
//Advancing u[space][time] in time
//so collection of u[space][time++]
// i.e u[s][t]
for (int t = 1; t<= nt-1; t++){
for (int s = 0; s<=nx-1; s++){
cout << u[s][0] << endl;
//This is not correct.
}
}
return 0;
}
现在我想绘制U,因为它及时前进。因此,对于1个图形,我将有U [i] [time = 0],然后对于另一个图形,U [i] [time = 1],依此类推。现在,我如何从U [i] [it]中获取这些数组。在我的最后一个循环中,我尝试了什么&#34; cout&#34;是不正确的,因为它会&#34; cout&#34;整个41 x 20元素。应该发生的是在一个瞬间有一个41个元素阵列,然后如果我想,我可以改变以获得41个元素的下一个块。谢谢你的帮助。