codac
codac_Trajectory.h
Go to the documentation of this file.
1 
12 #ifndef __CODAC_TRAJECTORY_H__
13 #define __CODAC_TRAJECTORY_H__
14 
15 #include <map>
16 #include <list>
17 #include "codac_DynamicalItem.h"
18 #include "codac_TFunction.h"
19 #include "codac_traj_arithmetic.h"
20 
21 namespace codac
22 {
23  class TFunction;
24  class TrajectoryVector;
25 
26  enum class TrajDefnType { ANALYTIC_FNC, MAP_OF_VALUES };
27 
34  class Trajectory : public DynamicalItem
35  {
36  public:
37 
40 
46  Trajectory();
47 
54  Trajectory(const Interval& tdomain, const TFunction& f);
55 
64  Trajectory(const Interval& tdomain, const TFunction& f, double timestep);
65 
71  explicit Trajectory(const std::map<double,double>& m_map_values);
72 
81  explicit Trajectory(const std::list<double>& list_t, const std::list<double>& list_x);
82 
88  Trajectory(const Trajectory& traj);
89 
93  ~Trajectory();
94 
101  const Trajectory& operator=(const Trajectory& x);
102 
108  int size() const;
109 
115  const Interval tdomain() const;
116 
122  TrajDefnType definition_type() const;
123 
127 
133  const std::map<double,double>& sampled_map() const;
134 
140  const TFunction* tfunction() const;
141 
147  const Interval codomain() const;
148 
160  double operator()(double t) const;
161 
168  const Interval operator()(const Interval& t) const;
169 
175  double first_value() const;
176 
182  double last_value() const;
183 
187 
194  bool not_defined() const;
195 
202  bool operator==(const Trajectory& x) const;
203 
210  bool operator!=(const Trajectory& x) const;
211 
215 
224  void set(double y, double t);
225 
234  Trajectory& truncate_tdomain(const Interval& tdomain);
235 
246  Trajectory& shift_tdomain(double a);
247 
254  bool constant_timestep(double& h) const;
255 
265  Trajectory& sample(double timestep);
266 
278  Trajectory& sample(const Trajectory& x);
279 
292  Trajectory& make_continuous();
293 
297 
307  const Trajectory primitive(double c = 0.) const;
308 
317  const Trajectory primitive(double c, double timestep) const;
318 
329  const Trajectory diff() const;
330 
344  double finite_diff(double t, double h) const;
345 
349 
356  const Trajectory& operator+=(double x);
357 
364  const Trajectory& operator+=(const Trajectory& x);
365 
372  const Trajectory& operator-=(double x);
373 
380  const Trajectory& operator-=(const Trajectory& x);
381 
388  const Trajectory& operator*=(double x);
389 
396  const Trajectory& operator*=(const Trajectory& x);
397 
404  const Trajectory& operator/=(double x);
405 
412  const Trajectory& operator/=(const Trajectory& x);
413 
417 
425  const std::string class_name() const { return "Trajectory"; };
426 
434  friend std::ostream& operator<<(std::ostream& str, const Trajectory& x);
435 
437 
438  protected:
439 
447  const IntervalVector codomain_box() const;
448 
452  void compute_codomain();
453 
454  // Class variables:
455 
456  Interval m_tdomain = Interval::EMPTY_SET;
457  Interval m_codomain = Interval::EMPTY_SET;
458 
459  // A trajectory is defined either by a TFunction or a map of values
460  TrajDefnType m_traj_def_type = TrajDefnType::MAP_OF_VALUES;
461 
462  //union
463  //{
464  TFunction *m_function = nullptr;
465  std::map<double,double> m_map_values;
466  //};
467 
468  friend void deserialize_Trajectory(std::ifstream& bin_file, Trajectory *&traj);
469  friend void deserialize_TrajectoryVector(std::ifstream& bin_file, TrajectoryVector *&traj);
470  };
471 }
472 
473 #endif
FixPoint of a separator The fixpoint of a separator is computed by calling the "::"separate function ...
Definition: codac_capd_helpers.h:9
One dimensional trajectory , defined as a temporal map of values.
Definition: codac_Trajectory.h:34
const std::string class_name() const
Returns the name of this class.
Definition: codac_Trajectory.h:425
Abstract class for common properties of Tube, TubeVector, Slice, Trajectory, TrajectoryVector objects...
Definition: codac_DynamicalItem.h:25
n-dimensional trajectory , defined as a temporal map of vector values
Definition: codac_TrajectoryVector.h:37
void deserialize_TrajectoryVector(std::ifstream &bin_file, TrajectoryVector *&traj)
Creates a TrajectoryVector object from a binary file.
std::map< double, double > m_map_values
optional map of values <t,y>:
Definition: codac_Trajectory.h:465
void deserialize_Trajectory(std::ifstream &bin_file, Trajectory *&traj)
Creates a Trajectory object from a binary file.