SMILE  v2.5
Schwarzschild Modelling Interactive expLoratory Environment
Public Member Functions | Static Public Member Functions | Private Attributes | List of all members
smile::CPotentialDehnen Class Reference

Dehnen(1993) double power-law model. More...

#include <potential.h>

Inheritance diagram for smile::CPotentialDehnen:
Inheritance graph
[legend]
Collaboration diagram for smile::CPotentialDehnen:
Collaboration graph
[legend]

Public Member Functions

 CPotentialDehnen (double _mass, double _scalerad, double _q, double _p, double _Gamma)
 
virtual CPotentialclone () 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
 
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
 Compute forces and, optionally, force derivatives at a given point. More...
 
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::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 Attributes

const double mass
 total mass of the model
 
const double scalerad
 scale radius
 
const double q
 
const double p
 axis ratio (y/x and z/x) of equidensity surfaces
 
const double Gamma
 cusp exponent for Dehnen potential
 

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...
 

Detailed Description

Dehnen(1993) double power-law model.

Member Function Documentation

virtual CPotential* smile::CPotentialDehnen::clone ( ) const
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.

void smile::CPotentialDehnen::Force ( const double  xyz[N_DIM],
const double  t,
double *  force,
double *  forceDeriv = NULL 
) const
virtual

Compute forces and, optionally, force derivatives at a given point.

Parameters
[in]xyz- coordinates of the point to compute forces (array of 3 numbers)
[in]t- time to compute forces (matters only if potential is time-dependent)
[out]force- computed values of -d Phi/d x_i; output array must exist and contain N_DIM values.
[out]forceDeriv- if not NULL, then also compute the second derivatives of potential (which is a symmetric matrix of size N_DIM^2, thus the array must be of size N_DIM*(N_DIM+1)/2 ): first 3 values contain $ -d^2 \Phi/d x_i^2 $, second three contain mixed derivatives $ -d^2 \Phi/d x_1 d x_2, -d^2 \Phi/d x_2 d x_3, -d^2 \Phi/d x_3 d x_1 $.

Implements smile::CPotential.

double smile::CPotentialDehnen::Phi ( double  X,
double  Y,
double  Z,
double  t = 0 
) const
virtual

Return potential at a given spatial point (possibly a time-varying one).

Implements smile::CPotential.


The documentation for this class was generated from the following files: