Gyoto
|
Metric around a Kerr black-hole in Kerr-Schild coordinates. More...
#include <GyotoKerrKS.h>
Public Member Functions | |
KerrKS () | |
Default constructor. | |
KerrKS (double spin, double mass) | |
Constructor with spin and mass specification. | |
virtual KerrKS * | clone () const |
Copy constructor. | |
virtual | ~KerrKS () |
Destructor. | |
void | setSpin (const double spin) |
Set spin. | |
double | getSpin () const |
Returns spin. | |
double | gmunu (const double *x, int alpha, int beta) const |
Metric coefficients. More... | |
double | christoffel (const double[8], const int, const int, const int) const |
Chistoffel symbol. More... | |
void | nullifyCoord (double coord[8], double &tdot2) const |
Set tdot (coord[4]) such that coord is light-like and return other possible tdot. More... | |
void | nullifyCoord (double coord[8]) const |
Set tdot (coord[4]) such that coord is light-like. Everything is in geometrical units. More... | |
virtual void | circularVelocity (double const pos[4], double vel[4], double dir=1.) const |
Yield circular valocity at a given position (projected on equatorial plane). More... | |
virtual void | setParameter (std::string, std::string, std::string) |
Set parameter by name. More... | |
virtual void | fillElement (FactoryMessenger *fmp) |
called from Factory More... | |
void | MakeCst (const double *coord, double *cst) const |
In Kerr-Schild coordinates [T,x,y,z,Tdot,xdot,ydot,zdot], computes the four constants of the movement : particule mass, energy, angular momentum and Carter's constant. | |
const std::string | getKind () const |
Get kind_. | |
void | setKind (const std::string) |
Set kind_. | |
int | getRefCount () |
void | setMass (const double) |
Set mass used in unitLength() | |
void | setMass (const double, const std::string &unit) |
Set mass used in unitLength() | |
int | getCoordKind () const |
Get coordinate kind. | |
void | setCoordKind (int coordkind) |
Set coordinate kind. | |
double | getMass () const |
Get mass used in unitLength() | |
double | getMass (const std::string &unit) const |
Get mass used in unitLength() | |
double | unitLength () const |
M * G / c^2, M is in kg, unitLength in meters. More... | |
double | unitLength (const std::string &unit) const |
unitLength expressed in specified unit | |
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. More... | |
virtual double | ScalarProd (const double pos[4], const double u1[4], const double u2[4]) const |
Scalar product. More... | |
virtual double | Norm3D (double *pos) const |
not clear | |
virtual void | setParameters (Gyoto::FactoryMessenger *fmp) |
Main loop in Subcontractor_t function. More... | |
void | processGenericParameters (Gyoto::FactoryMessenger *fmp) |
Process generic XML parameters. | |
virtual int | myrk4_adaptive (Gyoto::Worldline *line, const double coord[8], double lastnorm, double normref, double coordnew[8], double h0, double &h1) const |
RK4 integrator with adaptive step. | |
virtual void | hook (Listener *listener) |
Start listening. More... | |
virtual void | unhook (Listener *listener) |
Stop listening. More... | |
Protected Types | |
typedef Gyoto::SmartPointer < Gyoto::SmartPointee > | Subcontractor_t (Gyoto::FactoryMessenger *) |
A subcontractor builds an object upon order from the Factory. More... | |
Protected Member Functions | |
int | myrk4 (Worldline *line, const double coord[8], double h, double res[8]) const |
RK4 integrator. More... | |
int | myrk4 (const double *coord, const double *cst, double h, double *res) const |
RK4 integrator. More... | |
int | myrk4_adaptive (Gyoto::Worldline *line, const double *coord, double lastnorm, double normref, double *coord1, double h0, double &h1) const |
? More... | |
int | diff (const double *coord, const double *cst, double *res) const |
int | diff (const double y[8], double res[8]) const |
F function such as dy/dtau=F(y,cst) | |
virtual int | isStopCondition (double const *const coord) const |
Check whether integration should stop. More... | |
void | setParticleProperties (Worldline *line, const double *coord) 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 void | tellListeners () |
Call tell() on each hooked Listener. More... | |
Protected Attributes | |
double | spin_ |
Angular momentum parameter. | |
Friends | |
class | Gyoto::SmartPointer< Gyoto::Metric::KerrKS > |
Metric around a Kerr black-hole in Kerr-Schild coordinates.
|
inherited |
A subcontractor builds an object upon order from the Factory.
Various classes need to provide a subcontractor to be able to instanciate 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().
|
virtual |
Chistoffel symbol.
Value of Christoffel symbol Γαμν at point (x1, x2, x3).
Implements Gyoto::Metric::Generic.
|
virtual |
Yield circular valocity at a given position (projected on equatorial plane).
pos | input: position, |
vel | output: velocity, |
dir | 1 for corotating, -1 for counterrotating. |
Reimplemented from Gyoto::Metric::Generic.
|
protected |
F function such as dy/dtau=F(y,cst)
|
virtual |
called from Factory
Metrics implementations should impement fillElement to save their parameters to XML and call the Metric::fillElement(fmp) for the shared properties
Reimplemented from Gyoto::Metric::Generic.
|
virtual |
Metric coefficients.
x | 4-position at which to compute the coefficient; |
mu | 1st index of coefficient, 0≤μ≤3; |
nu | 2nd index of coefficient, 0≤ν≤3; |
Implements Gyoto::Metric::Generic.
|
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 |
|
protectedvirtual |
Check whether integration should stop.
The integrating loop will ask this the Metric through this method whether or not it is happy to conitnue 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.
|
protectedvirtual |
RK4 integrator.
Wrapper around myrk4(const double * coord, const double* cst , double h, double* res) const
Reimplemented from Gyoto::Metric::Generic.
|
protected |
RK4 integrator.
coord | [r,theta,phi,t,pr,ptheta] |
cst | [a,E,L,Q],dy/dtau=F(y,cst) |
h | proper time step. |
res | result |
|
protected |
?
Is it ever called?
|
virtual |
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 from Gyoto::Metric::Generic.
|
virtual |
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 from Gyoto::Metric::Generic.
|
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::RotStar3_1, and Gyoto::Metric::KerrBL.
|
virtual |
Set parameter by name.
Assume MyKind is a subclass of Metric::Generic which has two members (a string StringMember and a double DoubleMember):
If MyKind is not a direct subclass of Generic, it should call the corresponding setParameter() implementation instead of Generic::setParameter().
name | XML name of the parameter |
content | string representation of the value |
unit | string representation of the unit |
Reimplemented from Gyoto::Metric::Generic.
|
virtualinherited |
Main loop in Subcontractor_t function.
The Subcontractor_t function for each Metric kind should look somewhat like this (templated as Gyoto::Metric::Subcontractor<MyKind>):
Each metric kind should implement setParameter(string name, string content, string unit) to interpret the individual XML elements. setParameters() can be overloaded in case the specific Metric class needs low level access to the FactoryMessenger. See Gyoto::Astrobj::UniformSphere::setParameters().
Reimplemented in Gyoto::Metric::RotStar3_1.
|
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).