Object

template<typename Type>
class Object

Subclassed by SBody::Disk< Type >, SBody::Particle< Type >

Public Functions

inline Object(std::shared_ptr<Metric<Type>> metric)

Construct a new Object object.

Parameters:

metric

virtual int Hit(const boost::numeric::ublas::bounded_vector<Type, 8> &current, const boost::numeric::ublas::bounded_vector<Type, 8> &last) = 0
Parameters:
  • current

  • last

Returns:

int

virtual Type Redshift(const boost::numeric::ublas::bounded_vector<Type, 8> &photon, TimeSystem photon_time) = 0

\[z=\frac{E_\mathrm{obj}}{E_\mathrm{obs}}-1\]
where
\[E_\mathrm{obj}=-g_{\mu\nu}u_\mathrm{ph}^\mu u_\mathrm{obj}^\nu\]
For the distant observer, the equation is the same. With the tetrad velocity \(u_\mathrm{obs}=(1,0,0,0)\) and metric
\[\begin{split} g_\mathrm{obs}= \begin{pmatrix} -1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{pmatrix}, \end{split}\]
the energy of the photon can be simplified to
\[ E_\mathrm{obs}=u_\mathrm{ph}^0. \]

Parameters:
  • photon – 8 dimensional information of photon

  • photon_time

Returns:

Type

Star

template<typename Type>
class Star : public SBody::Particle<Type>

Public Functions

inline virtual int Hit(const boost::numeric::ublas::bounded_vector<Type, 8> &current, const boost::numeric::ublas::bounded_vector<Type, 8> &last)

Check if the star hit by the photon.

Parameters:
  • current

  • last

Returns:

int

Disk

template<typename Type>
class Disk : public SBody::Object<Type>

Public Functions

inline virtual int Hit(const boost::numeric::ublas::bounded_vector<Type, 8> &current, const boost::numeric::ublas::bounded_vector<Type, 8> &last)
Parameters:
  • current

  • last

Returns:

int