1 | /* |
---|---|
2 | [auto_generated] |
3 | boost/numeric/odeint/stepper/stepper_categories.hpp |
4 | |
5 | [begin_description] |
6 | Definition of all stepper categories. |
7 | [end_description] |
8 | |
9 | Copyright 2010-2011 Mario Mulansky |
10 | Copyright 2010-2012 Karsten Ahnert |
11 | |
12 | Distributed under the Boost Software License, Version 1.0. |
13 | (See accompanying file LICENSE_1_0.txt or |
14 | copy at http://www.boost.org/LICENSE_1_0.txt) |
15 | */ |
16 | |
17 | |
18 | #ifndef BOOST_NUMERIC_ODEINT_STEPPER_STEPPER_CATEGORIES_HPP_INCLUDED |
19 | #define BOOST_NUMERIC_ODEINT_STEPPER_STEPPER_CATEGORIES_HPP_INCLUDED |
20 | |
21 | #include <boost/type_traits/integral_constant.hpp> |
22 | |
23 | namespace boost { |
24 | namespace numeric { |
25 | namespace odeint { |
26 | |
27 | |
28 | /* |
29 | * Tags to specify stepper types |
30 | * |
31 | * These tags are used by integrate() to choose which integration method is used |
32 | */ |
33 | |
34 | struct stepper_tag {}; |
35 | // struct explicit_stepper_tag : stepper_tag {}; |
36 | // struct implicit_stepper_tag : stepper_tag {}; |
37 | |
38 | |
39 | struct error_stepper_tag : stepper_tag {}; |
40 | struct explicit_error_stepper_tag : error_stepper_tag {}; |
41 | struct explicit_error_stepper_fsal_tag : error_stepper_tag {}; |
42 | |
43 | struct controlled_stepper_tag {}; |
44 | struct explicit_controlled_stepper_tag : controlled_stepper_tag {}; |
45 | struct explicit_controlled_stepper_fsal_tag : controlled_stepper_tag {}; |
46 | |
47 | struct dense_output_stepper_tag {}; |
48 | |
49 | |
50 | template< class tag > struct base_tag ; |
51 | template< > struct base_tag< stepper_tag > { typedef stepper_tag type; }; |
52 | template< > struct base_tag< error_stepper_tag > { typedef stepper_tag type; }; |
53 | template< > struct base_tag< explicit_error_stepper_tag > { typedef stepper_tag type; }; |
54 | template< > struct base_tag< explicit_error_stepper_fsal_tag > { typedef stepper_tag type; }; |
55 | |
56 | template< > struct base_tag< controlled_stepper_tag > { typedef controlled_stepper_tag type; }; |
57 | template< > struct base_tag< explicit_controlled_stepper_tag > { typedef controlled_stepper_tag type; }; |
58 | template< > struct base_tag< explicit_controlled_stepper_fsal_tag > { typedef controlled_stepper_tag type; }; |
59 | |
60 | template< > struct base_tag< dense_output_stepper_tag > { typedef dense_output_stepper_tag type; }; |
61 | |
62 | |
63 | } // odeint |
64 | } // numeric |
65 | } // boost |
66 | |
67 | |
68 | #endif // BOOST_NUMERIC_ODEINT_STEPPER_STEPPER_CATEGORIES_HPP_INCLUDED |
69 |