diff --git a/VortexWake.cpp b/VortexWake.cpp index a76d8d9..e70585c 100644 --- a/VortexWake.cpp +++ b/VortexWake.cpp @@ -9,17 +9,21 @@ #include #include using namespace std; -double Integration(const std::vector &dx, const std::vector &dy, const std::vector &data); +double average(const std::vector > &x, const std::vector > &y, const double averangex[], const double averangey[], const double &Nx, const double &Ny, const std::vector > &data); +double Integration(const std::vector > &x, const std::vector > &y, const std::vector &dx, const std::vector &dy, const double integrangex[], const double integrangey[], const double &Nx, const double &Ny, const std::vector > &data); int ExtractDxDy(const std::vector & zones, std::vector &dx, std::vector &dy); +int Extractxyuvw(const std::vector & zones, std::vector > &x, std::vector > &y, std::vector > &u, std::vector > &v,std::vector > &W_z); double ProcessWakeData(const std::vector & zones, std::string message) { int Np = zones[0].data[0].size(); - int Idx = 0, Idy = 1, Idu = 3, Idv = 4, Idvor = 5; - double xmin = -5, xmax = 25., ymin = -5., ymax = 5.; - double x0 = zones[1].data[0][0]; - double y0 = zones[1].data[1][0]; - std::vector dx, dy; - ExtractDxDy(zones, dx, dy); + std::vector N = zones[0].N; + int Nx = N[0]; + int Ny = N[1]; + // calculate zone [-20,20]*[0,20], modify as needed + double xmin = -20., xmax = 20., ymin = 0., ymax = 20.; + double Nu = 0.00625; + double x0 = 0; + double y0 = 0; xmin += x0; xmax += x0; ymin += y0; @@ -28,23 +32,72 @@ double ProcessWakeData(const std::vector & zones, std::string message) ymin = max(ymin, zones[0].data[1][0]); xmax = min(xmax, zones[0].data[0][Np-1]); ymax = min(ymax, zones[0].data[1][Np-1]); - double Area = (ymax - ymin) * (xmax - xmin); - std::vector enstrophy(Np, 0.); - std::vector kinetic(Np, 0.); - for(int i=0; i > x(Ny,vector(Nx,0)); + std::vector > y(Ny,vector(Nx,0)); + std::vector > u(Ny,vector(Nx,0)); + std::vector > v(Ny,vector(Nx,0)); + std::vector > W_z(Ny,vector(Nx,0)); + std::vector dx, dy; + ExtractDxDy(zones, dx, dy); + std::vector > enstrophy(Ny,vector(Nx,0)); + std::vector > kinetic(Ny,vector(Nx,0)); + std::vector > velocity_u(Ny,vector(Nx,0)); + std::vector > velocity_v(Ny,vector(Nx,0)); + std::vector > vorticity(Ny,vector(Nx,0)); + std::vector > boundaryvortexflux(Ny,vector(Nx,0)); + double totalenstrophy = 0., totalkinetic = 0., avervelocity_u = 0., avervelocity_v = 0., avervorticity = 0., totalboundaryvortexflux = 0.; + fstream outfile; + outfile.open("out.txt", ios::app); + if (!outfile.is_open()) + { + cout << "打开文件失败" << endl; + return -1; + } + Extractxyuvw(zones, x, y, u, v, W_z); + for(int j=0; j & zones, std::vector > &x, std::vector > &y, std::vector > &u, std::vector > &v,std::vector > &W_z) { + int Np = zones[0].data[0].size(); + std::vector N = zones[0].N; + int Nx = N[0]; + int i,j; + int Idx = 0, Idy = 1, Idu = 3, Idv = 4, Idvor = 5; + for(int n=0; n & zones, std::vector &dx, st return 0; } -double Integration(const std::vector &dx, const std::vector &dy, const std::vector &data) { +double average(const std::vector > &x, const std::vector > &y, const double averangex[], const double averangey[], const double &Nx, const double &Ny, const std::vector > &data) { double sum = 0.; int offset = 0; - for(size_t j=0; j > &x, const std::vector > &y, const std::vector &dx, const std::vector &dy, const double integrangex[], const double integrangey[], const double &Nx, const double &Ny, const std::vector > &data) { + double sum = 0.; + for(int j=0; j variables = {"x", "y", "p", "u", "v", "W_z"}; - std::vector zones(3); - zones[0].N = {985, 1, 4497}; - zones[1].N = {101, 1, 1}; - zones[2].N = {101, 1, 1}; - std::vector> dataBody; + std::vector zones(1); + zones[0].N = {997, 1, 1997}; +// zones[1].N = {51, 1, 1}; + std::vector > dataBody; std::map vm; InputTec360_FSILBM2D(filename, zones);