CLHEP VERSION Reference Documentation
   
CLHEP Home Page     CLHEP Documentation     CLHEP Bug Reports

EmbeddedRKStepper.cc
Go to the documentation of this file.
3 #include <stdexcept>
4 namespace Genfun {
5 
6 
8  tableau(mtableau){
9  }
10 
12  }
13 
15  const RKIntegrator::RKData::Data & s,
17  std::vector<double> & errors) const {
18 
19  // First step:
20  double h = d.time - s.time;
21  if (h<=0) throw std::runtime_error ("Runtime error in RKIntegrator (zero or negative stepsize)");
22  unsigned int nvar = s.variable.size();
23 
24  // Compute all of the k's..:
25  //
26  std::vector<std::vector<double> >k(tableau.nSteps());
27  for (unsigned int i=0;i<tableau.nSteps();i++) {
28  k[i].resize(nvar,0);
29  Argument arg(nvar);
30  for (unsigned int v=0;v<nvar;v++) arg[v]=s.variable[v];
31  for (unsigned int j=0;j<i;j++) {
32  for (unsigned int v=0;v<nvar;v++) arg[v] += h*tableau.A(i,j)*k[j][v];
33  }
34  for (unsigned int v=0;v<nvar;v++) k[i][v]=(*data->_diffEqn[v])(arg);
35  }
36  //
37  // Final result.
38  //
39  for (unsigned int v=0;v<nvar;v++) d.firstDerivative[v] = 0;
40  for (unsigned int i=0;i<tableau.nSteps();i++) {
41  for (unsigned int v=0;v<nvar;v++) d.firstDerivative[v] += tableau.b(i)*k[i][v];
42  }
43  for (unsigned int v=0;v<nvar;v++) d.variable[v] =s.variable[v]+h*d.firstDerivative[v];
44  //
45  //
46  //
47  errors.resize(nvar);
48  for (unsigned int v=0;v<nvar;v++) errors[v] = 0;
49  for (unsigned int i=0;i<tableau.nSteps();i++) {
50  for (unsigned int v=0;v<nvar;v++) errors[v] += (h*(tableau.bHat(i)-tableau.b(i))*k[i][v]);
51  }
52  return;
53  }
54 
56  return new EmbeddedRKStepper(*this);
57  }
58 
59  unsigned int EmbeddedRKStepper::order() const {
60  return tableau.order();
61  }
62 }
Genfun::ExtendedButcherTableau::bHat
double & bHat(unsigned int i)
ExtendedButcherTableau.hh
Genfun::RKIntegrator::RKData::Data::time
double time
Definition: CLHEP/GenericFunctions/RKIntegrator.hh:112
Genfun::ExtendedButcherTableau
Definition: CLHEP/GenericFunctions/ExtendedButcherTableau.hh:24
Genfun::ExtendedButcherTableau::b
double & b(unsigned int i)
Genfun::ExtendedButcherTableau::A
double & A(unsigned int i, unsigned int j)
Genfun::ExtendedButcherTableau::order
unsigned int order() const
Genfun::ExtendedButcherTableau::nSteps
unsigned int nSteps() const
Genfun::EmbeddedRKStepper::EmbeddedRKStepper
EmbeddedRKStepper(const ExtendedButcherTableau &tableau=CashKarpXtTableau())
Definition: EmbeddedRKStepper.cc:7
Genfun::RKIntegrator::RKData::Data
Definition: CLHEP/GenericFunctions/RKIntegrator.hh:108
Genfun::RKIntegrator::RKData::Data::variable
std::vector< double > variable
Definition: CLHEP/GenericFunctions/RKIntegrator.hh:110
v
they are gone ZOOM Features Discontinued The following features of the ZOOM package were felt to be extreme overkill These have been after checking that no existing user code was utilizing as in SpaceVector v
Definition: keyMergeIssues.doc:324
Genfun::RKIntegrator::RKData
Definition: CLHEP/GenericFunctions/RKIntegrator.hh:102
EmbeddedRKStepper.hh
Genfun::Argument
Definition: CLHEP/GenericFunctions/Argument.hh:17
Genfun::EmbeddedRKStepper::clone
virtual EmbeddedRKStepper * clone() const
Definition: EmbeddedRKStepper.cc:55
j
long j
Definition: JamesRandomSeeding.txt:28
Genfun::RKIntegrator::RKData::_diffEqn
std::vector< const AbsFunction * > _diffEqn
Definition: CLHEP/GenericFunctions/RKIntegrator.hh:129
Genfun::EmbeddedRKStepper::order
virtual unsigned int order() const
Definition: EmbeddedRKStepper.cc:59
Genfun::RKIntegrator::RKData::Data::firstDerivative
std::vector< double > firstDerivative
Definition: CLHEP/GenericFunctions/RKIntegrator.hh:111
s
Methods applicble to containers of as in std::list< LorentzVector > s
Definition: keyMergeIssues.doc:328
i
long i
Definition: JamesRandomSeeding.txt:27
for
for(n=1 ;n< 98 ;n++)
Definition: JamesRandomSeeding.txt:34
Genfun::EmbeddedRKStepper::~EmbeddedRKStepper
virtual ~EmbeddedRKStepper()
Definition: EmbeddedRKStepper.cc:11
Genfun::EmbeddedRKStepper::step
virtual void step(const RKIntegrator::RKData *data, const RKIntegrator::RKData::Data &sdata, RKIntegrator::RKData::Data &ddata, std::vector< double > &errors) const
Definition: EmbeddedRKStepper.cc:14
k
long k
Definition: JamesRandomSeeding.txt:29
Genfun::EmbeddedRKStepper
Definition: CLHEP/GenericFunctions/EmbeddedRKStepper.hh:11
Genfun
Definition: CLHEP/GenericFunctions/Abs.hh:14