70 std::vector<double>
phi;
71 std::vector<double>
xi;
72 std::vector<double>
psi;
93 inline double norm(
const std::vector<T>& b)
97 #pragma omp simd reduction(+:norm)
99 for (
size_t i = 0; i < b.size(); i++)
100 norm += (b[i] * b[i]);
108 inline double norm2(
const std::vector<T>& b)
114 for (
size_t i = 0; i < b.size(); i++)
115 norm2 += (b[i] * b[i]);
122 inline std::vector<T>
operator*(
const T lambda,
const std::vector<T>& x)
130 for (
size_t i = 0; i < x.size(); ++i)
142 bool IterRot(std::vector<std::vector<double>>& H,
const double nrmRhs,
double& gs, std::vector<double>& c, std::vector<double>& s,
int m,
int n,
double epsGMRES,
int iter,
bool residualShow);
144 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);
146 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);
152 const std::vector<double>& mtrDir,
153 const std::vector<double>& rhsDir,
154 const std::vector<int>& pos,
155 const std::vector<int>& vsize,
156 std::vector<std::vector<double>>& gam,
157 std::vector<double>& R);
162 void SolCircleRun(std::vector<double>& AX,
const std::vector<double>& rhs,
const Airfoil& afl,
const std::vector<std::vector<Point2D>>& prea1,
const std::vector<std::vector<Point2D>>& prec1,
int p,
int n, sweepVectors& sw);
164 void SolM(std::vector<double>& AX,
const std::vector<double>& rhs,
const Airfoil& afl,
165 const std::vector<std::vector<Point2D>>& prea,
const std::vector<std::vector<Point2D>>& prec,
int p,
int n,
bool linScheme, sweepVectors& sw);
168 void GMRES(
const World2D& W,
169 std::vector<std::vector<double>>& X,
170 std::vector<double>& R,
171 const std::vector<std::vector<double>>& rhs,
172 const std::vector<double> rhsReg,
Заголовочный файл с описанием класса Point2D.
void GMRES_Direct(const World2D &W, 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)
double norm(const std::vector< T > &b)
Шаблонная функция вычисления евклидовой нормы вектора или списка
void SolCircleRun(std::vector< double > &AX, const std::vector< double > &rhs, const Airfoil &afl, const std::vector< std::vector< Point2D > > &prea1, const std::vector< std::vector< Point2D > > &prec1, int p, int n, sweepVectors &sw)
bool IterRot(std::vector< std::vector< double > > &H, const double nrmRhs, double &gs, std::vector< double > &c, std::vector< double > &s, int m, int n, double epsGMRES, int iter, bool residualShow)
Контроль невязки после выполнения очередной итерации GMRES.
std::vector< T > operator*(const T lambda, const std::vector< T > &x)
Шаблонная функция умножения числа на вектор
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)
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)
void SolM(std::vector< double > &AX, const std::vector< double > &rhs, const Airfoil &afl, const std::vector< std::vector< Point2D > > &prea, const std::vector< std::vector< Point2D > > &prec, int p, int n, bool linScheme, sweepVectors &sw)
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