SMILE
v2.5
Schwarzschild Modelling Interactive expLoratory Environment
|
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>
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 |
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).
|
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.