74 std::vector<double>
phi;
75 std::vector<double>
xi;
76 std::vector<double>
psi;
102 inline double norm(
const std::vector<T>& b)
106 #pragma omp simd reduction(+:norm)
108 for (
size_t i = 0; i < b.size(); i++)
109 norm += (b[i] * b[i]);
117 inline double norm2(
const std::vector<T>& b)
121 #pragma omp simd reduction(+:norm2)
123 for (
size_t i = 0; i < b.size(); i++)
124 norm2 += (b[i] * b[i]);
131 inline std::vector<T>
operator*(
const T lambda,
const std::vector<T>& x)
139 for (
size_t i = 0; i < x.size(); ++i)
150 cublasHandle_t cublas_handle;
156 std::vector<double>
w,
c,
s;
158 std::vector<std::vector<double>>
H,
diag;
164 std::vector<size_t>
np;
167 std::vector<double>
g,
Y;
185 bool IterRot(
const double nrmRhs,
double& gs,
int m,
bool residualShow);
190 void SolCircleRundirect(
const std::vector<double>& A,
const std::vector<double>& rhs,
size_t startRow,
size_t startRowReg,
size_t np, std::vector<double>& res);
192 void SolMdirect(
const std::vector<double>& A,
const std::vector<double>& rhs,
size_t startRow,
size_t startRowReg,
size_t np, std::vector<double>& res,
bool lin);
197 const std::vector<double>& mtrDir,
198 const std::vector<double>& rhsDir,
199 const std::vector<int>& pos,
200 const std::vector<int>& vsize,
201 std::vector<std::vector<double>>& gam,
202 std::vector<double>& R);
207 void SolM(std::vector<double>& AX,
const std::vector<double>& rhs,
int p);
208 void SolCircleRun(std::vector<double>& AX,
const std::vector<double>& rhs,
int p);
212 std::vector<std::vector<double>>& X,
213 std::vector<double>& R,
214 const std::vector<std::vector<double>>& rhs,
215 const std::vector<double>& rhsReg,
Заголовочный файл с описанием класса Point2D.
Абстрактный класс, определяющий обтекаемый профиль
std::vector< double > bufcurrentSol
void SolCircleRun(std::vector< double > &AX, const std::vector< double > &rhs, int p)
std::vector< std::vector< Point2D > > prec
void SolMdirect(const std::vector< double > &A, const std::vector< double > &rhs, size_t startRow, size_t startRowReg, size_t np, std::vector< double > &res, bool lin)
std::vector< std::vector< double > > allBuf2
std::vector< std::vector< Point2D > > prea1
std::vector< std::vector< Point2D > > prea
std::vector< double > bufnewSol
std::vector< std::vector< double > > H
void PreCalculateCoef(int aflIndex)
void SolCircleRundirect(const std::vector< double > &A, const std::vector< double > &rhs, size_t startRow, size_t startRowReg, size_t np, std::vector< double > &res)
std::vector< double > Vflat
std::vector< sweepVectors > allSW
bool IterRot(const double nrmRhs, double &gs, int m, bool residualShow)
Контроль невязки после выполнения очередной итерации GMRES.
void GMRES_Direct(int nAllVars, int nafl, const std::vector< double > &mtrDir, const std::vector< double > &rhsDir, const std::vector< int > &pos, const std::vector< int > &vsize, std::vector< std::vector< double > > &gam, std::vector< double > &R)
std::vector< std::vector< double > > diag
std::vector< std::vector< Point2D > > prec1
void SolM(std::vector< double > &AX, const std::vector< double > &rhs, int p)
Класс, опеделяющий текущую решаемую задачу
double norm(const std::vector< T > &b)
Шаблонная функция вычисления евклидовой нормы вектора или списка
std::vector< T > operator*(const T lambda, const std::vector< T > &x)
Шаблонная функция умножения числа на вектор
double norm2(const std::vector< T > &b)
Шаблонная функция вычисления евклидовой нормы вектора или списка
Структура, определяющий необходимые массивы для рализации метода прогонки
std::vector< double > phi
std::vector< double > beta
std::vector< double > psi
std::vector< double > delta
std::vector< double > alpha
std::vector< double > gamma