runPosIC, VelIC, AccIC numerically correct

This commit is contained in:
Aik-Siong Koh
2023-06-24 23:08:29 -06:00
parent 371b13a9e0
commit c30ee64b89
110 changed files with 2171 additions and 129 deletions

View File

@@ -13,12 +13,14 @@ namespace MbD {
FullVector(std::vector<T>::iterator begin, std::vector<T>::iterator end) : Array<T>(begin, end) {}
FullVector(std::initializer_list<T> list) : Array<T>{ list } {}
double dot(std::shared_ptr<FullVector<T>> vec);
void atiput(int i, T value);
void atiplusNumber(int i, T value);
void atiminusNumber(int i, T value);
double sumOfSquares() override;
int numberOfElements() override;
void zeroSelf() override;
void atitimes(int i, double factor);
void atiplusFullVector(int i, std::shared_ptr<FullVector> fullVec);
void atiplusFullVectortimes(int i, std::shared_ptr<FullVector> fullVec, double factor);
double maxMagnitude();
@@ -34,6 +36,11 @@ namespace MbD {
return answer;
}
template<typename T>
inline void FullVector<T>::atiput(int i, T value)
{
this->at(i) = value;
}
template<typename T>
inline void FullVector<T>::atiplusNumber(int i, T value)
{
this->at(i) += value;
@@ -83,6 +90,15 @@ namespace MbD {
this->at(i) *= factor;
}
template<typename T>
inline void FullVector<T>::atiplusFullVector(int i1, std::shared_ptr<FullVector> fullVec)
{
for (int ii = 0; ii < fullVec->size(); ii++)
{
auto i = i1 + ii;
this->at(i) += fullVec->at(ii);
}
}
template<typename T>
inline void FullVector<T>::atiplusFullVectortimes(int i1, std::shared_ptr<FullVector> fullVec, double factor)
{
for (int ii = 0; ii < fullVec->size(); ii++)