From 28270820a5c5ef993b8e9bc502ad05772190f6c1 Mon Sep 17 00:00:00 2001 From: Ray Speth Date: Tue, 21 Feb 2012 16:05:53 +0000 Subject: [PATCH] Use std::swap instead of homegrown alternatives --- include/cantera/equil/vcs_defs.h | 4 -- src/equil/BasisOptimize.cpp | 21 +-------- src/equil/vcs_elem_rearrange.cpp | 17 ++++--- src/equil/vcs_internal.h | 31 ------------- src/equil/vcs_report.cpp | 4 +- src/equil/vcs_solve.h | 4 +- src/equil/vcs_solve_TP.cpp | 78 +++++++++++++++----------------- src/equil/vcs_util.cpp | 63 ++------------------------ src/numerics/RootFind.cpp | 16 ++----- 9 files changed, 59 insertions(+), 179 deletions(-) diff --git a/include/cantera/equil/vcs_defs.h b/include/cantera/equil/vcs_defs.h index 12a2b4473..4322efc46 100644 --- a/include/cantera/equil/vcs_defs.h +++ b/include/cantera/equil/vcs_defs.h @@ -19,10 +19,6 @@ namespace VCSnonideal */ //@{ -#ifndef SWAP -# define SWAP(x1, x2, temp) ((temp) = (x1), (x1) = (x2), (x2) = (temp)) -#endif - #ifndef SQUARE # define SQUARE(x) ((x) * (x)) #endif diff --git a/src/equil/BasisOptimize.cpp b/src/equil/BasisOptimize.cpp index 0b50037b9..0259c23b0 100644 --- a/src/equil/BasisOptimize.cpp +++ b/src/equil/BasisOptimize.cpp @@ -43,15 +43,6 @@ static void print_stringTrunc(const char* str, int space, int alignment); */ static size_t amax(double* x, size_t j, size_t n); -//! Switch the position in the vector -/*! - * @param orderVector Vector to be manipulated - * @param jr first position - * @param kspec second species - */ -static void switch_pos(std::vector &orderVector, size_t jr, size_t kspec); - - //! Invert an nxn matrix and solve m rhs's /*! * @@ -361,7 +352,7 @@ size_t Cantera::BasisOptimize(int* usedZeroedSpecies, bool doFormRxn, writelogf("(%9.2g) as component %3d\n", molNum[jj], jr); } #endif - switch_pos(orderVectorSpecies, jr, k); + std::swap(orderVectorSpecies[jr], orderVectorSpecies[k]); } /* - entry point from up above */ L_END_LOOP: @@ -558,14 +549,6 @@ static size_t amax(double* x, size_t j, size_t n) return largest; } - -static void switch_pos(std::vector& orderVector, size_t jr, size_t kspec) -{ - size_t kcurr = orderVector[jr]; - orderVector[jr] = orderVector[kspec]; - orderVector[kspec] = kcurr; -} - /* * vcs_mlequ: * @@ -897,7 +880,7 @@ size_t Cantera::ElemRearrange(size_t nComponents, const vector_fp& elementAbunda writelogf(" as element %3d\n", jr); } #endif - switch_pos(orderVectorElements, jr, k); + std::swap(orderVectorElements[jr], orderVectorElements[k]); } /* diff --git a/src/equil/vcs_elem_rearrange.cpp b/src/equil/vcs_elem_rearrange.cpp index 22df46275..05fd5bf85 100644 --- a/src/equil/vcs_elem_rearrange.cpp +++ b/src/equil/vcs_elem_rearrange.cpp @@ -205,7 +205,7 @@ int VCS_SOLVE::vcs_elem_rearrange(double* const aw, double* const sa, } #endif vcs_switch_elem_pos(jr, k); - vcsUtil_dsw(aw, jr, k); + std::swap(aw[jr], aw[k]); } /* @@ -232,7 +232,6 @@ void VCS_SOLVE::vcs_switch_elem_pos(size_t ipos, size_t jpos) return; } size_t j; - double dtmp; vcs_VolPhase* volPhase; #ifdef DEBUG_MODE if (ipos > (m_numElemConstraints - 1) || @@ -258,15 +257,15 @@ void VCS_SOLVE::vcs_switch_elem_pos(size_t ipos, size_t jpos) } } } - vcsUtil_dsw(VCS_DATA_PTR(m_elemAbundancesGoal), ipos, jpos); - vcsUtil_dsw(VCS_DATA_PTR(m_elemAbundances), ipos, jpos); - vcsUtil_ssw(VCS_DATA_PTR(m_elementMapIndex), ipos, jpos); - vcsUtil_isw(VCS_DATA_PTR(m_elType), ipos, jpos); - vcsUtil_isw(VCS_DATA_PTR(m_elementActive), ipos, jpos); + std::swap(m_elemAbundancesGoal[ipos], m_elemAbundancesGoal[jpos]); + std::swap(m_elemAbundances[ipos], m_elemAbundancesGoal[jpos]); + std::swap(m_elementMapIndex[ipos], m_elementMapIndex[jpos]); + std::swap(m_elType[ipos], m_elType[jpos]); + std::swap(m_elementActive[ipos], m_elementActive[jpos]); for (j = 0; j < m_numSpeciesTot; ++j) { - SWAP(m_formulaMatrix[ipos][j], m_formulaMatrix[jpos][j], dtmp); + std::swap(m_formulaMatrix[ipos][j], m_formulaMatrix[jpos][j]); } - vcsUtil_stsw(m_elementName, ipos, jpos); + std::swap(m_elementName[ipos], m_elementName[jpos]); } } diff --git a/src/equil/vcs_internal.h b/src/equil/vcs_internal.h index 86ced922b..7f7c7b9dc 100644 --- a/src/equil/vcs_internal.h +++ b/src/equil/vcs_internal.h @@ -193,37 +193,6 @@ int vcsUtil_mlequ(double* c, size_t idem, size_t n, double* b, size_t m); */ int vcsUtil_gaussj(double* c, size_t idem, size_t n, double* b, size_t m); -//! Swap values in vector of doubles -/*! - * Switches the value of x[i1] with x[i2] - * - * @param x Vector of doubles - * @param i1 first index - * @param i2 second index - */ -void vcsUtil_dsw(double x[], size_t i1, size_t i2); - -//! Swap values in an integer array -/*! - * Switches the value of x[i1] with x[i2] - * - * @param x Vector of integers - * @param i1 first index - * @param i2 second index - */ -void vcsUtil_isw(int x[], size_t i1, size_t i2); -void vcsUtil_ssw(size_t x[], size_t i1, size_t i2); - -//! Swap values in a std vector string -/*! - * Switches the value of vecStrings[i1] with vecStrings[i2] - * - * @param vecStrings Vector of integers - * @param i1 first index - * @param i2 second index - */ -void vcsUtil_stsw(std::vector & vecStrings, - size_t i1, size_t i2); //! Definition of the function pointer for the root finder /*! diff --git a/src/equil/vcs_report.cpp b/src/equil/vcs_report.cpp index 41aa7bca9..0ceacfb79 100644 --- a/src/equil/vcs_report.cpp +++ b/src/equil/vcs_report.cpp @@ -73,8 +73,8 @@ int VCS_SOLVE::vcs_report(int iconv) for (l = m_numComponents; l < m_numSpeciesRdc; ++l) { k = vcs_optMax(VCS_DATA_PTR(xy), 0, l, m_numSpeciesRdc); if (k != l) { - vcsUtil_dsw(VCS_DATA_PTR(xy), k, l); - vcsUtil_ssw(VCS_DATA_PTR(sortindex), k, l); + std::swap(xy[k], xy[l]); + std::swap(sortindex[k], sortindex[l]); } } diff --git a/src/equil/vcs_solve.h b/src/equil/vcs_solve.h index c3df1b02a..d866fab2f 100644 --- a/src/equil/vcs_solve.h +++ b/src/equil/vcs_solve.h @@ -1857,8 +1857,8 @@ public: std::vector m_phaseID; //! Boolean indicating whether a species belongs to a single-species phase - std::vector m_SSPhase; - + // vector can't be used here because it doesn't work with std::swap + std::vector m_SSPhase; //! Species string name for the kth species /*! diff --git a/src/equil/vcs_solve_TP.cpp b/src/equil/vcs_solve_TP.cpp index 913beaee8..e70934f8a 100644 --- a/src/equil/vcs_solve_TP.cpp +++ b/src/equil/vcs_solve_TP.cpp @@ -3480,7 +3480,7 @@ int VCS_SOLVE::vcs_basopt(const bool doJustComponents, double aw[], double sa[], } #endif vcs_switch_pos(false, jr, k); - vcsUtil_dsw(aw, jr, k); + std::swap(aw[jr], aw[k]); } #ifdef DEBUG_MODE else { @@ -4986,15 +4986,14 @@ void VCS_SOLVE::vcs_switch2D(double* const* const Jac, const size_t k1, const size_t k2) const { size_t i; - register double dtmp; if (k1 == k2) { return; } for (i = 0; i < m_numSpeciesTot; i++) { - SWAP(Jac[k1][i], Jac[k2][i], dtmp); + std::swap(Jac[k1][i], Jac[k2][i]); } for (i = 0; i < m_numSpeciesTot; i++) { - SWAP(Jac[i][k1], Jac[i][k2], dtmp); + std::swap(Jac[i][k1], Jac[i][k2]); } } /*****************************************************************************/ @@ -5558,11 +5557,8 @@ void VCS_SOLVE::vcs_deltag_Phase(const size_t iphase, const bool doDeleted, */ void VCS_SOLVE::vcs_switch_pos(const bool ifunc, const size_t k1, const size_t k2) { - register size_t j; - register double t1 = 0.0; size_t i1, i2, iph, kp1, kp2; vcs_VolPhase* pv1, *pv2; - VCS_SPECIES_THERMO* st_tmp; if (k1 == k2) { return; } @@ -5595,37 +5591,35 @@ void VCS_SOLVE::vcs_switch_pos(const bool ifunc, const size_t k1, const size_t k pv2->setSpGlobalIndexVCS(kp2, k1); //pv1->IndSpecies[kp1] = k2; //pv2->IndSpecies[kp2] = k1; - int itmp; - bool btmp; - vcsUtil_stsw(m_speciesName, k1, k2); - SWAP(m_molNumSpecies_old[k1], m_molNumSpecies_old[k2], t1); - SWAP(m_speciesUnknownType[k1], m_speciesUnknownType[k2], itmp); - SWAP(m_molNumSpecies_new[k1], m_molNumSpecies_new[k2], t1); - SWAP(m_SSfeSpecies[k1], m_SSfeSpecies[k2], t1); - SWAP(m_spSize[k1], m_spSize[k2], t1); - SWAP(m_deltaMolNumSpecies[k1], m_deltaMolNumSpecies[k2], t1); - SWAP(m_feSpecies_old[k1], m_feSpecies_old[k2], t1); - SWAP(m_feSpecies_new[k1], m_feSpecies_new[k2], t1); - SWAP(m_SSPhase[k1], m_SSPhase[k2], btmp); - SWAP(m_phaseID[k1], m_phaseID[k2], j); - SWAP(m_speciesMapIndex[k1], m_speciesMapIndex[k2], j); - SWAP(m_speciesLocalPhaseIndex[k1], m_speciesLocalPhaseIndex[k2], j); - SWAP(m_actConventionSpecies[k1], m_actConventionSpecies[k2], itmp); - SWAP(m_lnMnaughtSpecies[k1], m_lnMnaughtSpecies[k2], t1); - SWAP(m_actCoeffSpecies_new[k1], m_actCoeffSpecies_new[k2], t1); - SWAP(m_actCoeffSpecies_old[k1], m_actCoeffSpecies_old[k2], t1); - SWAP(m_wtSpecies[k1], m_wtSpecies[k2], t1); - SWAP(m_chargeSpecies[k1], m_chargeSpecies[k2], t1); - SWAP(m_speciesThermoList[k1], m_speciesThermoList[k2], st_tmp); - SWAP(m_PMVolumeSpecies[k1], m_PMVolumeSpecies[k2], t1); + std::swap(m_speciesName[k1], m_speciesName[k2]); + std::swap(m_molNumSpecies_old[k1], m_molNumSpecies_old[k2]); + std::swap(m_speciesUnknownType[k1], m_speciesUnknownType[k2]); + std::swap(m_molNumSpecies_new[k1], m_molNumSpecies_new[k2]); + std::swap(m_SSfeSpecies[k1], m_SSfeSpecies[k2]); + std::swap(m_spSize[k1], m_spSize[k2]); + std::swap(m_deltaMolNumSpecies[k1], m_deltaMolNumSpecies[k2]); + std::swap(m_feSpecies_old[k1], m_feSpecies_old[k2]); + std::swap(m_feSpecies_new[k1], m_feSpecies_new[k2]); + std::swap(m_SSPhase[k1], m_SSPhase[k2]); + std::swap(m_phaseID[k1], m_phaseID[k2]); + std::swap(m_speciesMapIndex[k1], m_speciesMapIndex[k2]); + std::swap(m_speciesLocalPhaseIndex[k1], m_speciesLocalPhaseIndex[k2]); + std::swap(m_actConventionSpecies[k1], m_actConventionSpecies[k2]); + std::swap(m_lnMnaughtSpecies[k1], m_lnMnaughtSpecies[k2]); + std::swap(m_actCoeffSpecies_new[k1], m_actCoeffSpecies_new[k2]); + std::swap(m_actCoeffSpecies_old[k1], m_actCoeffSpecies_old[k2]); + std::swap(m_wtSpecies[k1], m_wtSpecies[k2]); + std::swap(m_chargeSpecies[k1], m_chargeSpecies[k2]); + std::swap(m_speciesThermoList[k1], m_speciesThermoList[k2]); + std::swap(m_PMVolumeSpecies[k1], m_PMVolumeSpecies[k2]); - for (j = 0; j < m_numElemConstraints; ++j) { - SWAP(m_formulaMatrix[j][k1], m_formulaMatrix[j][k2], t1); + for (size_t j = 0; j < m_numElemConstraints; ++j) { + std::swap(m_formulaMatrix[j][k1], m_formulaMatrix[j][k2]); } if (m_useActCoeffJac) { vcs_switch2D(m_dLnActCoeffdMolNum.baseDataAddr(), k1, k2); } - SWAP(m_speciesStatus[k1], m_speciesStatus[k2], itmp); + std::swap(m_speciesStatus[k1], m_speciesStatus[k2]); /* * Handle the index pointer in the phase structures */ @@ -5644,18 +5638,18 @@ void VCS_SOLVE::vcs_switch_pos(const bool ifunc, const size_t k1, const size_t k i1 , i2); } #endif - for (j = 0; j < m_numComponents; ++j) { - SWAP(m_stoichCoeffRxnMatrix[i1][j], m_stoichCoeffRxnMatrix[i2][j], t1); + for (size_t j = 0; j < m_numComponents; ++j) { + std::swap(m_stoichCoeffRxnMatrix[i1][j], m_stoichCoeffRxnMatrix[i2][j]); } - SWAP(m_scSize[i1], m_scSize[i2], t1); + std::swap(m_scSize[i1], m_scSize[i2]); for (iph = 0; iph < m_numPhases; iph++) { - SWAP(m_deltaMolNumPhase[i1][iph], m_deltaMolNumPhase[i2][iph], t1); - SWAP(m_phaseParticipation[i1][iph], - m_phaseParticipation[i2][iph], itmp); + std::swap(m_deltaMolNumPhase[i1][iph], m_deltaMolNumPhase[i2][iph]); + std::swap(m_phaseParticipation[i1][iph], + m_phaseParticipation[i2][iph]); } - SWAP(m_deltaGRxn_new[i1], m_deltaGRxn_new[i2], t1); - SWAP(m_deltaGRxn_old[i1], m_deltaGRxn_old[i2], t1); - SWAP(m_deltaGRxn_tmp[i1], m_deltaGRxn_tmp[i2], t1); + std::swap(m_deltaGRxn_new[i1], m_deltaGRxn_new[i2]); + std::swap(m_deltaGRxn_old[i1], m_deltaGRxn_old[i2]); + std::swap(m_deltaGRxn_tmp[i1], m_deltaGRxn_tmp[i2]); /* * We don't want to swap ir[], because the values of ir should diff --git a/src/equil/vcs_util.cpp b/src/equil/vcs_util.cpp index 022c9e644..ffa8642cb 100644 --- a/src/equil/vcs_util.cpp +++ b/src/equil/vcs_util.cpp @@ -248,58 +248,6 @@ int vcs_max_int(const int* vector, int length) return retn; } -//==================================================================================================================== -// Swap values in a std vector string -/* - * Switches the value of vecStrings[i1] with vecStrings[i2] - * - * @param vecStrings Vector of integers - * @param i1 first index - * @param i2 second index - */ -void vcsUtil_stsw(std::vector & vstr, size_t i1, size_t i2) -{ - std::string tmp(vstr[i2]); - vstr[i2] = vstr[i1]; - vstr[i1] = tmp; -} -//==================================================================================================================== -// Swap values in vector of doubles -/* - * Switches the value of x[i1] with x[i2] - * - * @param x Vector of doubles - * @param i1 first index - * @param i2 second index - */ -void vcsUtil_dsw(double x[], size_t i1, size_t i2) -{ - double t = x[i1]; - x[i1] = x[i2]; - x[i2] = t; -} -//==================================================================================================================== -// Swap values in an integer array -/* - * Switches the value of x[i1] with x[i2] - * - * @param x Vector of integers - * @param i1 first index - * @param i2 second index - */ -void vcsUtil_isw(int x[], size_t i1, size_t i2) -{ - int t = x[i1]; - x[i1] = x[i2]; - x[i2] = t; -} - -void vcsUtil_ssw(size_t x[], size_t i1, size_t i2) -{ - size_t t = x[i1]; - x[i1] = x[i2]; - x[i2] = t; -} //==================================================================================================================== #ifdef DEBUG_HKM @@ -344,15 +292,14 @@ static void mlequ_matrixDump(double* c, int idem, int n) */ static void vcsUtil_swapRows(double* c, size_t idem, size_t n, double* b, size_t m, size_t irowa, size_t irowb) { - double t1; if (irowa == irowb) { return; } for (size_t j = 0; j < n; j++) { - SWAP(c[irowa + j * idem], c[irowb + j * idem], t1); + std::swap(c[irowa + j * idem], c[irowb + j * idem]); } for (size_t j = 0; j < m; j++) { - SWAP(b[irowa + j * idem], b[irowb + j * idem], t1); + std::swap(b[irowa + j * idem], b[irowb + j * idem]); } } //==================================================================================================================== @@ -624,7 +571,7 @@ int vcsUtil_gaussj(double* c, size_t idem, size_t n, double* b, size_t m) size_t irow = npos; size_t icol = npos; bool needInverse = false; - double pivinv, dum; + double pivinv; #ifdef DEBUG_HKM static int s_numCalls = 0; s_numCalls++; @@ -683,7 +630,7 @@ int vcsUtil_gaussj(double* c, size_t idem, size_t n, double* b, size_t m) } for (ll = 0; ll < n; ll++) { if (ll != icol) { - dum = c[ll + idem * icol]; + double dum = c[ll + idem * icol]; c[ll + idem * icol] = 0; for (l = 0; l < n; l++) { c[ll + idem * l] -= c[icol + idem * l] * dum; @@ -698,7 +645,7 @@ int vcsUtil_gaussj(double* c, size_t idem, size_t n, double* b, size_t m) for (l = n-1; l >= 0; l--) { if (indxr[l] != indxc[l]) { for (k = 0; k < n; k++) { - SWAP(c[k + idem * indxr[l]], c[k + idem * indxr[l]], dum); + std::swap(c[k + idem * indxr[l]], c[k + idem * indxr[l]]); } } } diff --git a/src/numerics/RootFind.cpp b/src/numerics/RootFind.cpp index a2eb0d4f4..9f5fa28df 100644 --- a/src/numerics/RootFind.cpp +++ b/src/numerics/RootFind.cpp @@ -44,13 +44,6 @@ namespace Cantera #define DSIGN(x) (( (x) == (0.0) ) ? (0.0) : ( ((x) > 0.0) ? 1.0 : -1.0 )) #endif -#ifdef SWAP -#undef SWAP -#endif -#ifndef SWAP -#define SWAP(x1, x2, tmp) ((tmp) = (x2), (x2) = (x1), (x1) = (tmp)) -#endif - /*****************************************************************************/ /*****************************************************************************/ /*****************************************************************************/ @@ -360,7 +353,6 @@ int RootFind::solve(doublereal xmin, doublereal xmax, int itmax, doublereal& fun doublereal fnorm; /* A valid norm for the making the function value dimensionless */ doublereal xDelMin; doublereal sgn; - doublereal dtmp; doublereal fnoise = 0.0; rfHistory_.clear(); rfTable rfT; @@ -1162,13 +1154,13 @@ done: rfHistory_.push_back(rfT); rfT.clear(); rfT.its = its; - SWAP(f1, f2, dtmp); - SWAP(x1, x2, dtmp); + std::swap(f1, f2); + std::swap(x1, x2); *xbest = x2; if (fabs(fnew) < fabs(f1)) { if (f1 * fnew > 0.0) { - SWAP(f1, fnew, dtmp); - SWAP(x1, xnew, dtmp); + std::swap(f1, fnew); + std::swap(x1, xnew); } }