VM2D 1.14
Vortex methods for 2D flows simulation
Loading...
Searching...
No Matches
OptimizedVelocity2D.cpp
Go to the documentation of this file.
2
3#include "Airfoil2D.h"
4#include "Boundary2D.h"
5#include "MeasureVP2D.h"
6#include "Mechanics2D.h"
7#include "StreamParser.h"
8#include "Wake2D.h"
9#include "World2D.h"
10
11#include "BarnesHut.h"
12
13using namespace VM2D;
14
15std::vector<Point2D> OptimizedVelocity::GetAverageVelocity() const
16{
17 size_t numSteps = allStepsVelocities.size();
18 size_t numPoints = allStepsVelocities[0].size();
19
20 std::vector<Point2D> averageVelocities(numPoints, { 0.0, 0.0 });
21
22 for (size_t step = 0; step < numSteps; ++step) {
23 for (size_t i = 0; i < numPoints; ++i) {
24 averageVelocities[i][0] += allStepsVelocities[step][i][0];
25 averageVelocities[i][1] += allStepsVelocities[step][i][1];
26 }
27 }
28
29 for (size_t i = 0; i < numPoints; ++i) {
30 averageVelocities[i][0] /= numSteps;
31 averageVelocities[i][1] /= numSteps;
32 }
33
34 return averageVelocities;
35}
36
37Point2D OptimizedVelocity::GetGlobalAverageVelocity(const std::vector<Point2D>& averageVelocities) const
38{
39 double sumX = 0.0;
40 double sumY = 0.0;
41 size_t numPoints = averageVelocities.size();
42
43 for (size_t i = 0; i < numPoints; ++i) {
44 sumX += averageVelocities[i][0];
45 sumY += averageVelocities[i][1];
46 }
47
48 Point2D globalAverage;
49 globalAverage[0] = sumX / numPoints;
50 globalAverage[1] = sumY / numPoints;
51
52 return globalAverage;
53}
54
55void OptimizedVelocity::AddVelocities(const std::vector<Point2D>& velocities)
56{
57 allStepsVelocities.push_back(velocities);
58}
59
60void OptimizedVelocity::PerformAveragingVelo(const std::string& path)
61{
62 if (isAveraged) {
63 std::vector<Point2D> averageVelocities = GetAverageVelocity();
64 Point2D globalAverage = GetGlobalAverageVelocity(averageVelocities);
65 std::cout << "Velocity value: (" << globalAverage[0] << ", " << globalAverage[1] << ")\n";
66 std::ofstream psiFile(path + "psi.txt");
67 psiFile << "Velocity value: (" << globalAverage[0] << ", " << globalAverage[1] << ")\n";
68 psiFile.close();
69
70 isAveraged = false;
71 }
72}
73
74//void OptimizedVelocity::AddPressures(const std::vector<double>& pressures)
75//{
76// allStepsPressures.push_back(pressures);
77//}
78//
79//std::vector<double> OptimizedVelocity::GetAveragePressure() const
80//{
81// size_t numSteps = allStepsPressures.size();
82// size_t numPoints = allStepsPressures[0].size();
83//
84// std::vector<double> averagePressures(numPoints, 0.0);
85//
86// for (size_t step = 0; step < numSteps; ++step) {
87// for (size_t i = 0; i < numPoints; ++i) {
88// averagePressures[i] += allStepsPressures[step][i];
89// }
90// }
91//
92// for (size_t i = 0; i < numPoints; ++i) {
93// averagePressures[i] /= numSteps;
94// }
95//
96// return averagePressures;
97//}
98//
99//double OptimizedVelocity::GetGlobalAveragePressure(const std::vector<double>& averagePressures) const
100//{
101// double sumPressure = 0.0;
102// size_t numPoints = averagePressures.size();
103//
104// for (size_t i = 0; i < numPoints; ++i) {
105// sumPressure += averagePressures[i];
106// }
107//
108// return sumPressure / numPoints;
109//}
110//
111//void OptimizedVelocity::PerformAveragingPress()
112//{
113// if (isAveraged) {
114// std::vector<double> averagePressure = GetAveragePressure();
115// double globalAverage = GetGlobalAveragePressure(averagePressure);
116// std::cout << " : (" << globalAverage << ")\n";
117// isAveraged = false;
118// }
119//}
Заголовочный файл с описанием класса Airfoil.
Заголовок основного класса BarnesHut.
Заголовочный файл с описанием класса Boundary.
Заголовочный файл с описанием класса MeasureVP.
Заголовочный файл с описанием класса Mechanics.
Заголовочный файл с описанием класса StreamParser.
Заголовочный файл с описанием класса Wake.
Заголовочный файл с описанием класса World2D.
std::vector< Point2D > GetAverageVelocity() const
Point2D GetGlobalAverageVelocity(const std::vector< Point2D > &averageVelocities) const
void PerformAveragingVelo(const std::string &path)
std::vector< std::vector< Point2D > > allStepsVelocities
void AddVelocities(const std::vector< Point2D > &velocities)
size_t size() const
Definition numvector.h:114