summaryrefslogtreecommitdiff
path: root/boost/numeric/odeint/external/mtl4/mtl4_algebra_dispatcher.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'boost/numeric/odeint/external/mtl4/mtl4_algebra_dispatcher.hpp')
-rw-r--r--boost/numeric/odeint/external/mtl4/mtl4_algebra_dispatcher.hpp99
1 files changed, 99 insertions, 0 deletions
diff --git a/boost/numeric/odeint/external/mtl4/mtl4_algebra_dispatcher.hpp b/boost/numeric/odeint/external/mtl4/mtl4_algebra_dispatcher.hpp
new file mode 100644
index 0000000000..8f6bfbe32e
--- /dev/null
+++ b/boost/numeric/odeint/external/mtl4/mtl4_algebra_dispatcher.hpp
@@ -0,0 +1,99 @@
+/*
+ [auto_generated]
+ boost/numeric/odeint/external/mtl4/mtl4_algebra_dispatcher.hpp
+
+ [begin_description]
+ specialization of the algebra dispatcher for mtl4
+ [end_description]
+
+ Copyright 2013 Karsten Ahnert
+ Copyright 2013 Mario Mulansky
+
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or
+ copy at http://www.boost.org/LICENSE_1_0.txt)
+ */
+
+#ifndef BOOST_NUMERIC_ODEINT_MTL4_MTL4_ALGEBRA_DISPATCHER_HPP_INCLUDED
+#define BOOST_NUMERIC_ODEINT_MTL4_MTL4_ALGEBRA_DISPATCHER_HPP_INCLUDED
+
+#include <boost/numeric/mtl/mtl.hpp>
+
+#include <boost/numeric/odeint/algebra/vector_space_algebra.hpp>
+#include <boost/numeric/odeint/algebra/algebra_dispatcher.hpp>
+
+namespace boost {
+namespace numeric {
+namespace odeint {
+
+template<typename Value, typename Parameters>
+struct algebra_dispatcher< mtl::dense_vector< Value , Parameters > >
+{
+ typedef vector_space_algebra algebra_type;
+};
+
+template<typename Value, typename Parameters>
+struct algebra_dispatcher< mtl::dense2D< Value , Parameters > >
+{
+ typedef vector_space_algebra algebra_type;
+};
+
+template<typename Value , size_t BitMask , typename Parameters>
+struct algebra_dispatcher< mtl::morton_dense< Value , BitMask, Parameters > >
+{
+ typedef vector_space_algebra algebra_type;
+};
+
+template<typename Value, typename Parameters>
+struct algebra_dispatcher< mtl::compressed2D< Value , Parameters > >
+{
+ typedef vector_space_algebra algebra_type;
+};
+
+// specialization of infinity norm calculation
+
+template<typename Value, typename Parameters>
+struct vector_space_norm_inf< mtl::dense_vector< Value , Parameters > >
+{
+ typedef Value result_type;
+ Value operator()( const mtl::dense_vector< Value , Parameters > &x ) const
+ {
+ return mtl::infinity_norm(x);
+ }
+};
+
+template<typename Value, typename Parameters>
+struct vector_space_norm_inf< mtl::dense2D< Value , Parameters > >
+{
+ typedef Value result_type;
+ Value operator()( const mtl::dense2D< Value , Parameters > &x ) const
+ {
+ return mtl::infinity_norm(x);
+ }
+};
+
+template<typename Value , size_t BitMask , typename Parameters>
+struct vector_space_norm_inf< mtl::morton_dense< Value , BitMask , Parameters > >
+{
+ typedef Value result_type;
+ Value operator()( const mtl::morton_dense< Value , BitMask , Parameters > &x ) const
+ {
+ return mtl::infinity_norm(x);
+ }
+};
+
+template<typename Value, typename Parameters>
+struct vector_space_norm_inf< mtl::compressed2D< Value , Parameters > >
+{
+ typedef Value result_type;
+ Value operator()( const mtl::compressed2D< Value , Parameters > &x ) const
+ {
+ return mtl::infinity_norm(x);
+ }
+};
+
+}
+}
+}
+
+#endif // BOOST_NUMERIC_ODEINT_MTL4_MTL4_ALGEBRA_DISPATCHER_INCLUDED