SMILE
v2.5
Schwarzschild Modelling Interactive expLoratory Environment
|
angular expansion of scale-free potential in spherical harmonics More...
#include <potential.h>
Public Member Functions | |
CPotentialScaleFreeSH (double mass, double scalerad, double _q, double _p, double _Gamma, size_t _Ncoefs_angular) | |
init potential from a scale-free density profile with the power-law exponent _Gamma | |
CPotentialScaleFreeSH (double _Gamma, const vectord &_coefs) | |
init potential from stored SHE coefficients | |
virtual CPotential * | clone () const |
Return a pointer to a copy of this instance of potential. More... | |
virtual POTENTIALTYPE | PotentialType () const |
enumerable potential type | |
virtual const char * | PotentialName () const |
string representation of potential type | |
void | getCoefs (vectord *coefsArray) const |
return spherical-harmonic coefficients array | |
virtual double | getGamma () const |
returns inner density slope estimate (only used in BSE potential expansion for the automatic selection of shape parameter Alpha) | |
Public Member Functions inherited from smile::CPotentialSH | |
CPotentialSH (size_t _Ncoefs_angular) | |
virtual SYMMETRYTYPE | symmetry () const |
returns symmetry type of this potential | |
virtual double | Rho (double X, double Y, double Z, double t=0) const |
returns density at given coordinates, this should obviously be overriden in derivative classes | |
virtual double | Phi (double X, double Y, double Z, double t=0) const |
Return potential at a given spatial point (possibly a time-varying one). More... | |
virtual void | Force (const double xyz[N_DIM], const double t, double *force, double *forceDeriv=NULL) const |
common function for all derivative classes | |
size_t | getNcoefs_angular () const |
return l_max – the order of angular expansion | |
Public Member Functions inherited from smile::CDensity | |
virtual double | Mass (const double r) const |
returns mass inside given radius (approximately! not necessary to integrate density over sphere, just a rough estimate used e.g. in choosing radial nodes of Schwarzschild grid) | |
virtual double | totalMass () const |
returns estimated M(r=infinity) or -1 if mass is infinite | |
double | getRadiusByMass (const double m) const |
solves for Mass(r)=m | |
void | getRadiiByMass (const vectord &masses, vectord *radii) const |
solves for Mass(r)=m for an array of sorted values of m (more efficient than doing it one-by-one) | |
bool | checkMassMonotonic () const |
safety measure: check (roughly) that mass is increasing with radius | |
bool | checkDensityNonzero () const |
another safety measure: check that density doesn't drop to zero along any of three axes (important to assess spherical-harmonic approximation quality) | |
Static Public Member Functions | |
static const char * | myName () |
Private Member Functions | |
virtual void | computeSHCoefs (const double r, double coefsF[], double coefsdFdr[], double coefsd2Fdr2[]) const |
The function that computes spherical-harmonic coefficients for potential and its radial (first/second) derivative at given radius. More... | |
void | prepareCoefsAnalytic (double norm, double q, double p) |
called from the constructor to compute coefs for the given density profile | |
Private Attributes | |
const double | Gamma |
scale-free profile exponent | |
vectord | SHcoefs |
coefficients of angular expansion | |
Additional Inherited Members | |
Public Types inherited from smile::CDensity | |
enum | POTENTIALTYPE { PT_UNKNOWN, PT_DIRECT, PT_COMPOSITE, PT_COEFS, PT_NB, PT_BSE, PT_BSECOMPACT, PT_SPLINE, PT_CYLSPLINE, PT_LOG, PT_HARMONIC, PT_SCALEFREE, PT_SCALEFREESH, PT_SPHERICAL, PT_DEHNEN, PT_MIYAMOTONAGAI, PT_FERRERS, PT_PLUMMER, PT_ISOCHRONE, PT_PERFECTELLIPSOID, PT_NFW, PT_SERSIC, PT_EXPDISK, PT_ELLIPSOIDAL, PT_MGE } |
list of all existing types of density or density/potential models, each of them implemented in its own class More... | |
enum | SYMMETRYTYPE { ST_NONE = 0, ST_REFLECTION = 1, ST_PLANESYM = 2, ST_ZROTSYM = 4, ST_SPHSYM = 8, ST_TRIAXIAL = ST_REFLECTION | ST_PLANESYM, ST_AXISYMMETRIC = ST_TRIAXIAL | ST_ZROTSYM, ST_SPHERICAL = ST_AXISYMMETRIC | ST_SPHSYM, ST_DEFAULT = ST_TRIAXIAL } |
Type of symmetry. More... | |
Protected Member Functions inherited from smile::CPotentialSH | |
void | assignlmrange () |
assigns the above variables based on mysymmetry, should be called whenever mysymmetry has changed | |
Protected Attributes inherited from smile::CPotentialSH | |
size_t | Ncoefs_angular |
l_max, the order of angular expansion (0 means spherically symmetric model) | |
SYMMETRYTYPE | mysymmetry |
may have different type of symmetry | |
int | lmax |
int | lstep |
int | mmin |
int | mmax |
int | mstep |
range of angular coefficients used for given symmetry | |
angular expansion of scale-free potential in spherical harmonics
|
inlinevirtual |
Return a pointer to a copy of this instance of potential.
A standard copy constructor or assignment is disabled because of different amount of data needed to be copied in different derived classes).
Implements smile::CPotential.
|
privatevirtual |
The function that computes spherical-harmonic coefficients for potential and its radial (first/second) derivative at given radius.
Must be implemented in derived classes, and is used in evaluation of potential and forces; unnecessary coefficients are indicated by passing NULL for coefs** and should not be computed.
Implements smile::CPotentialSH.