SMILE  v2.5
Schwarzschild Modelling Interactive expLoratory Environment
Classes | Namespaces
potential.h File Reference

Classes for computing potential, forces and density for various mass models. More...

#include "common.h"
#include <map>
#include <gsl/gsl_spline.h>
#include <interp2d_spline.h>
Include dependency graph for potential.h:
This graph shows which files directly or indirectly include this file:

Classes

class  smile::CDensity
 Base class defining density model (without corresponding potential). More...
 
class  smile::CDensityPlummer
 Plummer density profile, triaxial. More...
 
class  smile::CDensityIsochrone
 Isochrone density profile, triaxial. More...
 
class  smile::CDensityPerfectEllipsoid
 Triaxial Perfect Ellipsoid density profile. More...
 
class  smile::CDensityNFW
 modified Navarro-Frenk-White density profile, triaxial. More...
 
class  smile::CDensitySersic
 Sersic profile, triaxial. More...
 
class  smile::CDensityExpDisk
 Exponential disk with several variants of vertical profile and spiral structure. More...
 
class  smile::CDensityEllipsoidal
 Ellipsoidal model. More...
 
class  smile::CDensityMGE
 Multi-Gaussian expansion of a triaxial density profile. More...
 
struct  smile::CDensityMGE::CGaussian
 defines one component of the multi-gaussian expansion More...
 
class  smile::CPotential
 base class for potential-density model including potential derivatives (=forces) More...
 
class  smile::CPotentialComposite
 A composite potential which consists of several other potential types, plus a possible black hole and a rotating reference frame. More...
 
class  smile::CPotentialLog
 Logarithmic potential, with possible core. More...
 
class  smile::CPotentialHarmonic
 Potential of a constant-density (harmonic) core with different frequencies of oscillations in three directions. More...
 
class  smile::CPotentialSpherical
 Spherically-symmetric arbitrary density profile potential provided by CMassModel. More...
 
class  smile::CPotentialMiyamotoNagai
 Miyamoto-Nagai axisymmetric potential; equivalent to Plummer if A=0. More...
 
class  smile::CPotentialFerrers
 Ferrers density profile (with finite size R and density (1-(r/R)^2)^2). More...
 
class  smile::CPotentialDehnen
 Dehnen(1993) double power-law model. More...
 
class  smile::CPotentialSH
 parent class for all potential expansions based on spherical harmonics for angular variables More...
 
class  smile::CPotentialBSE
 basis-set expansion on the Zhao(1996) basis set (alpha models) More...
 
class  smile::CPotentialBSECompact
 basis-set expansion using spherical Bessel functions (e.g.Allen et al.1990) More...
 
class  smile::CPotentialSpline
 spherical-harmonic expansion of potential with coefficients being spline functions of radius More...
 
class  smile::CPotentialDirect
 Direct computation of potential for any density profile, using double integration over space. More...
 
class  smile::CPotentialCylSpline
 angular expansion of potential in azimuthal angle with coefficients being 2d spline functions of R,z More...
 
class  smile::CPotentialScaleFree
 simple power-law potential/density pair: rho ~ r^-gamma More...
 
class  smile::CPotentialScaleFreeSH
 angular expansion of scale-free potential in spherical harmonics More...
 
class  smile::CPotentialNB
 frozen N-body potential calculated by tree-code algorithm (based on hackcode1.c) More...
 
struct  smile::CPotentialNB::node
 NODE: data common to BODY and CELL structures. More...
 
struct  smile::CPotentialNB::cell
 CELL: structure used to represent internal nodes of tree. More...
 
struct  smile::CConfigPotential
 structure that contains parameters for all possible potentials More...
 

Namespaces

 smile
 common namespace for all core SMILE classes, functions and variables
 

Functions

Correspondence between potential/density names and corresponding classes
const char * smile::getPotentialNameByType (CDensity::POTENTIALTYPE type)
 return the name of the potential of a given type, or empty string if unavailable
 
const char * smile::getDensityNameByType (CDensity::POTENTIALTYPE type)
 return the name of the density of a given type, or empty string if unavailable
 
const char * smile::getSymmetryNameByType (CDensity::SYMMETRYTYPE type)
 return the name of the symmetry of a given type, or empty string if unavailable
 
CDensity::POTENTIALTYPE smile::getPotentialTypeByName (const std::string &PotentialName)
 return the type of the potential model by its name, or PT_UNKNOWN if unavailable
 
CDensity::POTENTIALTYPE smile::getDensityTypeByName (const std::string &DensityName)
 return the type of the density model by its name, or PT_UNKNOWN if unavailable
 
CDensity::SYMMETRYTYPE smile::getSymmetryTypeByName (const std::string &SymmetryName)
 return the type of symmetry by its name, or ST_DEFAULT if unavailable
 
const char * smile::coefFileExtension (CDensity::POTENTIALTYPE pottype)
 return file extension for writing the coefficients of potential of the given type
 
CDensity::POTENTIALTYPE smile::coefFileType (const std::string &fileName)
 find potential type by file extension
 
Various convenience functions for potential
template<typename NumT >
double smile::totalEnergy (const CPotential *potential, const CPosVelPoint< NumT > &point, double Omega=0, double t=0)
 Convenience function to return the total energy (or Jacobi integral if Omega!=0) for a given position+velocity point. More...
 
double smile::longAxisRadius (const CPotential *potential, double E, double Omega=0)
 Convenience function to find the maximal elongation of long-axis orbit of given energy. More...
 
double smile::findIntersection (const CPotential *potential, double E, double X, double Y, double Z, double Omega=0)
 Find the location of the equipotential surface in a given direction: solve for k such that Phi(k*X, k*Y, k*Z) = E . More...
 
void smile::findLagrangianPoints (const CPotential *potential, double Omega, double *L1X, double *L4Y)
 Find the location of maximum of the effective potential in rotating frame; output the distance to such point along x axis in L1X and along y axis in L4Y (Lagrangian points)
 

Detailed Description

Classes for computing potential, forces and density for various mass models.

Author
EV
Date
2009-2015

This file defines several classes of two kind:

There are several flexible general-purpose potential representations, which can take an arbitrary density profile as an input; moreover there are at least two flexible density parametrizations suitable to represent almost anything one may need. If, nevertheless, you want to add a new density model, the necessary steps are summarized below: