- odeint-v2.zip
- odeint-v2
- boost
- numeric
- doc
- index.html
- Jamroot
- libs
- numeric
- odeint
- code_analyzer
- doc
- concepts.qbk
- concepts
- controlled_stepper.qbk
- dense_output_stepper.qbk
- error_stepper.qbk
- implicit_system.qbk
- observer.qbk
- state_algebra_operations.qbk
- state_wrapper.qbk
- stepper.qbk
- symplectic_system.qbk
- system.qbk
- concepts_old.qbk
- details.qbk
- examples_table.qbk
- extend.qbk
- getting_started.qbk
- html
- boostbook.css
- phase_lattice_2d_0000.jpg
- phase_lattice_2d_0100.jpg
- phase_lattice_2d_1000.jpg
- solar_system.jpg
- Jamfile
- make_controlled_table.qbk
- make_dense_output_table.qbk
- odeint.qbk
- reference.xml
- reference_integrate_functions.qbk
- reference_old.qbk
- reference_steppers.qbk
- stepper_table.qbk
- tutorial.qbk
- tutorial_chaotic_system.qbk
- tutorial_harmonic_oscillator.qbk
- tutorial_solar_system.qbk
- tutorial_special_topics.qbk
- tutorial_stiff_systems.qbk
- tutorial_thrust_cuda.qbk
- examples
- ideas
- performance
- regression_test
- test
- test_external
- README
- tex
- TODO
|
/*
* dense_output_explicit.cpp
*
* Created on: Jan 28, 2011
* Author: karsten
*/
#include <iostream>
#include <fstream>
#include <vector>
#include <boost/numeric/odeint/stepper/euler.hpp>
#include <boost/numeric/odeint/stepper/dense_output_runge_kutta.hpp>
using namespace std;
using namespace boost::numeric::odeint;
typedef std::vector< double > state_type;
typedef euler< state_type > explicit_stepper_type;
typedef dense_output_runge_kutta< explicit_stepper_type > stepper_type;
struct lorenz
{
template< class State , class Deriv >
void operator()( const State &x , Deriv &dxdt , double t )
{
const double sigma = 10.0;
const double R = 28.0;
const double b = 8.0 / 3.0;
dxdt[0] = sigma * ( x[1] - x[0] );
dxdt[1] = R * x[0] - x[1] - x[0] * x[2];
dxdt[2] = x[0]*x[1] - b * x[2];
}
};
int main( int argc , char **argv )
{
stepper_type stepper;
state_type x_start( 3 );
x_start[0] = 10.0 , x_start[1] = 10.0 ; x_start[2] = 20.0;
const double dt1 = 0.025 , dt2 = 0.01;
stepper.initialize( x_start , 0.0 , dt1 );
ofstream fout( "test.dat" );
ofstream fout2( "test2.dat" );
state_type x( 3 );
double t = 0.0;
while( stepper.current_time() < 10.0 )
{
while( t < stepper.current_time() )
{
stepper.calc_state( t , x );
fout << t << " " << x[0] << " " << x[1] << " " << x[2] << endl;
t += dt2;
}
stepper.do_step( lorenz() );
const state_type ¤t = stepper.current_state();
fout2 << stepper.current_time() << " " << current[0] << " " << current[1] << " " << current[2] << " " << endl;
}
return 0;
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.