• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdeedu API Reference
  • KDE Home
  • Contact Us
 

step/stepcore

  • sources
  • kde-4.12
  • kdeedu
  • step
  • stepcore
eulersolver.h
Go to the documentation of this file.
1 /* This file is part of StepCore library.
2  Copyright (C) 2007 Vladimir Kuznetsov <ks.vladimir@gmail.com>
3 
4  StepCore library is free software; you can redistribute it and/or modify
5  it under the terms of the GNU General Public License as published by
6  the Free Software Foundation; either version 2 of the License, or
7  (at your option) any later version.
8 
9  StepCore library is distributed in the hope that it will be useful,
10  but WITHOUT ANY WARRANTY; without even the implied warranty of
11  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  GNU General Public License for more details.
13 
14  You should have received a copy of the GNU General Public License
15  along with StepCore; if not, write to the Free Software
16  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
17 */
18 
23 #ifndef STEPCORE_EULERSOLVER_H
24 #define STEPCORE_EULERSOLVER_H
25 
26 #include "solver.h"
27 #include "object.h"
28 
29 namespace StepCore {
30 
39 class GenericEulerSolver: public Solver
40 {
41  STEPCORE_OBJECT(GenericEulerSolver)
42 
43 public:
45  GenericEulerSolver(double stepSize, bool adaptive)
46  : Solver(stepSize), _adaptive(adaptive) { init(); }
48  GenericEulerSolver(int dimension, Function function,
49  void* params, double stepSize, bool adaptive)
50  : Solver(dimension, function, params, stepSize),
51  _adaptive(adaptive) { init(); }
53  GenericEulerSolver(const GenericEulerSolver& eulerSolver)
54  : Solver(eulerSolver), _adaptive(eulerSolver._adaptive) { init(); }
55 
56  ~GenericEulerSolver() { fini(); }
57 
58  void setDimension(int dimension) { fini(); _dimension = dimension; init(); }
59 
60  int doCalcFn(double* t, const VectorXd* y, const VectorXd* yvar = 0,
61  VectorXd* f = 0, VectorXd* fvar = 0);
62  int doEvolve(double* t, double t1, VectorXd* y, VectorXd* yvar);
63 
64 protected:
65  int doStep(double t, double stepSize, VectorXd* y, VectorXd* yvar);
66  void init();
67  void fini();
68 
69  bool _adaptive;
70  VectorXd _yerr;
71  VectorXd _ytemp;
72  VectorXd _ydiff;
73  VectorXd _ytempvar;
74  VectorXd _ydiffvar;
75 };
76 
80 class EulerSolver: public GenericEulerSolver
81 {
82  STEPCORE_OBJECT(EulerSolver)
83 public:
84  EulerSolver(double stepSize = 0.01): GenericEulerSolver(stepSize, false) {}
85  EulerSolver(int dimension, Function function, void* params, double stepSize)
86  : GenericEulerSolver(dimension, function, params, stepSize, false) {}
87  EulerSolver(const EulerSolver& eulerSolver): GenericEulerSolver(eulerSolver) {}
88 };
89 
93 class AdaptiveEulerSolver: public GenericEulerSolver
94 {
95  STEPCORE_OBJECT(AdaptiveEulerSolver)
96 public:
97  AdaptiveEulerSolver(): GenericEulerSolver(1, true) {}
98  AdaptiveEulerSolver(int dimension, Function function, void* params)
99  : GenericEulerSolver(dimension, function, params, 1, true) {}
100  AdaptiveEulerSolver(const AdaptiveEulerSolver& eulerSolver)
101  : GenericEulerSolver(eulerSolver) {}
102 };
103 
104 } // namespace StepCore
105 
106 #endif
107 
StepCore::Solver::function
Function function() const
Get callback function.
Definition: solver.h:97
StepCore::GenericEulerSolver::doStep
int doStep(double t, double stepSize, VectorXd *y, VectorXd *yvar)
Definition: eulersolver.cc:55
StepCore::GenericEulerSolver::_yerr
VectorXd _yerr
Definition: eulersolver.h:70
StepCore::EulerSolver::EulerSolver
EulerSolver(double stepSize=0.01)
Definition: eulersolver.h:84
StepCore::AdaptiveEulerSolver::AdaptiveEulerSolver
AdaptiveEulerSolver()
Definition: eulersolver.h:97
StepCore::Solver::params
void * params() const
Get callback function params.
Definition: solver.h:102
StepCore::GenericEulerSolver::_ytemp
VectorXd _ytemp
Definition: eulersolver.h:71
StepCore::GenericEulerSolver::_adaptive
bool _adaptive
Definition: eulersolver.h:69
StepCore::Solver
Generic Solver interface.
Definition: solver.h:70
StepCore::GenericEulerSolver::fini
void fini()
Definition: eulersolver.cc:41
StepCore::EulerSolver::EulerSolver
EulerSolver(int dimension, Function function, void *params, double stepSize)
Definition: eulersolver.h:85
StepCore::GenericEulerSolver::GenericEulerSolver
GenericEulerSolver(const GenericEulerSolver &eulerSolver)
Copy constructor.
Definition: eulersolver.h:53
StepCore::Solver::Function
int(* Function)(double t, const double *y, const double *yvar, double *f, double *fvar, void *params)
Callback function type.
Definition: solver.h:77
StepCore::AdaptiveEulerSolver::AdaptiveEulerSolver
AdaptiveEulerSolver(const AdaptiveEulerSolver &eulerSolver)
Definition: eulersolver.h:100
StepCore::EulerSolver
Non-adaptive Euler solver.
Definition: eulersolver.h:80
StepCore::AdaptiveEulerSolver::AdaptiveEulerSolver
AdaptiveEulerSolver(int dimension, Function function, void *params)
Definition: eulersolver.h:98
StepCore::GenericEulerSolver
Adaptive and non-adaptive Euler solver with error estimation.
Definition: eulersolver.h:39
StepCore::GenericEulerSolver::~GenericEulerSolver
~GenericEulerSolver()
Definition: eulersolver.h:56
StepCore::GenericEulerSolver::doEvolve
int doEvolve(double *t, double t1, VectorXd *y, VectorXd *yvar)
Integrate.
Definition: eulersolver.cc:115
StepCore::GenericEulerSolver::_ydiffvar
VectorXd _ydiffvar
Definition: eulersolver.h:74
solver.h
Solver interface.
StepCore::GenericEulerSolver::init
void init()
StepCore::Solver::_dimension
int _dimension
Definition: solver.h:153
StepCore::Solver::dimension
int dimension() const
Get ODE dimension.
Definition: solver.h:92
object.h
Object, MetaObject and MetaProperty classes.
StepCore::EulerSolver::EulerSolver
EulerSolver(const EulerSolver &eulerSolver)
Definition: eulersolver.h:87
StepCore::GenericEulerSolver::GenericEulerSolver
GenericEulerSolver(double stepSize, bool adaptive)
Constructs GenericEulerSolver.
Definition: eulersolver.h:45
StepCore::GenericEulerSolver::setDimension
void setDimension(int dimension)
Set ODE dimension.
Definition: eulersolver.h:58
StepCore::GenericEulerSolver::GenericEulerSolver
GenericEulerSolver(int dimension, Function function, void *params, double stepSize, bool adaptive)
Constructs GenericEulerSolver.
Definition: eulersolver.h:48
StepCore::GenericEulerSolver::doCalcFn
int doCalcFn(double *t, const VectorXd *y, const VectorXd *yvar=0, VectorXd *f=0, VectorXd *fvar=0)
Calculate function value.
Definition: eulersolver.cc:45
StepCore::Solver::stepSize
double stepSize() const
Get step size.
Definition: solver.h:107
StepCore::GenericEulerSolver::_ydiff
VectorXd _ydiff
Definition: eulersolver.h:72
StepCore::AdaptiveEulerSolver
Adaptive Euler solver.
Definition: eulersolver.h:93
STEPCORE_OBJECT
#define STEPCORE_OBJECT(_className)
Definition: object.h:49
StepCore::GenericEulerSolver::_ytempvar
VectorXd _ytempvar
Definition: eulersolver.h:73
StepCore::VectorXd
Eigen::VectorXd VectorXd
Definition: vector.h:38
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 22:43:06 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

step/stepcore

Skip menu "step/stepcore"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Modules
  • Related Pages

kdeedu API Reference

Skip menu "kdeedu API Reference"
  • Analitza
  •     lib
  • kalgebra
  • kalzium
  •   libscience
  • kanagram
  • kig
  •   lib
  • klettres
  • kstars
  • libkdeedu
  •   keduvocdocument
  • marble
  • parley
  • rocs
  •   App
  •   RocsCore
  •   VisualEditor
  •   stepcore

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal