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

Variant of Schwarzschild density data object based on basis-set expansion in terms of Zhao(1995) basis set for density of both required profile and of orbits. More...

#include <schwarzschild.h>

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

Public Member Functions

 CSchwDataDensSHBSE (const CDensity *density, size_t _Nang, size_t _Nrad, double _Alpha)
 
virtual SCHWDATATYPE dataType () const
 descendant classes return their type
 
virtual std::string dataName () const
 string identificator of the class
 
virtual void computeDensityData (const CPointMassSet< double > &traj, vectord *data) const
 evaluate coefs for orbit trajectory data, called from COrbitRuntimeSchwSH, implemented differently in derived classes
 
virtual double getConstraintNormFactor (size_t index) const
 this function is necessary because the values of coefficients may span many orders of magnitude, especially for high alpha. More...
 
virtual void getCoefDecomposition (size_t index, double *n, int *l, int *m) const
 convenience function returning n,l,m for a given coef.index
 
- Public Member Functions inherited from smile::CSchwDataDensSH
 CSchwDataDensSH (const CDensity *density, size_t _Nang)
 
virtual size_t numConstraints () const
 number of constraints that this kind of data object handles
 
virtual double getConstraint (size_t index) const
 return the value of the given constraint
 
size_t getNumCoefsAngularExpansion () const
 return number of coefficients in angular spherical-harmonic expansion
 
- Public Member Functions inherited from smile::CSchwDataBasicDens
 CSchwDataBasicDens (const CDensity *density)
 
virtual double getOrbitConstraint (size_t index, const CSchwInformation *info) const
 decode constraint value from an information object stored for a given orbit
 
virtual bool isSchwInformationCorrect (const CSchwInformation *info) const
 check compatibility of information object for an orbit with this data object
 

Static Public Member Functions

static const char * myName ()
 

Private Attributes

const size_t Nrad
 number of radial basis functions
 
double Alpha
 parameter controlling the form of Zhao(1995) basis functions
 

Additional Inherited Members

- Public Types inherited from smile::CBasicSchwData
enum  SCHWDATATYPE {
  SD_UNKNOWN =0, SD_DENS =0x100, SD_KINEM =0x200, SD_DENS_SPATIAL_GRID =0x40,
  SD_DENS_SPHERICAL_HARMONIC =0x80, SD_DENS_GRIDCLASSIC =SD_DENS | SD_DENS_SPATIAL_GRID | 1, SD_DENS_GRIDCYLINDRICAL =SD_DENS | SD_DENS_SPATIAL_GRID | 2, SD_DENS_SHBSE =SD_DENS | SD_DENS_SPHERICAL_HARMONIC | 3,
  SD_DENS_SHMESH =SD_DENS | SD_DENS_SPHERICAL_HARMONIC | 4, SD_KINEM_SHELL =SD_KINEM| 1, SD_KINEM_ANGMOMDIST =SD_KINEM| 2
}
 Lists all possible variants of data objects. More...
 
- Protected Attributes inherited from smile::CSchwDataDensSH
const size_t Nang
 order of expansion in angular harmonics (lmax)
 
vectord coefConstraints
 required constraints of the model (specified by descendant classes)
 
- Protected Attributes inherited from smile::CSchwDataBasicDens
double totalMass
 

Detailed Description

Variant of Schwarzschild density data object based on basis-set expansion in terms of Zhao(1995) basis set for density of both required profile and of orbits.

Nrad+1 is the number of radial functions and Nang is the order of angular expansion in spherical harmonics, the number of angular coefs for each radial function is (Nang/2+1)*(Nang/2+2)/2. Only even non-negative harmonics in l,m are used because of triaxial symmetry. The density profile is thus fitted in 'nonlocal' sense. Alpha is the parameter controlling the family of basis functions, same as in CPotentialBSE. Note: the potential in which the model is evolved, needs not to be itself a BSE expansion, but if it is, then the model coefs are initialized from the potential rather than by computing integrals over density (which are expensive).

Member Function Documentation

double smile::CSchwDataDensSHBSE::getConstraintNormFactor ( size_t  index) const
virtual

this function is necessary because the values of coefficients may span many orders of magnitude, especially for high alpha.

To ensure a more uniform scaling of penalties for constraint violation, the scaling function is introduced. The expression below is based on a number of `test cases' and is very approximate (within a few orders of mag.)

Implements smile::CBasicSchwData.


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