From 997ecc0b2a1e79b8d365ef588c610b0cfb2b6110 Mon Sep 17 00:00:00 2001 From: John Dupuy Date: Sun, 5 Nov 2023 17:47:33 -0600 Subject: [PATCH] Moved instantiations around. Removed a few warning. --- OndselSolver/DiagonalMatrix.cpp | 1 - OndselSolver/DiagonalMatrix.h | 2 +- OndselSolver/EulerAngles.cpp | 1 + OndselSolver/EulerAngles.h | 1 - OndselSolver/EulerParameters.cpp | 573 ++++++++++++++++--------------- OndselSolver/EulerParameters.h | 1 + OndselSolver/FullColumn.cpp | 6 +- OndselSolver/FullColumn.h | 6 +- OndselSolver/FullMatrix.h | 2 +- OndselSolver/FullVector.h | 12 +- 10 files changed, 303 insertions(+), 302 deletions(-) diff --git a/OndselSolver/DiagonalMatrix.cpp b/OndselSolver/DiagonalMatrix.cpp index b5b60da..e561c87 100644 --- a/OndselSolver/DiagonalMatrix.cpp +++ b/OndselSolver/DiagonalMatrix.cpp @@ -113,5 +113,4 @@ namespace MbD { s << "]"; return s; } - } diff --git a/OndselSolver/DiagonalMatrix.h b/OndselSolver/DiagonalMatrix.h index 4cb9eef..4abae1b 100644 --- a/OndselSolver/DiagonalMatrix.h +++ b/OndselSolver/DiagonalMatrix.h @@ -43,8 +43,8 @@ namespace MbD { double maxMagnitude() override; std::ostream& printOn(std::ostream& s) const override; - }; + template class DiagonalMatrix; } diff --git a/OndselSolver/EulerAngles.cpp b/OndselSolver/EulerAngles.cpp index d243282..00dd6ee 100644 --- a/OndselSolver/EulerAngles.cpp +++ b/OndselSolver/EulerAngles.cpp @@ -83,5 +83,6 @@ namespace MbD { rotOrder->at(1) = j; rotOrder->at(2) = k; } + template class EulerAngles>; } diff --git a/OndselSolver/EulerAngles.h b/OndselSolver/EulerAngles.h index d45c25d..ef3a678 100644 --- a/OndselSolver/EulerAngles.h +++ b/OndselSolver/EulerAngles.h @@ -35,6 +35,5 @@ namespace MbD { FMatDsptr aA; }; - template class EulerAngles>; } diff --git a/OndselSolver/EulerParameters.cpp b/OndselSolver/EulerParameters.cpp index 009e928..b26cd71 100644 --- a/OndselSolver/EulerParameters.cpp +++ b/OndselSolver/EulerParameters.cpp @@ -11,170 +11,170 @@ #include "FullRow.h" #include "FullMatrix.h" -using namespace MbD; -template<> -inline FMatFColDsptr EulerParameters::ppApEpEtimesColumn(FColDsptr col) -{ - double a2c0 = 2 * col->at(0); - double a2c1 = 2 * col->at(1); - double a2c2 = 2 * col->at(2); - double m2c0 = 0 - a2c0; - double m2c1 = 0 - a2c1; - double m2c2 = 0 - a2c2; - auto col00 = std::make_shared>(ListD{ a2c0, m2c1, m2c2 }); - auto col01 = std::make_shared>(ListD{ a2c1, a2c0, 0 }); - auto col02 = std::make_shared>(ListD{ a2c2, 0, a2c0 }); - auto col03 = std::make_shared>(ListD{ 0, m2c2, a2c1 }); - auto col11 = std::make_shared>(ListD{ m2c0, a2c1, m2c2 }); - auto col12 = std::make_shared>(ListD{ 0, a2c2, a2c1 }); - auto col13 = std::make_shared>(ListD{ a2c2, 0, m2c0 }); - auto col22 = std::make_shared>(ListD{ m2c0, m2c1, a2c2 }); - auto col23 = std::make_shared>(ListD{ m2c1, a2c0, 0 }); - auto col33 = std::make_shared>(ListD{ a2c0, a2c1, a2c2 }); - auto answer = std::make_shared(4, 4); - auto& row0 = answer->at(0); - row0->at(0) = col00; - row0->at(1) = col01; - row0->at(2) = col02; - row0->at(3) = col03; - auto& row1 = answer->at(1); - row1->at(0) = col01; - row1->at(1) = col11; - row1->at(2) = col12; - row1->at(3) = col13; - auto& row2 = answer->at(2); - row2->at(0) = col02; - row2->at(1) = col12; - row2->at(2) = col22; - row2->at(3) = col23; - auto& row3 = answer->at(3); - row3->at(0) = col03; - row3->at(1) = col13; - row3->at(2) = col23; - row3->at(3) = col33; - return answer; -} - -template<> -inline FMatDsptr EulerParameters::pCpEtimesColumn(FColDsptr col) -{ - //"col size = 4." - auto c0 = col->at(0); - auto c1 = col->at(1); - auto c2 = col->at(2); - auto mc0 = -c0; - auto mc1 = -c1; - auto mc2 = -c2; - auto mc3 = -col->at(3); - auto answer = std::make_shared(3, 4); - auto& row0 = answer->at(0); - auto& row1 = answer->at(1); - auto& row2 = answer->at(2); - row0->atiput(0, mc3); - row0->atiput(1, mc2); - row0->atiput(2, c1); - row0->atiput(3, c0); - row1->atiput(0, c2); - row1->atiput(1, mc3); - row1->atiput(2, mc0); - row1->atiput(3, c1); - row2->atiput(0, mc1); - row2->atiput(1, c0); - row2->atiput(2, mc3); - row2->atiput(3, c2); - return answer; -} - -template -inline FMatDsptr EulerParameters::pCTpEtimesColumn(FColDsptr col) -{ - //"col size = 3." - auto c0 = col->at(0); - auto c1 = col->at(1); - auto c2 = col->at(2); - auto mc0 = -c0; - auto mc1 = -c1; - auto mc2 = -c2; - auto answer = std::make_shared(4, 4); - auto& row0 = answer->at(0); - auto& row1 = answer->at(1); - auto& row2 = answer->at(2); - auto& row3 = answer->at(3); - row0->atiput(0, 0.0); - row0->atiput(1, c2); - row0->atiput(2, mc1); - row0->atiput(3, c0); - row1->atiput(0, mc2); - row1->atiput(1, 0.0); - row1->atiput(2, c0); - row1->atiput(3, c1); - row2->atiput(0, c1); - row2->atiput(1, mc0); - row2->atiput(2, 0.0); - row2->atiput(3, c2); - row3->atiput(0, mc0); - row3->atiput(1, mc1); - row3->atiput(2, mc2); - row3->atiput(3, 0.0); - return answer; -} - -template<> -inline FMatFMatDsptr EulerParameters::ppApEpEtimesMatrix(FMatDsptr mat) -{ - FRowDsptr a2m0 = mat->at(0)->times(2.0); - FRowDsptr a2m1 = mat->at(1)->times(2.0); - FRowDsptr a2m2 = mat->at(2)->times(2.0); - FRowDsptr m2m0 = a2m0->negated(); - FRowDsptr m2m1 = a2m1->negated(); - FRowDsptr m2m2 = a2m2->negated(); - FRowDsptr zero = std::make_shared>(3, 0.0); - auto mat00 = std::make_shared(ListFRD{ a2m0, m2m1, m2m2 }); - auto mat01 = std::make_shared(ListFRD{ a2m1, a2m0, zero }); - auto mat02 = std::make_shared(ListFRD{ a2m2, zero, a2m0 }); - auto mat03 = std::make_shared(ListFRD{ zero, m2m2, a2m1 }); - auto mat11 = std::make_shared(ListFRD{ m2m0, a2m1, m2m2 }); - auto mat12 = std::make_shared(ListFRD{ zero, a2m2, a2m1 }); - auto mat13 = std::make_shared(ListFRD{ a2m2, zero, m2m0 }); - auto mat22 = std::make_shared(ListFRD{ m2m0, m2m1, a2m2 }); - auto mat23 = std::make_shared(ListFRD{ m2m1, a2m0, zero }); - auto mat33 = std::make_shared(ListFRD{ a2m0, a2m1, a2m2 }); - auto answer = std::make_shared(4, 4); - auto& row0 = answer->at(0); - row0->at(0) = mat00; - row0->at(1) = mat01; - row0->at(2) = mat02; - row0->at(3) = mat03; - auto& row1 = answer->at(1); - row1->at(0) = mat01; - row1->at(1) = mat11; - row1->at(2) = mat12; - row1->at(3) = mat13; - auto& row2 = answer->at(2); - row2->at(0) = mat02; - row2->at(1) = mat12; - row2->at(2) = mat22; - row2->at(3) = mat23; - auto& row3 = answer->at(3); - row3->at(0) = mat03; - row3->at(1) = mat13; - row3->at(2) = mat23; - row3->at(3) = mat33; - return answer; -} - -template // this is ALWAYS double; see note below. -inline void EulerParameters::initialize() -{ - aA = FullMatrixDouble::identitysptr(3); - aB = std::make_shared(3, 4); - aC = std::make_shared(3, 4); - pApE = std::make_shared>(4); - for (int i = 0; i < 4; i++) +namespace MbD { + template<> + inline FMatFColDsptr EulerParameters::ppApEpEtimesColumn(FColDsptr col) { - pApE->at(i) = std::make_shared(3, 3); + double a2c0 = 2 * col->at(0); + double a2c1 = 2 * col->at(1); + double a2c2 = 2 * col->at(2); + double m2c0 = 0 - a2c0; + double m2c1 = 0 - a2c1; + double m2c2 = 0 - a2c2; + auto col00 = std::make_shared>(ListD{ a2c0, m2c1, m2c2 }); + auto col01 = std::make_shared>(ListD{ a2c1, a2c0, 0 }); + auto col02 = std::make_shared>(ListD{ a2c2, 0, a2c0 }); + auto col03 = std::make_shared>(ListD{ 0, m2c2, a2c1 }); + auto col11 = std::make_shared>(ListD{ m2c0, a2c1, m2c2 }); + auto col12 = std::make_shared>(ListD{ 0, a2c2, a2c1 }); + auto col13 = std::make_shared>(ListD{ a2c2, 0, m2c0 }); + auto col22 = std::make_shared>(ListD{ m2c0, m2c1, a2c2 }); + auto col23 = std::make_shared>(ListD{ m2c1, a2c0, 0 }); + auto col33 = std::make_shared>(ListD{ a2c0, a2c1, a2c2 }); + auto answer = std::make_shared(4, 4); + auto& row0 = answer->at(0); + row0->at(0) = col00; + row0->at(1) = col01; + row0->at(2) = col02; + row0->at(3) = col03; + auto& row1 = answer->at(1); + row1->at(0) = col01; + row1->at(1) = col11; + row1->at(2) = col12; + row1->at(3) = col13; + auto& row2 = answer->at(2); + row2->at(0) = col02; + row2->at(1) = col12; + row2->at(2) = col22; + row2->at(3) = col23; + auto& row3 = answer->at(3); + row3->at(0) = col03; + row3->at(1) = col13; + row3->at(2) = col23; + row3->at(3) = col33; + return answer; + } + + template<> + inline FMatDsptr EulerParameters::pCpEtimesColumn(FColDsptr col) + { + //"col size = 4." + auto c0 = col->at(0); + auto c1 = col->at(1); + auto c2 = col->at(2); + auto mc0 = -c0; + auto mc1 = -c1; + auto mc2 = -c2; + auto mc3 = -col->at(3); + auto answer = std::make_shared(3, 4); + auto& row0 = answer->at(0); + auto& row1 = answer->at(1); + auto& row2 = answer->at(2); + row0->atiput(0, mc3); + row0->atiput(1, mc2); + row0->atiput(2, c1); + row0->atiput(3, c0); + row1->atiput(0, c2); + row1->atiput(1, mc3); + row1->atiput(2, mc0); + row1->atiput(3, c1); + row2->atiput(0, mc1); + row2->atiput(1, c0); + row2->atiput(2, mc3); + row2->atiput(3, c2); + return answer; + } + + template + inline FMatDsptr EulerParameters::pCTpEtimesColumn(FColDsptr col) + { + //"col size = 3." + auto c0 = col->at(0); + auto c1 = col->at(1); + auto c2 = col->at(2); + auto mc0 = -c0; + auto mc1 = -c1; + auto mc2 = -c2; + auto answer = std::make_shared(4, 4); + auto& row0 = answer->at(0); + auto& row1 = answer->at(1); + auto& row2 = answer->at(2); + auto& row3 = answer->at(3); + row0->atiput(0, 0.0); + row0->atiput(1, c2); + row0->atiput(2, mc1); + row0->atiput(3, c0); + row1->atiput(0, mc2); + row1->atiput(1, 0.0); + row1->atiput(2, c0); + row1->atiput(3, c1); + row2->atiput(0, c1); + row2->atiput(1, mc0); + row2->atiput(2, 0.0); + row2->atiput(3, c2); + row3->atiput(0, mc0); + row3->atiput(1, mc1); + row3->atiput(2, mc2); + row3->atiput(3, 0.0); + return answer; + } + + template<> + inline FMatFMatDsptr EulerParameters::ppApEpEtimesMatrix(FMatDsptr mat) + { + FRowDsptr a2m0 = mat->at(0)->times(2.0); + FRowDsptr a2m1 = mat->at(1)->times(2.0); + FRowDsptr a2m2 = mat->at(2)->times(2.0); + FRowDsptr m2m0 = a2m0->negated(); + FRowDsptr m2m1 = a2m1->negated(); + FRowDsptr m2m2 = a2m2->negated(); + FRowDsptr zero = std::make_shared>(3, 0.0); + auto mat00 = std::make_shared(ListFRD{ a2m0, m2m1, m2m2 }); + auto mat01 = std::make_shared(ListFRD{ a2m1, a2m0, zero }); + auto mat02 = std::make_shared(ListFRD{ a2m2, zero, a2m0 }); + auto mat03 = std::make_shared(ListFRD{ zero, m2m2, a2m1 }); + auto mat11 = std::make_shared(ListFRD{ m2m0, a2m1, m2m2 }); + auto mat12 = std::make_shared(ListFRD{ zero, a2m2, a2m1 }); + auto mat13 = std::make_shared(ListFRD{ a2m2, zero, m2m0 }); + auto mat22 = std::make_shared(ListFRD{ m2m0, m2m1, a2m2 }); + auto mat23 = std::make_shared(ListFRD{ m2m1, a2m0, zero }); + auto mat33 = std::make_shared(ListFRD{ a2m0, a2m1, a2m2 }); + auto answer = std::make_shared(4, 4); + auto& row0 = answer->at(0); + row0->at(0) = mat00; + row0->at(1) = mat01; + row0->at(2) = mat02; + row0->at(3) = mat03; + auto& row1 = answer->at(1); + row1->at(0) = mat01; + row1->at(1) = mat11; + row1->at(2) = mat12; + row1->at(3) = mat13; + auto& row2 = answer->at(2); + row2->at(0) = mat02; + row2->at(1) = mat12; + row2->at(2) = mat22; + row2->at(3) = mat23; + auto& row3 = answer->at(3); + row3->at(0) = mat03; + row3->at(1) = mat13; + row3->at(2) = mat23; + row3->at(3) = mat33; + return answer; + } + + template // this is ALWAYS double; see note below. + inline void EulerParameters::initialize() + { + aA = FullMatrixDouble::identitysptr(3); + aB = std::make_shared(3, 4); + aC = std::make_shared(3, 4); + pApE = std::make_shared>(4); + for (int i = 0; i < 4; i++) + { + pApE->at(i) = std::make_shared(3, 3); + } } -} // the following can't be valid as FullMatrix instatiatiates , yet // this class needs to see the member functions of FullMatrix @@ -183,129 +183,130 @@ inline void EulerParameters::initialize() //{ //} -template -inline void EulerParameters::calc() -{ - this->calcABC(); - this->calcpApE(); -} -template<> -inline void EulerParameters::calcABC() -{ - double aE0 = this->at(0); - double aE1 = this->at(1); - double aE2 = this->at(2); - double aE3 = this->at(3); - double mE0 = -aE0; - double mE1 = -aE1; - double mE2 = -aE2; - FRowDsptr aBi; - aBi = aB->at(0); - aBi->at(0) = aE3; - aBi->at(1) = mE2; - aBi->at(2) = aE1; - aBi->at(3) = mE0; - aBi = aB->at(1); - aBi->at(0) = aE2; - aBi->at(1) = aE3; - aBi->at(2) = mE0; - aBi->at(3) = mE1; - aBi = aB->at(2); - aBi->at(0) = mE1; - aBi->at(1) = aE0; - aBi->at(2) = aE3; - aBi->at(3) = mE2; - FRowDsptr aCi; - aCi = aC->at(0); - aCi->at(0) = aE3; - aCi->at(1) = aE2; - aCi->at(2) = mE1; - aCi->at(3) = mE0; - aCi = aC->at(1); - aCi->at(0) = mE2; - aCi->at(1) = aE3; - aCi->at(2) = aE0; - aCi->at(3) = mE1; - aCi = aC->at(2); - aCi->at(0) = aE1; - aCi->at(1) = mE0; - aCi->at(2) = aE3; - aCi->at(3) = mE2; + template + inline void EulerParameters::calc() + { + this->calcABC(); + this->calcpApE(); + } + template<> + inline void EulerParameters::calcABC() + { + double aE0 = this->at(0); + double aE1 = this->at(1); + double aE2 = this->at(2); + double aE3 = this->at(3); + double mE0 = -aE0; + double mE1 = -aE1; + double mE2 = -aE2; + FRowDsptr aBi; + aBi = aB->at(0); + aBi->at(0) = aE3; + aBi->at(1) = mE2; + aBi->at(2) = aE1; + aBi->at(3) = mE0; + aBi = aB->at(1); + aBi->at(0) = aE2; + aBi->at(1) = aE3; + aBi->at(2) = mE0; + aBi->at(3) = mE1; + aBi = aB->at(2); + aBi->at(0) = mE1; + aBi->at(1) = aE0; + aBi->at(2) = aE3; + aBi->at(3) = mE2; + FRowDsptr aCi; + aCi = aC->at(0); + aCi->at(0) = aE3; + aCi->at(1) = aE2; + aCi->at(2) = mE1; + aCi->at(3) = mE0; + aCi = aC->at(1); + aCi->at(0) = mE2; + aCi->at(1) = aE3; + aCi->at(2) = aE0; + aCi->at(3) = mE1; + aCi = aC->at(2); + aCi->at(0) = aE1; + aCi->at(1) = mE0; + aCi->at(2) = aE3; + aCi->at(3) = mE2; - aA = aB->timesTransposeFullMatrix(aC); -} -template<> -inline void EulerParameters::calcpApE() -{ - double a2E0 = 2.0 * (this->at(0)); - double a2E1 = 2.0 * (this->at(1)); - double a2E2 = 2.0 * (this->at(2)); - double a2E3 = 2.0 * (this->at(3)); - double m2E0 = -a2E0; - double m2E1 = -a2E1; - double m2E2 = -a2E2; - double m2E3 = -a2E3; - FMatDsptr pApEk; - pApEk = pApE->at(0); - FRowDsptr pAipEk; - pAipEk = pApEk->at(0); - pAipEk->at(0) = a2E0; - pAipEk->at(1) = a2E1; - pAipEk->at(2) = a2E2; - pAipEk = pApEk->at(1); - pAipEk->at(0) = a2E1; - pAipEk->at(1) = m2E0; - pAipEk->at(2) = m2E3; - pAipEk = pApEk->at(2); - pAipEk->at(0) = a2E2; - pAipEk->at(1) = a2E3; - pAipEk->at(2) = m2E0; - // - pApEk = pApE->at(1); - pAipEk = pApEk->at(0); - pAipEk->at(0) = m2E1; - pAipEk->at(1) = a2E0; - pAipEk->at(2) = a2E3; - pAipEk = pApEk->at(1); - pAipEk->at(0) = a2E0; - pAipEk->at(1) = a2E1; - pAipEk->at(2) = a2E2; - pAipEk = pApEk->at(2); - pAipEk->at(0) = m2E3; - pAipEk->at(1) = a2E2; - pAipEk->at(2) = m2E1; - // - pApEk = pApE->at(2); - pAipEk = pApEk->at(0); - pAipEk->at(0) = m2E2; - pAipEk->at(1) = m2E3; - pAipEk->at(2) = a2E0; - pAipEk = pApEk->at(1); - pAipEk->at(0) = a2E3; - pAipEk->at(1) = m2E2; - pAipEk->at(2) = a2E1; - pAipEk = pApEk->at(2); - pAipEk->at(0) = a2E0; - pAipEk->at(1) = a2E1; - pAipEk->at(2) = a2E2; - // - pApEk = pApE->at(3); - pAipEk = pApEk->at(0); - pAipEk->at(0) = a2E3; - pAipEk->at(1) = m2E2; - pAipEk->at(2) = a2E1; - pAipEk = pApEk->at(1); - pAipEk->at(0) = a2E2; - pAipEk->at(1) = a2E3; - pAipEk->at(2) = m2E0; - pAipEk = pApEk->at(2); - pAipEk->at(0) = m2E1; - pAipEk->at(1) = a2E0; - pAipEk->at(2) = a2E3; -} -template -inline void EulerParameters::conditionSelf() -{ - EulerArray::conditionSelf(); - this->normalizeSelf(); + aA = aB->timesTransposeFullMatrix(aC); + } + template<> + inline void EulerParameters::calcpApE() + { + double a2E0 = 2.0 * (this->at(0)); + double a2E1 = 2.0 * (this->at(1)); + double a2E2 = 2.0 * (this->at(2)); + double a2E3 = 2.0 * (this->at(3)); + double m2E0 = -a2E0; + double m2E1 = -a2E1; + double m2E2 = -a2E2; + double m2E3 = -a2E3; + FMatDsptr pApEk; + pApEk = pApE->at(0); + FRowDsptr pAipEk; + pAipEk = pApEk->at(0); + pAipEk->at(0) = a2E0; + pAipEk->at(1) = a2E1; + pAipEk->at(2) = a2E2; + pAipEk = pApEk->at(1); + pAipEk->at(0) = a2E1; + pAipEk->at(1) = m2E0; + pAipEk->at(2) = m2E3; + pAipEk = pApEk->at(2); + pAipEk->at(0) = a2E2; + pAipEk->at(1) = a2E3; + pAipEk->at(2) = m2E0; + // + pApEk = pApE->at(1); + pAipEk = pApEk->at(0); + pAipEk->at(0) = m2E1; + pAipEk->at(1) = a2E0; + pAipEk->at(2) = a2E3; + pAipEk = pApEk->at(1); + pAipEk->at(0) = a2E0; + pAipEk->at(1) = a2E1; + pAipEk->at(2) = a2E2; + pAipEk = pApEk->at(2); + pAipEk->at(0) = m2E3; + pAipEk->at(1) = a2E2; + pAipEk->at(2) = m2E1; + // + pApEk = pApE->at(2); + pAipEk = pApEk->at(0); + pAipEk->at(0) = m2E2; + pAipEk->at(1) = m2E3; + pAipEk->at(2) = a2E0; + pAipEk = pApEk->at(1); + pAipEk->at(0) = a2E3; + pAipEk->at(1) = m2E2; + pAipEk->at(2) = a2E1; + pAipEk = pApEk->at(2); + pAipEk->at(0) = a2E0; + pAipEk->at(1) = a2E1; + pAipEk->at(2) = a2E2; + // + pApEk = pApE->at(3); + pAipEk = pApEk->at(0); + pAipEk->at(0) = a2E3; + pAipEk->at(1) = m2E2; + pAipEk->at(2) = a2E1; + pAipEk = pApEk->at(1); + pAipEk->at(0) = a2E2; + pAipEk->at(1) = a2E3; + pAipEk->at(2) = m2E0; + pAipEk = pApEk->at(2); + pAipEk->at(0) = m2E1; + pAipEk->at(1) = a2E0; + pAipEk->at(2) = a2E3; + } + template + inline void EulerParameters::conditionSelf() + { + EulerArray::conditionSelf(); + this->normalizeSelf(); + } } diff --git a/OndselSolver/EulerParameters.h b/OndselSolver/EulerParameters.h index 40bda2a..1dc1c8b 100644 --- a/OndselSolver/EulerParameters.h +++ b/OndselSolver/EulerParameters.h @@ -59,5 +59,6 @@ namespace MbD { FMatDsptr aC; FColFMatDsptr pApE; }; + template class EulerParameters; } diff --git a/OndselSolver/FullColumn.cpp b/OndselSolver/FullColumn.cpp index 9dab0db..479a66f 100644 --- a/OndselSolver/FullColumn.cpp +++ b/OndselSolver/FullColumn.cpp @@ -161,7 +161,11 @@ namespace MbD { template FColsptr FullColumn::simplified() { - assert(false); +// assert(false); return FColsptr(); } + // instantiate on purpose to make visible in library api: + template class FullColumn; + template class FullColumn; + } \ No newline at end of file diff --git a/OndselSolver/FullColumn.h b/OndselSolver/FullColumn.h index 9bd13c4..a015278 100644 --- a/OndselSolver/FullColumn.h +++ b/OndselSolver/FullColumn.h @@ -55,15 +55,11 @@ namespace MbD { { s << "FullCol{"; s << this->at(0); - for (int i = 1; i < this->size(); i++) + for (int i = 1; i < int(this->size()); i++) { s << ", " << this->at(i); } s << "}"; return s; } - // instantiate on purpose to make visible in library api: - template class FullColumn; - template class FullColumn; } - diff --git a/OndselSolver/FullMatrix.h b/OndselSolver/FullMatrix.h index 2648732..468dc3e 100644 --- a/OndselSolver/FullMatrix.h +++ b/OndselSolver/FullMatrix.h @@ -75,7 +75,7 @@ namespace MbD { void zeroSelf() override; FColsptr column(int j); - void atiput(int i, FRowsptr fullRow); + void atiput(int i, FRowsptr fullRow) override; void atijput(int i, int j, double value); std::shared_ptr copy(); double maxMagnitude() override; diff --git a/OndselSolver/FullVector.h b/OndselSolver/FullVector.h index 228145b..60b2b3f 100644 --- a/OndselSolver/FullVector.h +++ b/OndselSolver/FullVector.h @@ -66,7 +66,7 @@ namespace MbD { inline double FullVector::sumOfSquares() { double sum = 0.0; - for (int i = 0; i < this->size(); i++) + for (int i = 0; i < (int)this->size(); i++) { double element = this->at(i); sum += element * element; @@ -87,7 +87,7 @@ namespace MbD { template<> inline void FullVector::zeroSelf() { - for (int i = 0; i < this->size(); i++) { + for (int i = 0; i < (int)this->size(); i++) { this->at(i) = 0.0; } } @@ -126,7 +126,7 @@ namespace MbD { inline double FullVector::maxMagnitude() { double max = 0.0; - for (int i = 0; i < this->size(); i++) + for (int i = 0; i < (int)this->size(); i++) { double element = this->at(i); if (element < 0.0) element = -element; @@ -168,7 +168,7 @@ namespace MbD { template<> inline void FullVector::conditionSelfWithTol(double tol) { - for (int i = 0; i < this->size(); i++) + for (int i = 0; i < (int)this->size(); i++) { double element = this->at(i); if (element < 0.0) element = -element; @@ -176,7 +176,7 @@ namespace MbD { } } template - inline void FullVector::conditionSelfWithTol(double tol) + inline void FullVector::conditionSelfWithTol(double __attribute__((unused))tol) { assert(false); return; @@ -186,7 +186,7 @@ namespace MbD { { s << "FullVec{"; s << this->at(0); - for (int i = 1; i < this->size(); i++) + for (int i = 1; i < (int)this->size(); i++) { s << ", " << this->at(i); }