Gyoto
|
Metric coded in Python. More...
#include <GyotoPython.h>
Public Types | |
typedef Gyoto::SmartPointer< Gyoto::SmartPointee > | Subcontractor_t(Gyoto::FactoryMessenger *, std::vector< std::string > const &) |
A subcontractor builds an object upon order from the Factory. | |
Public Member Functions | |
virtual Property const * | getProperties () const |
Get list of properties. | |
Python (const Python &) | |
virtual Python * | clone () const |
Virtual copy constructor. | |
void | spherical (bool) |
bool | spherical () const |
virtual std::string | module () const |
Return module_. | |
virtual void | module (const std::string &) |
Set module_ and import the Python module. | |
virtual std::string | inlineModule () const |
Return inline_module_. | |
virtual void | inlineModule (const std::string &) |
Set inline_module_ and import the Python module. | |
virtual std::string | klass () const |
Retrieve class_. | |
virtual void | klass (const std::string &) |
Set class_ and instantiate the Python class. | |
virtual std::vector< double > | parameters () const |
Retrieve parameters_. | |
virtual void | parameters (const std::vector< double > &) |
Set parameters_ and send them to pInstance_. | |
virtual void | mass (double m) |
Set mass used in unitLength() | |
void | gmunu (double g[4][4], const double *x) const |
int | christoffel (double dst[4][4][4], const double *x) const |
double | getRmb () const |
double | getRms () const |
double | getSpecificAngularMomentum (double rr) const |
double | getPotential (double const pos[4], double l_cst) const |
int | isStopCondition (double const coord[8]) const |
Check whether integration should stop. | |
void | circularVelocity (double const pos[4], double vel[4], double dir=1.) const |
Yield circular velocity at a given position. | |
virtual void | set (std::string const &key, Value val) |
virtual void | set (Property const &p, Value val) |
virtual void | set (Property const &p, Value val, std::string const &unit) |
virtual void | set (std::string const &pname, Value val, std::string const &unit) |
Set Value (expressed in unit) of a Property. | |
virtual Value | get (std::string const &key) const |
Value | get (Property const &p, std::string const &unit) const |
Value | get (Property const &p) const |
virtual Value | get (std::string const &pname, std::string const &unit) const |
Get Value of a Property, converted to unit. | |
virtual int | setParameter (std::string name, std::string content, std::string unit) |
virtual void | setParameter (Gyoto::Property const &p, std::string const &name, std::string const &content, std::string const &unit) |
Set parameter by Property (and name) | |
virtual void | fillElement (Gyoto::FactoryMessenger *fmp) const |
void | setParameters (Gyoto::FactoryMessenger *fmp) |
int | coordKind () const |
Get coordinate kind. | |
int | getRefCount () |
virtual void | mass (const double, const std::string &unit) |
Set mass used in unitLength() | |
double | mass () const |
Get mass used in unitLength() | |
double | mass (const std::string &unit) const |
Get mass used in unitLength() | |
double | unitLength () const |
M * G / c^2, M is in kg, unitLength in meters. | |
double | unitLength (const std::string &unit) const |
unitLength expressed in specified unit | |
double | deltaMin () const |
void | deltaMin (double h1) |
double | deltaMax () const |
virtual double | deltaMax (double const pos[8], double delta_max_external) const |
void | deltaMax (double h1) |
double | deltaMaxOverR () const |
Get delta_max_over_r_. | |
void | deltaMaxOverR (double t) |
Set delta_max_over_r_. | |
bool | keplerian () const |
Get keplerian_. | |
void | keplerian (bool) |
Set keplerian_. | |
virtual void | cartesianVelocity (double const coord[8], double vel[3]) |
Compute xprime, yprime and zprime from 8-coordinates. | |
virtual double | SysPrimeToTdot (const double coord[4], const double v[3]) const |
Compute tdot as a function of dr/dt, dtheta/dt and dphi/dt. Everything is in geometrical units. | |
virtual void | zamoVelocity (double const pos[4], double vel[4]) const |
Yield ZAMO velocity at a given position. | |
virtual void | nullifyCoord (double coord[8]) const |
Set tdot (coord[4]) such that coord is light-like. Everything is in geometrical units. | |
virtual void | nullifyCoord (double coord[8], double &tdot2) const |
Set tdot (coord[4]) such that coord is light-like and return other possible tdot. | |
virtual void | normalizeFourVel (double coord[8]) const |
Normalize fourvelvel to -1. | |
virtual void | normalizeFourVel (double const pos[4], double fourvel[4]) const |
Normalize fourvelvel to -1. | |
virtual double | ScalarProd (const double pos[4], const double u1[4], const double u2[4]) const |
Scalar product. | |
double | norm (const double pos[4], const double u1[4]) const |
Scalar product. | |
void | multiplyFourVect (double vect[4], double a) const |
multiply vector by scalar | |
void | addFourVect (double u1[4], double const u2[4]) const |
add second vector to first one | |
void | projectFourVect (double const pos[4], double u1[4], double const u2[4]) const |
project u1 orthogonally to u2 at pos | |
void | dualOneForm (double const IN_ARRAY1_1[4], double const IN_ARRAY1_2[4], double ARGOUT_ARRAY1[4]) const |
Computes dual 1-form Compute the dual 1-form of 4-vector. | |
virtual void | observerTetrad (obskind_t obskind, double const pos[4], double fourvel[4], double screen1[4], double screen2[4], double screen3[4]) const |
Computes the orthonormal local tetrad of the observer. | |
virtual void | observerTetrad (double const pos[4], double fourvel[4], double screen1[4], double screen2[4], double screen3[4]) const |
Computes the orthonormal local tetrad of the observer. | |
void | GramSchmidt (double const pos[4], double u0[4], double u1[4], double u2[4], double u3[4]) const |
Apply Gram-Schmidt orthonormalization to a basis. | |
virtual double | gmunu (double const x[4], int mu, int nu) const |
Metric coefficients. | |
virtual void | gmunu (double ARGOUT_ARRAY2[4][4], double const IN_ARRAY1[4]) const |
Metric coefficients. | |
virtual double | gmunu_up (double const x[4], int mu, int nu) const |
Metric contravariant coefficients. | |
virtual void | gmunu_up (double ARGOUT_ARRAY2[4][4], const double IN_ARRAY1[4]) const |
Metric contravariant coefficients. | |
virtual void | jacobian (double ARGOUT_ARRAY3[4][4][4], const double IN_ARRAY1[4]) const |
Derivatives of the metric covariant coefficients. | |
virtual void | gmunu_up_and_jacobian (double ARGOUT_ARRAY2[4][4], double ARGOUT_ARRAY3[4][4][4], const double IN_ARRAY1[4]) const |
gmunu_up() and jacobian() in one go | |
virtual void | computeNBeta (const double coord[4], double &NN, double beta[3]) const |
Computes lapse scalar and shift vector at coord. | |
virtual double | christoffel (const double coord[4], const int alpha, const int mu, const int nu) const |
Chistoffel symbol. | |
virtual int | christoffel (double dst[4][4][4], const double coord[4]) const |
Chistoffel symbol. | |
virtual int | myrk4 (Worldline *line, state_t const &coord, double h, state_t &res) const |
RK4 integrator. | |
virtual int | myrk4 (Worldline *line, const double coord[8], double h, double res[8]) const =delete |
Obsolete, update your code. | |
virtual int | myrk4_adaptive (Gyoto::Worldline *line, state_t const &coord, double lastnorm, double normref, state_t &coordnew, double h0, double &h1, double deltamax=GYOTO_DEFAULT_DELTA_MAX) const |
RK4 integrator with adaptive step. | |
virtual int | myrk4_adaptive (Gyoto::Worldline *line, const double coord[8], double lastnorm, double normref, double coordnew[8], double h0, double &h1, double deltamax=GYOTO_DEFAULT_DELTA_MAX) const =delete |
Obsolete, update your code. | |
virtual int | diff (state_t const &x, state_t &dxdt, double mass) const |
F function such as dx/dt=F(x,cst) | |
virtual int | diff (state_t const &x, state_t &dxdt) const =delete |
Obsolete, update your code. | |
virtual int | diff (const double y[8], double res[8]) const =delete |
virtual int | diff31 (state_t const &x, state_t &dxdt, double mass) const |
F function such as dx/dt=F(x,cst) for 3+1 case. | |
virtual void | setParticleProperties (Gyoto::Worldline *line, double const coord[8]) const |
Set Metric-specific constants of motion. Used e.g. in KerrBL. | |
void | incRefCount () |
Increment the reference counter. Warning: Don't mess with the counter. | |
int | decRefCount () |
Decrement the reference counter and return current value. Warning: Don't mess with the counter. | |
virtual bool | isThreadSafe () const |
Whether this class is thread-safe. | |
Property const * | property (std::string const pname) const |
Find property by name. | |
virtual void | fillProperty (Gyoto::FactoryMessenger *fmp, Property const &p) const |
Output a single Property to XML. | |
std::string | describeProperty (Gyoto::Property const &p) const |
Format desrciption for a property. | |
void | help () const |
Print (to stdout) some help on this class. | |
virtual std::string | kind () const |
Get kind_. | |
virtual void | hook (Listener *listener) |
Start listening. | |
virtual void | unhook (Listener *listener) |
Stop listening. | |
virtual bool | hasPythonProperty (std::string const &key) const |
virtual void | setPythonProperty (std::string const &key, Value val) |
virtual Value | getPythonProperty (std::string const &key) const |
virtual int | pythonPropertyType (std::string const &key) const |
Public Attributes | |
GYOTO_OBJECT_THREAD_SAFETY | |
Static Public Attributes | |
static GYOTO_OBJECT Property const | properties [] |
Protected Member Functions | |
void | coordKind (int coordkind) |
Set coordkind_. | |
virtual void | kind (const std::string) |
Set kind_. | |
virtual void | tellListeners () |
Call tell() on each hooked Listener. | |
Protected Attributes | |
double | delta_min_ |
Minimum integration step for the adaptive integrator. | |
double | delta_max_ |
Maximum integration step for the adaptive integrator. | |
double | delta_max_over_r_ |
Numerical tuning parameter. | |
bool | keplerian_ |
1 if circularVelocity should return the Newtonian Keplerian velocity, in r^-3/2 | |
std::string | kind_ |
The "kind" that is output in the XML entity. | |
std::vector< std::string > | plugins_ |
The plug-ins that needs to be loaded to access this instance's class. | |
std::string | module_ |
Name of the Python module that holds the class. | |
std::string | inline_module_ |
Python source code for module that holds the class. | |
std::string | class_ |
Name of the Python class that we want to expose. | |
std::vector< double > | parameters_ |
Parameters that this class needs. | |
PyObject * | pModule_ |
Reference to the python module once it has been loaded. | |
PyObject * | pInstance_ |
Reference to the python instance once it has been instantiated. | |
PyObject * | pProperties_ |
Reference to the properties member. | |
PyObject * | pSet_ |
Reference to the (optional) Set method. | |
PyObject * | pGet_ |
Reference to the (optional) Get method. | |
Private Attributes | |
PyObject * | pGmunu_ |
Reference to the gmunu method. | |
PyObject * | pChristoffel_ |
Reference to the christoffel method. | |
PyObject * | pGetRmb_ |
Reference to the getRmb method. | |
PyObject * | pGetRms_ |
Reference to the getRms method. | |
PyObject * | pGetSpecificAngularMomentum_ |
Reference to the method getSpecificAngularMomentum. | |
PyObject * | pGetPotential_ |
Reference to the getPotential method. | |
PyObject * | pIsStopCondition_ |
Reference to the isStopCondition method. | |
PyObject * | pCircularVelocity_ |
Reference to the circularVelocity method. | |
double | mass_ |
Mass yielding geometrical unit (in kg). | |
int | coordkind_ |
Kind of coordinates (cartesian-like, spherical-like, unspecified) | |
int | __defaultfeatures |
Whether some virtual methods are implemented. | |
int | refCount |
Reference counter. | |
pthread_mutex_t | mutex_ |
A mutex. | |
ListenerItem * | listeners_ |
Linked list of Listener items. | |
Friends | |
class | Gyoto::SmartPointer< Gyoto::Metric::Python > |
Loader for Python Metric classes. It interfaces with a Python class which must implement at least the gmunu and christoffel methods.
Other methods are optional: getRmb, getRms, getSpecificAngularMomentum, getPotential.
Use <Cartesian> or </Spherical> to select the coordinate system kind.
Sample XML file:
Sample Python module:
|
inherited |
A subcontractor builds an object upon order from the Factory.
Various classes need to provide a subcontractor to be able to instantiate themselves upon order from the Factory. A subcontractor is a function (often a static member function) which accepts a pointer to a FactoryMessenger as unique parameter, communicates with the Factory using this messenger to read an XML description of the object to build, and returns this objet. SmartPointee::Subcontractor_t* is just generic enough a typedef to cast to and from other subcontractor types: Astrobj::Subcontractor_t, Metric::Subcontractor_t, Spectrum::Subcontractor_t. A subcontractor needs to be registered using the relevant Register() function: Astrobj::Register(), Metric::Register(), Spectrum::Register().
|
virtualinherited |
Chistoffel symbol.
Value of Christoffel symbol Γαμν at point (x1, x2, x3).
Reimplemented in Gyoto::Metric::ChernSimons, Gyoto::Metric::Hayward, Gyoto::Metric::KerrBL, Gyoto::Metric::Minkowski, Gyoto::Metric::NumericalMetricLorene, Gyoto::Metric::RezzollaZhidenko, Gyoto::Metric::RotStar3_1, and Gyoto::Metric::SchwarzschildHarmonic.
|
virtualinherited |
Chistoffel symbol.
Value of Christoffel symbol Γαμν at point (x1, x2, x3).
Reimplemented in Gyoto::Metric::Hayward, Gyoto::Metric::KerrBL, Gyoto::Metric::NumericalMetricLorene, Gyoto::Metric::RezzollaZhidenko, Gyoto::Metric::RotStar3_1, Gyoto::Metric::SchwarzschildHarmonic, Gyoto::Metric::Hayward, Gyoto::Metric::KerrBL, Gyoto::Metric::Minkowski, Gyoto::Metric::RezzollaZhidenko, Gyoto::Metric::SchwarzschildHarmonic, and Gyoto::Metric::ChernSimons.
|
virtual |
Yield circular velocity at a given position.
Give the velocity of a massive particle in circular orbit at the given position projected onto the equatorial plane. Such a velocity may not exist everywhere (or anywhere) for a given metric. This method is intended to be used by Astrobj classes such as Torus or ThinDisk.
If keplerian_ is set to true, this method should return the Keplerian velcity instead (derived classes should ensure this, see KerrBL::circularVelocity() for instance).
The default implementation throws an error if keplerian_ is set to false.
pos | input: position, |
vel | output: velocity, |
dir | 1 for corotating, -1 for counterrotating. |
Reimplemented from Gyoto::Metric::Generic.
|
virtual |
Virtual copy constructor.
Reimplemented from Gyoto::Metric::Generic.
|
virtualinherited |
Computes lapse scalar and shift vector at coord.
Reimplemented in Gyoto::Metric::KerrBL, and Gyoto::Metric::NumericalMetricLorene.
|
protectedinherited |
Set coordkind_.
coordkind(int coordkind) is protected because, for most Metrics, it should not be changed in runtime. Set coordinate kind
|
inherited |
Get delta_max_
|
virtualinherited |
Get delta max at a given position
pos | 4-position |
[optional] | delta_max_external external constraint on delta_max |
|
inherited |
Set delta_max_
|
inherited |
Get delta_min_
|
inherited |
Set delta_min_
|
inherited |
Format desrciption for a property.
Returns a string containing the name(s) and type of the property, as well as whether it supports unit.
|
virtualinherited |
F function such as dx/dt=F(x,cst)
Reimplemented in Gyoto::Metric::NumericalMetricLorene, Gyoto::Metric::RotStar3_1, and Gyoto::Metric::Minkowski.
|
virtualinherited |
F function such as dx/dt=F(x,cst) for 3+1 case.
Reimplemented in Gyoto::Metric::KerrBL, and Gyoto::Metric::NumericalMetricLorene.
|
inherited |
Computes dual 1-form Compute the dual 1-form of 4-vector.
IN_ARRAY1_1 | 4-position; | |
IN_ARRAY1_2 | quadrivector; | |
[out] | ARGOUT_ARRAY1 | output 1-form |
|
inlinevirtualinherited |
Reimplemented from Gyoto::Object.
|
virtualinherited |
Output a single Property to XML.
The base implementation decides what to do based on the p.type. The format matches how setParameters() an setParameter() would interpret the XML descition.
Overriding this method should be avoided, but makes sense in some cases (for instance Screen::fillProperty() selects a different unit for Distance based on its magnitude, so that stellar sizes are expressed in solar radii while smaller sizes can be expressed in meters and larger sizes in parsecs).
Overriding implementation should fall-back on calling the implementation in the direct parent class:
Reimplemented in Gyoto::Scenery, Gyoto::Astrobj::DirectionalDisk, Gyoto::Astrobj::Disk3D, Gyoto::Astrobj::DynamicalDisk, Gyoto::Astrobj::EquatorialHotSpot, Gyoto::Astrobj::NeutronStarModelAtmosphere, Gyoto::Astrobj::PatternDisk, Gyoto::Astrobj::PolishDoughnut, Gyoto::Screen, Gyoto::Metric::Shift, Gyoto::Astrobj::Star, Gyoto::Spectrometer::Uniform, and Gyoto::Astrobj::XillverReflection.
|
inlinevirtualinherited |
Reimplemented from Gyoto::Object.
|
inlinevirtualinherited |
Reimplemented from Gyoto::Object.
|
inlinevirtualinherited |
Reimplemented from Gyoto::Object.
|
virtual |
Returns potential W=-ln(|u_t|) for a cst specific angular momentum l_cst Should be implemented in derived classes if useful If called on the base class, returns an error
Reimplemented from Gyoto::Metric::Generic.
|
virtual |
Get list of properties.
This method is declared automatically by the GYOTO_OBJECT macro and defined automatically by the GYOTO_PROPERTY_END macro.
Reimplemented from Gyoto::Metric::Generic.
|
virtual |
Returns the marginally bound radius Should be implemented in derived classes if useful If called on the base class, returns an error
Reimplemented from Gyoto::Metric::Generic.
|
virtual |
Returns the marginally stable (ISCO) radius Should be implemented in derived classes if useful If called on the base class, returns an error
Reimplemented from Gyoto::Metric::Generic.
|
virtual |
Returns the specific angular momentum l=-u_phi/u_t Should be implemented in derived classes if useful If called on the base class, returns an error
Reimplemented from Gyoto::Metric::Generic.
|
virtualinherited |
Metric coefficients.
The default implementation calls double gmunu(const double * x, int mu, int nu) const.
[out] | ARGOUT_ARRAY2 | (g) 4x4 array to store the coeefficients |
[in] | IN_ARRAY1 | (x) 4-position at which to compute the coefficients; |
Reimplemented in Gyoto::Metric::Complex, Gyoto::Metric::Hayward, Gyoto::Metric::KerrBL, Gyoto::Metric::KerrKS, Gyoto::Metric::Minkowski, Gyoto::Metric::Shift, Gyoto::Metric::ChernSimons, Gyoto::Metric::Complex, Gyoto::Metric::NumericalMetricLorene, Gyoto::Metric::RezzollaZhidenko, Gyoto::Metric::RotStar3_1, Gyoto::Metric::SchwarzschildHarmonic, and Gyoto::Metric::Shift.
|
virtualinherited |
Metric coefficients.
The default implementation calls Metric:: gmunu(double g[4][4], const double * pos) const
x | 4-position at which to compute the coefficient; |
mu | 1st index of coefficient, 0≤μ≤3; |
nu | 2nd index of coefficient, 0≤ν≤3; |
Reimplemented in Gyoto::Metric::Minkowski, Gyoto::Metric::NumericalMetricLorene, Gyoto::Metric::KerrKS, Gyoto::Metric::ChernSimons, Gyoto::Metric::Complex, Gyoto::Metric::Hayward, Gyoto::Metric::KerrBL, Gyoto::Metric::NumericalMetricLorene, Gyoto::Metric::RezzollaZhidenko, Gyoto::Metric::RezzollaZhidenko, Gyoto::Metric::RotStar3_1, Gyoto::Metric::RotStar3_1, Gyoto::Metric::SchwarzschildHarmonic, Gyoto::Metric::SchwarzschildHarmonic, and Gyoto::Metric::Shift.
|
virtualinherited |
Metric contravariant coefficients.
The default implementation inverts the covariant coefficients matrix.
Reimplemented in Gyoto::Metric::Hayward, Gyoto::Metric::KerrBL, Gyoto::Metric::KerrKS, Gyoto::Metric::NumericalMetricLorene, Gyoto::Metric::Shift, Gyoto::Metric::Shift, and Gyoto::Metric::ChernSimons.
|
virtualinherited |
Metric contravariant coefficients.
The default implementation calls Metric:: gmunu_up(double g[4][4], const double * pos) const
x | 4-position at which to compute the coefficient; |
mu | 1st index of coefficient, 0≤μ≤3; |
nu | 2nd index of coefficient, 0≤ν≤3; |
Reimplemented in Gyoto::Metric::ChernSimons, Gyoto::Metric::Hayward, Gyoto::Metric::KerrBL, and Gyoto::Metric::Shift.
|
virtualinherited |
gmunu_up() and jacobian() in one go
Reimplemented in Gyoto::Metric::KerrKS.
|
inherited |
Apply Gram-Schmidt orthonormalization to a basis.
On input, u0 to u3 must be four non-zero norm, independent 4-vectors. On output, they will form an orthonormal basis.
[in] | pos | position, |
[in,out] | u0 | basis vector |
[in,out] | u1 | basis vector |
[in,out] | u2 | basis vector |
[in,out] | u3 | basis vector |
|
inherited |
Print (to stdout) some help on this class.
Describe all properties that this instance supports.
|
virtualinherited |
Start listening.
Use from a Hook::Listener object method:
where "this" is a Listener and "teller" is a Teller.
Use unhook() later to stop listening to a given Teller.
listener | pointer to the new listener |
|
virtual |
Return inline_module_.
Reimplemented from Gyoto::Python::Base.
|
virtual |
Set inline_module_ and import the Python module.
Side effects:
Reimplemented from Gyoto::Python::Base.
|
virtual |
Check whether integration should stop.
The integrating loop will ask this the Metric through this method whether or not it is happy to continue the integration. Typically, the Metric should answer 0 when everything is fine, 1 when too close to the event horizon, inside the BH...
coord | 8-coordinate vector to check. |
Reimplemented from Gyoto::Metric::Generic.
|
virtualinherited |
Whether this class is thread-safe.
Return True if this object is thread-safe, i.e. if an instance and its clone can be used in parallel threads (in the context of Scenery::raytrace()). Known objects which are not thread-safe include Lorene metrics and everything from the Python plug-in.
The default implementation considers that the class itself is thread safe and recurses into the declared properties to check whether they are safe too. Classes that abide to the Object/Property paradigm and are themselves thread-safe have nothing special to do.
Objects that clone children in their copy constructor that are not declared as properties must take these children into account.
Classes that are never thread-safe must declare it. It acn be easily done using GYOTO_OBJECT_THREAD_SAFETY in the class declaration and GYOTO_PROPERTY_THREAD_UNSAFE in the class definition.
|
virtualinherited |
Derivatives of the metric covariant coefficients.
The default implementation evaluates them numerically. The gmunu matrix is assumed to be symmetrical but no other assumptions are made at the moment.
Reimplemented in Gyoto::Metric::Complex, Gyoto::Metric::NumericalMetricLorene, Gyoto::Metric::Shift, and Gyoto::Metric::KerrKS.
|
virtualinherited |
Get kind_.
Reimplemented in Gyoto::Spectrometer::Uniform.
|
protectedvirtualinherited |
Set kind_.
kind(const std::string) is protected because, for most Objects, it should not be changed in runtime. Set kind_
|
virtual |
Retrieve class_.
Reimplemented from Gyoto::Python::Base.
|
virtual |
Set class_ and instantiate the Python class.
Sets pInstance_.
This generic implementation takes care of the common ground, but does not set 'this' or call parameters(parameters_). Therefore, all the derived classes should reimplement this method and at least call Python::Base::klass(c) and parameters(parameters_). Between the two is the right moment to check that the Python class implements the required API and to cache PyObject* pointers to class methods.
Reimplemented from Gyoto::Python::Base.
|
virtual |
Set mass used in unitLength()
Reimplemented from Gyoto::Metric::Generic.
|
virtual |
Return module_.
Reimplemented from Gyoto::Python::Base.
|
virtual |
Set module_ and import the Python module.
Side effects:
Reimplemented from Gyoto::Python::Base.
|
virtualinherited |
RK4 integrator.
Reimplemented in Gyoto::Metric::KerrBL.
|
virtualinherited |
RK4 integrator with adaptive step.
Reimplemented in Gyoto::Metric::KerrBL, and Gyoto::Metric::RotStar3_1.
|
inherited |
Scalar product.
Compute the norm of the quadrivector u1 in this Metric, at point pos expressed in coordinate system sys.
[in] | pos | 4-position; |
[in] | u1 | quadrivector; |
|
virtualinherited |
Normalize fourvelvel to -1.
First computes threevel as xiprime=xidot/x0dot for i in {1, 2, 3}, then computes x0dot using SyPrimeToTdot, then computes again xidot as xidot=xiprime*x0dot.
[in] | pos | 4-position; |
[in,out] | fourvel | 4-velocity, will be renormalized. |
|
virtualinherited |
Normalize fourvelvel to -1.
First computes threevel as xiprime=xidot/x0dot for i in {1, 2, 3}, then computes x0dot using SyPrimeToTdot, then computes again xidot as xidot=xiprime*x0dot.
[in,out] | coord | 8-position, coord[4-7] will be set according to the other elements; |
|
virtualinherited |
Set tdot (coord[4]) such that coord is light-like. Everything is in geometrical units.
Set coord[4] so that the 4-velocity coord[4:7] is lightlike, i.e. of norm 0. There may be up to two solutions. coord[4] is set to the hightest. The lowest can be retrieved using nullifyCoord(double coord[8], double& tdot2) const. Everything is expressed in geometrical units.
[in,out] | coord | 8-position, coord[4] will be set according to the other elements; |
Reimplemented in Gyoto::Metric::KerrBL.
|
virtualinherited |
Set tdot (coord[4]) such that coord is light-like and return other possible tdot.
Set coord[4] so that the 4-velocity coord[4:7] is lightlike, i.e. of norm 0. There may be up to two solutions. coord[4] is set to the hightest. The lowest can be retrieved in tdot2. Everything is expressed in geometrical units.
[in,out] | coord | 8-position, coord[4] will be set according to the other elements; |
[out] | tdot2 | will be set to the smallest solution |
Reimplemented in Gyoto::Metric::KerrBL.
|
virtualinherited |
Computes the orthonormal local tetrad of the observer.
[in] | pos | position, |
[in] | fourvel | observer 4-velocity (norm -1) |
[out] | screen1 | first vector in the screen plane |
[out] | screen2 | second vector in the screen plane |
[out] | screen3 | vector normal to the screen |
Reimplemented in Gyoto::Metric::KerrBL.
|
virtualinherited |
Computes the orthonormal local tetrad of the observer.
obskind | input: kind of observer (eg: "ZAMO","KeplerianObserver"...) |
pos | input: position, |
fourvel | output: observer 4-velocity (norm -1) |
screen1 | output: first vector in the screen plane |
screen2 | output: second vector in the screen plane |
screen3 | output: vector normal to the screen |
Reimplemented in Gyoto::Metric::Minkowski.
|
virtual |
Retrieve parameters_.
Reimplemented from Gyoto::Python::Base.
|
virtual |
Set parameters_ and send them to pInstance_.
The parameters are sent to the class instance using the setitem method with numerical keys.
Reimplemented from Gyoto::Python::Base.
|
inherited |
|
virtualinherited |
Scalar product.
Compute the scalarproduct of the two quadrivectors u1 and u2 in this Metric, at point pos expressed in coordinate system sys.
pos | 4-position; |
u1 | 1st quadrivector; |
u2 | 2nd quadrivector; |
Reimplemented in Gyoto::Metric::Hayward, Gyoto::Metric::KerrBL, and Gyoto::Metric::RotStar3_1.
|
inlinevirtualinherited |
Reimplemented from Gyoto::Object.
|
inlinevirtualinherited |
Reimplemented from Gyoto::Object.
|
inlinevirtualinherited |
Reimplemented from Gyoto::Object.
|
virtualinherited |
Set parameter by Property (and name)
This function is used when parsing an XML description, if Property (p) of this name is found (i.e. either p.name or p.name_false is equal to name). Implementation should fall-back on calling the direct's parent implementation:
p | Property that matches name (p.name == name or p.name_false == name) |
name | XML name of the parameter (XML entity) |
content | string representation of the value |
unit | string representation of the unit |
Reimplemented in Gyoto::Astrobj::PolishDoughnut.
|
inlinevirtualinherited |
Reimplemented from Gyoto::Object.
|
inlinevirtualinherited |
Reimplemented from Gyoto::Object.
|
virtualinherited |
Compute tdot as a function of dr/dt, dtheta/dt and dphi/dt. Everything is in geometrical units.
coord | 4-position (geometrical units); |
v | 3-velocity dx1/dx0, dx2/dx0, dx3/dx0; |
|
protectedvirtualinherited |
Call tell() on each hooked Listener.
Whenever a Teller mutates, it should warn any Listener hooked to it using tellListeners().
|
virtualinherited |
Stop listening.
Use from a Hook::Listener object method:
where "this" is a Listener, "teller" is a Teller, and "this" has called teller->hook(this) previously.
listener | pointer to the listener |
|
inherited |
M * G / c^2, M is in kg, unitLength in meters.
Metrics implementations are free to express lengths and distances in whatever unit they see fit (presumably most often geometrical units). This function returns this unit in SI (meters).
|
virtualinherited |
Yield ZAMO velocity at a given position.
Give the velocity of a zero angular momentul observer (whatever is closest to "at rest"). The default implementation simply projects (1, 0, 0, 0) othogonally along ephi and normalizes it, thus ensuring that vel is orthogonal to ephi.
pos | input: position, |
vel | output: velocity, |
Reimplemented in Gyoto::Metric::KerrBL.
|
privateinherited |
Whether some virtual methods are implemented.
The default implementations of some methods call one-another. This member is used internally to avoid infinite recursion.
|
protectedinherited |
|
protectedinherited |
Numerical tuning parameter.
Ensure that delta (the numerical integration step) is never larger than a fraction of the distance between the current location and the center of the coordinate system.
For investigations close to the event horizon, 0.5 is usually fine. If high accuracy is needed long after deflection (weak lensing), then this must be smaller. A good test is to look at a MinDistance map for a FixedStar: it must be smooth.
|
protectedinherited |
|
protectedinherited |
|
privateinherited |
A mutex.
When compiled with libpthread
|
protectedinherited |
|
protectedinherited |
The plug-ins that needs to be loaded to access this instance's class.
E.g. for an Astrobj, fillElement() will ensure
is written.