Оптимизация пространства
This commit is contained in:
@@ -66,7 +66,7 @@ void Solver::SolveExplicit(System& sys, double tstop) const {
|
||||
|
||||
double tx = (node->r()->T() - 2 * node->T() + node->l()->T()) / pow(sys.step(), 2);
|
||||
double ty = (node->u()->T() - 2 * node->T() + node->d()->T()) / pow(sys.step(), 2);
|
||||
double t = delta * (tx + ty) * sys.a1()/pow(sys.step(), 2) + node->T();
|
||||
double t = delta * (tx + ty) * sys.a()/pow(sys.step(), 2) + node->T();
|
||||
node->SetT(t);
|
||||
}
|
||||
}
|
||||
@@ -85,17 +85,17 @@ void Solver::SolveLine(System& sys, std::vector<Node*>& n) const {
|
||||
/* Защита от нуля */
|
||||
if (mu2 == 0.)
|
||||
mu2 = .1;
|
||||
double val2 = -(2 * sys.a1()) / (pow(sys.step(), 2)) - 1 / delta;
|
||||
double val1 = sys.a1() / (pow(sys.step(), 2));
|
||||
double val2 = -(2 * sys.a()) / (pow(sys.step(), 2)) - 1 / delta;
|
||||
double val1 = sys.a() / (pow(sys.step(), 2));
|
||||
std::vector<std::vector<double>> _Temperature(size);
|
||||
std::vector<double> right(size);
|
||||
for (int i = 0; i < _Temperature.size(); i++)
|
||||
_Temperature[i].resize(3, 0.0);
|
||||
|
||||
_Temperature[0][0] = -(2 * sys.a1()) / (mu1 * pow(sys.step(), 2)) - 1 / delta; /* Первый узел по X */
|
||||
_Temperature[0][1] = (2 * sys.a1()) / ((mu1 + 1) * pow(sys.step(), 2)); /* Первый узел по Y */
|
||||
_Temperature.back()[1] = (2 * sys.a1()) / ((mu2 + 1) * pow(sys.step(), 2));
|
||||
_Temperature.back()[2] = -(2 * sys.a1()) / (mu2 * pow(sys.step(), 2)) - 1 / delta;
|
||||
_Temperature[0][0] = -(2 * sys.a()) / (mu1 * pow(sys.step(), 2)) - 1 / delta; /* Первый узел по X */
|
||||
_Temperature[0][1] = (2 * sys.a()) / ((mu1 + 1) * pow(sys.step(), 2)); /* Первый узел по Y */
|
||||
_Temperature.back()[1] = (2 * sys.a()) / ((mu2 + 1) * pow(sys.step(), 2));
|
||||
_Temperature.back()[2] = -(2 * sys.a()) / (mu2 * pow(sys.step(), 2)) - 1 / delta;
|
||||
|
||||
for (int i = 1; i < size - 1; i++) {
|
||||
_Temperature[i][0] = val1;
|
||||
@@ -105,8 +105,8 @@ void Solver::SolveLine(System& sys, std::vector<Node*>& n) const {
|
||||
|
||||
for (int i = 0; i < right.size(); i++)
|
||||
right[i] = -n[i + 1]->T() / delta;
|
||||
right.front() += -(2 * sys.a1() * n.front()->T()) / (mu1 * (mu1 + 1) * pow(sys.step(), 2));
|
||||
right.back() += -(2 * sys.a1() * n.back()->T()) / (mu2 * (mu2 + 1) * pow(sys.step(), 2));
|
||||
right.front() += -(2 * sys.a() * n.front()->T()) / (mu1 * (mu1 + 1) * pow(sys.step(), 2));
|
||||
right.back() += -(2 * sys.a() * n.back()->T()) / (mu2 * (mu2 + 1) * pow(sys.step(), 2));
|
||||
std::vector<double> tmps = ThomasMethod(_Temperature, right);
|
||||
for (int i = 0; i < tmps.size(); i++)
|
||||
n[i + 1]->SetT(tmps[i]);
|
||||
|
||||
Reference in New Issue
Block a user