1D对流方程C ++

时间:2017-05-03 14:20:12

标签: c++ arrays

我是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个元素的下一个块。谢谢你的帮助。

0 个答案:

没有答案