1 #ifndef STAN_LANG_AST_NODE_INTEGRATE_ODE_HPP
2 #define STAN_LANG_AST_NODE_INTEGRATE_ODE_HPP
3 
4 #include <stan/lang/ast/node/expression.hpp>
5 #include <string>
6 
7 namespace stan {
8   namespace lang {
9 
10     /**
11      * Structure for integrate diff eq statement.
12      */
13     struct integrate_ode {
14       /**
15        * The name of the integrator.
16        */
17       std::string integration_function_name_;
18 
19       /**
20        * Name of the ODE system.
21        */
22       std::string system_function_name_;
23 
24       /**
25        * Initial state.
26        */
27       expression y0_;
28 
29       /**
30        * Initial time.
31        */
32       expression t0_;
33 
34       /**
35        * Solution times.
36        */
37       expression ts_;
38 
39       /**
40        * Parameters.
41        */
42       expression theta_;  // params
43 
44       /**
45        * Real-valued data.
46        */
47       expression x_;
48 
49       /**
50        * Integer-valued data.
51        */
52       expression x_int_;
53 
54       /**
55        * Construct a default integrate ODE node.
56        */
57       integrate_ode();
58 
59       /**
60        * Construct an integrate ODE node with the specified
61        * components.
62        *
63        * @param integration_function_name name of integrator
64        * @param system_function_name name of ODE system
65        * @param y0 initial value
66        * @param t0 initial time
67        * @param ts solution times
68        * @param theta parameters
69        * @param x real-valued data
70        * @param x_int integer-valued data
71        */
72       integrate_ode(const std::string& integration_function_name,
73                     const std::string& system_function_name,
74                     const expression& y0,
75                     const expression& t0,
76                     const expression& ts,
77                     const expression& theta,
78                     const expression& x,
79                     const expression& x_int);
80     };
81 
82   }
83 }
84 #endif
85