Fix bug in Thrustcurve::setThrustCurveVector that didn't recalculate maxTime after setting a new thrust curve

This commit is contained in:
Travis Hunter 2023-04-15 16:41:42 -06:00
parent 2b7606c417
commit e942cfb819
2 changed files with 11 additions and 2 deletions

View File

@ -13,9 +13,12 @@ void Rocket::launch()
std::vector<std::pair<double, double>> temp;
temp.push_back(std::make_pair(0.0, 0.0));
temp.push_back(std::make_pair(0.1, 10.0));
temp.push_back(std::make_pair(0.2, 50.0));
temp.push_back(std::make_pair(0.2, 100.0));
temp.push_back(std::make_pair(1.2, 50.0));
temp.push_back(std::make_pair(1.3, 0.0));
temp.push_back(std::make_pair(8.0, 0.0));
temp.push_back(std::make_pair(9.0, 100.0));
temp.push_back(std::make_pair(10.0, 0.0));
tc.setThrustCurveVector(temp);
propagator.runUntilTerminate();
}

View File

@ -29,12 +29,18 @@ void Thrustcurve::setThrustCurveVector(const std::vector<std::pair<double, doubl
thrustCurve.clear();
thrustCurve.resize(v.size());
std::copy(v.begin(), v.end(), thrustCurve.begin());
maxTime = std::max_element(thrustCurve.begin(),
thrustCurve.end(),
[](const auto& a, const auto& b)
{
return a.first < b.first;
})->first;
}
void Thrustcurve::setIgnitionTime(double t)
{
ignitionTime = t;
maxTime += ignitionTime;
//maxTime += ignitionTime;
}
double Thrustcurve::getThrust(double t)