From b2f5ab3c6b5be312ab382281afafea341470906f Mon Sep 17 00:00:00 2001 From: Thorsten Liebig Date: Thu, 3 Sep 2015 22:35:14 +0200 Subject: [PATCH] improved steady state detection Signed-off-by: Thorsten Liebig --- FDTD/extensions/engine_ext_steadystate.cpp | 28 ++++++++++++++-------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/FDTD/extensions/engine_ext_steadystate.cpp b/FDTD/extensions/engine_ext_steadystate.cpp index 4b9575c..9e5d0ce 100644 --- a/FDTD/extensions/engine_ext_steadystate.cpp +++ b/FDTD/extensions/engine_ext_steadystate.cpp @@ -64,7 +64,7 @@ void Engine_Ext_SteadyState::Apply2Voltages() m_last_max_diff = abs(curr_total_energy-last_total_energy)/last_total_energy; no_valid = false; } -// cerr << curr_total_energy << "/" << last_total_energy << "=" << abs(curr_total_energy-last_total_energy)/last_total_energy << endl; + //cerr << curr_total_energy << "/" << last_total_energy << "=" << abs(curr_total_energy-last_total_energy)/last_total_energy << endl; last_total_energy = curr_total_energy; unsigned int old_pos = 0; unsigned int new_pos = p; @@ -74,27 +74,35 @@ void Engine_Ext_SteadyState::Apply2Voltages() old_pos = p; } //cerr << TS << "/" << rel_pos << ": one period complete, new_pos" << new_pos << " old pos: " << old_pos << endl; + double *curr_pow = new double[m_E_records.size()]; + double *diff_pow = new double[m_E_records.size()]; + double max_pow = 0; for (size_t n=0;n0) + max_pow = max(max_pow, curr_pow[n]); + } + for (size_t n=0;nmax_pow*1e-2) { - m_last_max_diff = max(m_last_max_diff, diff_pow/curr_pow); + m_last_max_diff = max(m_last_max_diff, diff_pow[n]/curr_pow[n]); + //cerr << m_last_max_diff << endl; no_valid = false; } -// cerr << "curr_pow: " << curr_pow << " diff_pow: " << diff_pow << " diff: " << diff_pow/curr_pow << endl; -// cerr << m_last_max_diff << endl; } if ((no_valid) || (m_last_max_diff>1)) m_last_max_diff = 1; -// cerr << m_last_max_diff << endl; + delete[] curr_pow; curr_pow = NULL; + //cerr << m_last_max_diff << endl; } }