From 4770bdd9d6350d387d8bf9c3560673e7f2c0fa8c Mon Sep 17 00:00:00 2001 From: Victor Brunini Date: Thu, 13 Dec 2012 22:16:16 +0000 Subject: [PATCH] Small performance improvement, transform seems to be slightly slower than just looping over the array. --- src/thermo/Phase.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/thermo/Phase.cpp b/src/thermo/Phase.cpp index 866f6d1d0..97001f6eb 100644 --- a/src/thermo/Phase.cpp +++ b/src/thermo/Phase.cpp @@ -322,12 +322,19 @@ void Phase::setMoleFractions(const doublereal* const x) * Set m_ym_ to the normalized mole fractions divided by the normalized mean molecular weight: * m_ym_k = X_k / (sum_k X_k M_k) */ - transform(m_y.begin(), m_y.end(), m_ym.begin(), timesConstant(1.0/sum)); +// transform(m_y.begin(), m_y.end(), m_ym.begin(), timesConstant(1.0/sum)); + const doublereal invSum = 1.0/sum; + for (size_t k=0; k < m_kk; k++) { + m_ym[k] = m_y[k]*invSum; + } /* * Now set m_y to the normalized mass fractions * m_y = X_k M_k / (sum_k X_k M_k) */ - transform(m_ym.begin(), m_ym.begin() + m_kk, m_molwts.begin(), m_y.begin(), multiplies()); +// transform(m_ym.begin(), m_ym.begin() + m_kk, m_molwts.begin(), m_y.begin(), multiplies()); + for(size_t k=0; k < m_kk; k++) { + m_y[k] = m_ym[k] * m_molwts[k]; + } /* * Calculate the normalized molecular weight */