5#ifndef OPENFPM_NUMERICS_ODEINTEGRATORS_HPP 
    6#define OPENFPM_NUMERICS_ODEINTEGRATORS_HPP 
   14template<
typename T, 
typename Sfinae = 
void>
 
   22    template<class T,class Enabler=typename std::enable_if<has_state_vector<T>::value>::type>
 
   24    size(
const T& rng) -> 
decltype(rng.size())
 
   30#include <boost/numeric/odeint.hpp> 
   31#include "Operators/Vector/vector_dist_operators.hpp" 
   32#include "FiniteDifference/FD_expressions.hpp" 
   33#include "OdeIntegrators/vector_algebra_ofp.hpp" 
   36#include "OdeIntegrators/vector_algebra_ofp_gpu.hpp" 
   44struct state_type_1d_ofp_ker{
 
   45    state_type_1d_ofp_ker(){
 
   47    typedef decltype(std::declval<texp_v_gpu<double>>().getVector().toKernel()) state_kernel;
 
   48    typedef size_t size_type;
 
   49    typedef int is_state_vector;
 
   52    __host__ __device__ 
size_t size()
 const 
   53    { 
return data.
get<0>().size(); }
 
   63struct state_type_1d_ofp_gpu{
 
   64    state_type_1d_ofp_gpu(){
 
   66    typedef size_t size_type;
 
   67    typedef int is_state_vector;
 
   71    { 
return data.
get<0>().size(); }
 
   75        data.
get<0>().resize(n);
 
   77    state_type_1d_ofp_ker toKernel()
 const 
   79        state_type_1d_ofp_ker s1_ker;
 
   80        s1_ker.data.get<0>()=data.
get<0>().getVector().toKernel();
 
   86namespace boost { 
namespace numeric { 
namespace odeint {
 
   91                typedef boost::true_type type;
 
   92                static const bool value = type::value;
 
  107    typedef size_t size_type;
 
  108    typedef size_t index_type;
 
  109    typedef int is_state_vector;
 
  113    { 
return data.
get<0>().size(); }
 
  115    void resize(
size_t n)
 
  117        data.
get<0>().resize(n);
 
  131    typedef size_t size_type;
 
  132    typedef size_t index_type;
 
  133    typedef int is_state_vector;
 
  137    { 
return data.
get<0>().size(); }
 
  139    void resize(
size_t n)
 
  141        data.
get<0>().resize(n);
 
  142        data.
get<1>().resize(n);
 
  156    typedef size_t size_type;
 
  157    typedef size_t index_type;
 
  158    typedef int is_state_vector;
 
  162    { 
return data.
get<0>().size(); }
 
  164    void resize(
size_t n)
 
  166        data.
get<0>().resize(n);
 
  167        data.
get<1>().resize(n);
 
  168        data.
get<2>().resize(n);
 
  182    typedef size_t size_type;
 
  183    typedef size_t index_type;
 
  184    typedef int is_state_vector;
 
  188    { 
return data.
get<0>().size(); }
 
  190    void resize(
size_t n)
 
  192        data.
get<0>().resize(n);
 
  193        data.
get<1>().resize(n);
 
  194        data.
get<2>().resize(n);
 
  195        data.
get<3>().resize(n);
 
  209    typedef size_t size_type;
 
  210    typedef size_t index_type;
 
  211    typedef int is_state_vector;
 
  215    { 
return data.
get<0>().size(); }
 
  217    void resize(
size_t n)
 
  219        data.
get<0>().resize(n);
 
  220        data.
get<1>().resize(n);
 
  221        data.
get<2>().resize(n);
 
  222        data.
get<3>().resize(n);
 
  223        data.
get<4>().resize(n);
 
  228template<
int counter, 
typename state_type, 
typename ... list>
 
  235template<
typename state_type, 
typename ... list>
 
  241template<
int n_state, 
typename state_type>
 
  245    typedef typename state_type::index_type index_type;
 
  246    typedef int is_state_vector;
 
  254        return data.template get<0>().size();
 
  273            typedef boost::true_type type;
 
  274            static const bool value = type::value;
 
  278            struct is_resizeable<state_type_1d_ofp_gpu> {
 
  279                typedef boost::true_type type;
 
  280                static const bool value = type::value;
 
  285                typedef boost::true_type type;
 
  286                static const bool value = type::value;
 
  291                typedef boost::true_type type;
 
  292                static const bool value = type::value;
 
  296                typedef boost::true_type type;
 
  297                static const bool value = type::value;
 
  301                typedef boost::true_type type;
 
  302                static const bool value = type::value;
 
  310                typedef double result_type;
 
  316                typedef double result_type;
 
  322                typedef double result_type;
 
  328                typedef double result_type;
 
  334                typedef double result_type;
 
  339            template<
typename state_type>
 
  341            typedef boost::true_type type;
 
  342            static const bool value = type::value;
 
  345            template<
typename state_type>
 
  347            typedef boost::true_type type;
 
  348            static const bool value = type::value;
 
  351            template<
typename state_type>
 
  353            typedef boost::true_type type;
 
  354            static const bool value = type::value;
 
  357            template<
typename state_type>
 
  359            typedef boost::true_type type;
 
  360            static const bool value = type::value;
 
  363            template<
typename state_type>
 
  365            typedef boost::true_type type;
 
  366            static const bool value = type::value;
 
  399            template<
typename state_type>
 
  402                typedef double result_type;
 
  405            template<
typename state_type>
 
  408                typedef double result_type;
 
  411            template<
typename state_type>
 
  414                typedef double result_type;
 
  417            template<
typename state_type>
 
  420                typedef double result_type;
 
  423            template<
typename state_type>
 
  426                typedef double result_type;
 
Main class that encapsulate a vector properties operand to be used for expressions construction.
 
convert a type into constant type
 
aggregate of properties, from a list of object if create a struct that follow the OPENFPM native stru...
 
__device__ __host__ boost::mpl::at< type, boost::mpl::int_< i > >::type & get()
get the properties i
 
A 1d Odeint and Openfpm compatible structure.
 
A 2d Odeint and Openfpm compatible structure.
 
A 3d Odeint and Openfpm compatible structure.
 
A 4d Odeint and Openfpm compatible structure.
 
A 5d Odeint and Openfpm compatible structure.