summaryrefslogtreecommitdiffstats
path: root/Project/TransferFunction.cpp
diff options
context:
space:
mode:
authorThales Lima Oliveira <thaleslima.ufu@gmail.com>2017-05-13 16:13:12 -0300
committerThales Lima Oliveira <thaleslima.ufu@gmail.com>2017-05-13 16:13:12 -0300
commitd44c3a76943c90cfcbf336961d9ba3516a1c80dc (patch)
treec8ff066e02428c9a4f8f00e488d7495026a25b22 /Project/TransferFunction.cpp
parent6cf253651521f0cdaf3a80f8ae58e9917fe2ec57 (diff)
downloadPSP.git-d44c3a76943c90cfcbf336961d9ba3516a1c80dc.tar.gz
PSP.git-d44c3a76943c90cfcbf336961d9ba3516a1c80dc.tar.xz
PSP.git-d44c3a76943c90cfcbf336961d9ba3516a1c80dc.zip
Several bugs fixed, ready to pull
Diffstat (limited to 'Project/TransferFunction.cpp')
-rw-r--r--Project/TransferFunction.cpp11
1 files changed, 5 insertions, 6 deletions
diff --git a/Project/TransferFunction.cpp b/Project/TransferFunction.cpp
index 2b023ea..ebb59fb 100644
--- a/Project/TransferFunction.cpp
+++ b/Project/TransferFunction.cpp
@@ -248,9 +248,9 @@ void TransferFunction::Rotate(bool clockwise)
}
}
-void TransferFunction::CalculateSpaceState(double timeStep, double error)
+void TransferFunction::CalculateSpaceState(int maxIteration, double error)
{
- m_timeStep = timeStep;
+ m_maxIteration = maxIteration;
m_error = error;
int order = static_cast<int>(m_denominator.size());
@@ -299,9 +299,8 @@ void TransferFunction::CalculateSpaceState(double timeStep, double error)
}
}
-bool TransferFunction::Solve(double input)
+bool TransferFunction::Solve(double input, double timeStep)
{
- int maxIter = 100;
int order = static_cast<int>(m_ss.A.size());
std::vector<double> x;
@@ -323,7 +322,7 @@ bool TransferFunction::Solve(double input)
double dxError = 0.0;
for(int i = 0; i < order; i++) {
// Trapezoidal method
- x[i] = m_x[i] + 0.5 * m_timeStep * (m_dx[i] + dx[i]);
+ x[i] = m_x[i] + 0.5 * timeStep * (m_dx[i] + dx[i]);
if(std::abs(x[i] - oldx[i]) > xError) xError = std::abs(x[i] - oldx[i]);
@@ -342,7 +341,7 @@ bool TransferFunction::Solve(double input)
if(std::max(xError, dxError) < m_error) exit = true;
iter++;
- if(iter >= maxIter) return false;
+ if(iter >= m_maxIteration) return false;
}
m_output = 0.0;