get rid of piForeach

apply some code analyzer recommendations
ICU flag now check if libicu exists
prepare for more accurate growth of containers (limited PoT, then constantly increase size)
This commit is contained in:
2024-11-20 20:01:47 +03:00
parent 24112498ce
commit caa7880cc4
40 changed files with 415 additions and 320 deletions

View File

@@ -34,6 +34,11 @@ const char PIMathSolver::methods_desc[] = "b{Methods:}\
PIMathSolver::Method PIMathSolver::method_global = PIMathSolver::Eyler_2;
PIMathSolver::PIMathSolver() {
times.resize(4);
}
void PIMathSolver::solve(double u, double h) {
switch (method) {
case Global:
@@ -128,6 +133,12 @@ void PIMathSolver::fromTF(const TransferFunction & TF) {
}
void PIMathSolver::setTime(double time) {
times.pop_back();
times.push_front(time);
}
void PIMathSolver::solveEyler1(double u, double h) {
F[0] = A * X + d * u;
X += F[0] * h;
@@ -258,3 +269,41 @@ void PIMathSolver::solvePA(double u, double h, uint deg) {
}
moveF();
}
void PIMathSolver::solvePA2(double u, double h) {
if (step > 0)
solvePA(u, h, 2);
else
solveEyler1(u, h);
}
void PIMathSolver::solvePA3(double u, double h) {
if (step > 1)
solvePA(u, h, 3);
else
solvePA2(u, h);
}
void PIMathSolver::solvePA4(double u, double h) {
if (step > 2)
solvePA(u, h, 4);
else
solvePA3(u, h);
}
void PIMathSolver::solvePA5(double u, double h) {
if (step > 3)
solvePA(u, h, 5);
else
solvePA4(u, h);
}
void PIMathSolver::moveF() {
for (uint i = F.size() - 1; i > 0; --i)
F[i] = F[i - 1];
}