#include <ConstantStepOdeSolver.h>
|
const char * | methodName () const override |
|
| RK2 () |
|
| RK2 (const AbsODERHS &rhs) |
|
| ConstantStepOdeSolver () |
|
| ConstantStepOdeSolver (const AbsODERHS &rhs) |
|
| ConstantStepOdeSolver (const ConstantStepOdeSolver &r) |
|
double | getCoordinate (const unsigned which, const unsigned idx) const |
|
double | getIntegrated (unsigned which, unsigned idx) const |
|
double | getPeakTime (unsigned which) const |
|
const AbsODERHS * | getRHS () const |
|
AbsODERHS * | getRHS () |
|
double | getTime (const unsigned idx) const |
|
double | interpolateCoordinate (unsigned which, double t, bool cubic=false) const |
|
double | interpolateIntegrated (unsigned which, double t, bool cubic=false) const |
|
double | lastDeltaT () const |
|
unsigned | lastDim () const |
|
double | lastMaxT () const |
|
unsigned | lastRunLength () const |
|
ConstantStepOdeSolver & | operator= (const ConstantStepOdeSolver &r) |
|
void | run (const double *initialConditions, unsigned lenConditions, double dt, unsigned nSteps) |
|
void | setHistory (double dt, const double *data, unsigned dim, unsigned runLen) |
|
void | setRHS (const AbsODERHS &rhs) |
|
void | truncateCoordinate (unsigned which, double minValue, double maxValue) |
|
void | writeHistory (std::ostream &os, double dt, bool cubic=false) const |
|
void | writeIntegrated (std::ostream &os, unsigned which, double dt, bool cubic=false) const |
|
virtual | ~ConstantStepOdeSolver () |
|
|
void | step (double t, double dt, const double *x, unsigned lenX, double *coordIncrement) const override |
|
|
std::vector< double > | buf_ |
|
Definition at line 127 of file ConstantStepOdeSolver.h.
◆ RK2() [1/2]
◆ RK2() [2/2]
◆ methodName()
const char* RK2::methodName |
( |
| ) |
const |
|
inlineoverridevirtual |
◆ step()
void RK2::step |
( |
double |
t, |
|
|
double |
dt, |
|
|
const double * |
x, |
|
|
unsigned |
lenX, |
|
|
double * |
coordIncrement |
|
) |
| const |
|
overrideprivatevirtual |
Implements ConstantStepOdeSolver.
Definition at line 299 of file ConstantStepOdeSolver.cc.
References buf_, AbsODERHS::calc(), dt, mps_fire::i, ConstantStepOdeSolver::rhs_, submitPVValidationJobs::t, and x.
300 const double halfstep =
dt / 2.0;
301 if (
buf_.size() < lenX)
303 double* midpoint = &
buf_[0];
305 for (
unsigned i = 0;
i < lenX; ++
i) {
306 midpoint[
i] *= halfstep;
309 rhs_->
calc(
t + halfstep, midpoint, lenX, coordIncrement);
310 for (
unsigned i = 0;
i < lenX; ++
i)
311 coordIncrement[
i] *=
dt;
virtual void calc(double t, const double *x, unsigned lenX, double *derivative)=0
std::vector< double > buf_
◆ buf_
std::vector<double> RK2::buf_ |
|
mutableprivate |