Planetary Orbital Evolution due to Tides
Orbital evolution of two objects experiencing tides
ConstSolutionIterator.h
Go to the documentation of this file.
1 
7 #ifndef __SOLUTION_ITERATOR_H
8 #define __SOLUTION_ITERATOR_H
9 
10 #include "BinarySystem.h"
11 #include "../IO/IOColumns.h"
12 #include "../Star/EvolvingStar.h"
13 #include "OrbitSolver.h"
14 #include "DissipatingZone.h"
15 
16 namespace Evolve {
17 
21  private:
25  std::vector< std::list<double>::const_iterator > __real_iterators;
26 
28  static std::list<double> __placeholder_list;
29 
31  static std::list<double>::const_iterator __placeholder_iterator;
32 
34  std::list<Core::EvolModeType>::const_iterator __mode;
35 
37  std::list<bool>::const_iterator __wind_saturation;
38 
40  std::list<double>::const_iterator __last_age;
41 
43  double __mstar,
44 
46  __mplanet;
47 
50  Eigen::Vector3d __stellar_angmom;
51 
53  const InterpolatedEvolutionStar &__star;
54 
59  const std::list<double> &tabulation_ages
60  );
61 
63  void fix_no_evolution(
66  double start_age,
67 
70  double end_age,
71 
74  double timestep,
75 
78  const std::list<double> &required_ages=std::list<double>()
79  );
80  public:
84  const OrbitSolver &solver,
85 
87  const BinarySystem &system,
88 
91  const InterpolatedEvolutionStar &star,
92 
95  double start_age,
96 
99  double end_age,
100 
103  double timestep,
104 
107  const std::list<double> &required_ages=std::list<double>()
108  );
109 
112 
114  operator bool() {return __real_iterators[OutCol::AGE]!=__last_age;}
115 
117  double real_quantity(OutCol::OutputColumns quantity);
118 
121 
124  }; //End ConstSolutionIterator class.
125 
126 } //End Evolve namespace.
127 
128 #endif
static std::list< double >::const_iterator __placeholder_iterator
All undefined entries in __real_iterators are set to this.
bool wind_saturation()
Was the wind saturated for the current step?
Age of the system in Gyr.
Definition: IOColumns.h:106
static std::list< double > __placeholder_list
Location for undefined iterators to point to.
Declares a class representing one zone of a body dissipative to tidal distortions.
void fix_no_evolution(double start_age, double end_age, double timestep, const std::list< double > &required_ages=std::list< double >())
Handles the case when no evolution was actually calculated.
std::list< bool >::const_iterator __wind_saturation
Iterator over the tabulated wind saturation state.
Orientations of zones of bodies in a binary system.
const ConstSolutionIterator & operator++()
Move to the next tabulated point.
Defines the OrbitSolver class, the various stopping conditions and a number of other classes used whi...
double real_quantity(OutCol::OutputColumns quantity)
Get a real value quantity for the current step.
Eigen::Vector3d __stellar_angmom
Total angular momentum vector of the star in the reference frame of the surface zone.
Iterates over the tabulated solution after an evolution calculation.
std::list< Core::EvolModeType >::const_iterator __mode
Iterator over the tabulated evolution mode.
std::vector< std::list< double >::const_iterator > __real_iterators
Iterators to the tabulated real values quantities.
Defines the BinarySystem class.
double __mplanet
The mass of the planet.
EvolModeType
The various evolution modes.
Definition: Common.h:42
const InterpolatedEvolutionStar & __star
The star in the system.
Solves the system of ODEs describing the evolution of a single planet around a single star...
Definition: OrbitSolver.h:115
double __mstar
The mass of the star.
ConstSolutionIterator(const OrbitSolver &solver, const BinarySystem &system, const InterpolatedEvolutionStar &star, double start_age, double end_age, double timestep, const std::list< double > &required_ages=std::list< double >())
Start iterating over a solution.
OutputColumns
Tags for the possible columns to output.
Definition: IOColumns.h:105
void create_missing_lists(const std::list< double > &tabulation_ages)
Creates lists for non-orbital quantities and sets the corresponding iterators.
Core::EvolModeType evolution_mode()
Get the evolution mode for the current step.
Describes a system of two bodies orbiting each other.
Definition: BinarySystem.h:56
std::list< double >::const_iterator __last_age
One past the last tabulated age.