SMILE
v2.5
Schwarzschild Modelling Interactive expLoratory Environment
|
Class that provides all core computational functionality. More...
#include <core.h>
Signals | |
void | signalTimer () |
emitted regularly during orbit library integration, to update progress info | |
void | signalOrbitFinished () |
emitted when orbit integration finished | |
void | signalOrbitLibraryFinished () |
emitted when the orbit library integration is finished (for the frequency map or Schwarzschild orbit library) | |
void | signalSchwOptimizationFinished (const QString &result) |
emitted when Schwarzschild optimization finished | |
void | signalNbodyReintegrationFinished () |
emitted upon finish of reintegrating orbits for nbody export (if it was necessary to get more sampling points) | |
void | signalNbodyExportFinished (const QString &result) |
emitted when export to nbody model is finished | |
void | signalStopOrbitLibrary () |
emitted when the user cancels orbit library integration; transmitted to the worker thread objects | |
void | signalStopExportNbody () |
emitted when the user stops export to Nbody model | |
Public Member Functions | |
CSmileCore () | |
construct the object and set default values for internal state variables | |
~CSmileCore () | |
destroy the object | |
bool | loadSettings (const std::string &fileName="") |
load configuration data (at start - from predefined file smile.ini, later - when loading orbit library) | |
void | saveSettings (const std::string &fileName="") |
store configuration data (when storing orbit library, or at exit, if demanded in GUI) | |
void | initPotential () |
create a new instance of potential specified by configPotential | |
void | initDensity () |
initialize the density model (it may be the same as potential, or just a subset of it) | |
void | initIC () |
set up initial conditions for a single orbit integration (calc E from X,Y,Z or vice-versa, calc timeUnit, etc) | |
void | startOrbit () |
start thread that runs single orbit integration | |
void | buildFreqMapIC (double energy, bool useExistingIC) |
create initial conditions for orbit library for frequency map at given energy | |
void | buildSchwIC (bool useExistingIC) |
create initial conditions for orbit library for Schwarzschild model | |
void | startOrbitLibrary (const char *finishSignal) |
start several threads to integrate orbits in the orbit library | |
void | schwStartOptimization (CBasicSchwModel::MODELTYPE modeltype) |
start thread that solves Schwarzschild optimization problem | |
void | schwExportNbody (int numPoints, const QString &fileName, const QString &fileFormat, int numBinsRefine) |
export Schw model to Nbody model | |
bool | importOrbit (const QString &fileName) |
read trajectory from a text file and assign it to the current orbit | |
bool | exportOrbit (const QString &fileName) |
export current orbit into a text file | |
bool | exportPotential (const QString &fileName, size_t indComp=0) |
export potential file (values of potential and forces in certain points of space, for statistics) | |
bool | importOrbitLib (const QString &fileName, bool withModelData) |
load orbit library from a text file, possibly with Schwarzschild data from an accompanying binary file | |
bool | exportOrbitLib (const QString &fileName, bool withModelData) |
save orbit library to a text file, possibly with Schwarzschild data | |
bool | exportSchwModelStats (const QString &fileName) |
export statistical information about the model | |
bool | isOrbitIntRunning () const |
inform whether a single orbit integration is running (in a separate thread) | |
bool | isOrbitLibRunning () const |
inform whether the orbit library integration is in progress | |
bool | isSchwOptRunning () const |
inform whether the optimization is in progress (in a helper thread) | |
bool | isExportNbodyRunning () const |
inform whether export to Nbody model is in progress (at any stage) | |
Public Attributes | |
CConfigCore | configCore |
global parameters of the program | |
std::vector< CConfigPotential > | configPotential |
parameters related to the potential | |
CConfigOrbit | configOrbit |
parameters related to orbit integration | |
CPosVelPoint< double > | initCond |
initial conditions for a single orbit | |
double | initCondE |
energy corresponding to initial conditions | |
double | timeUnit |
orbital period for the given energy | |
bool | useICe |
whether to use energy as an initial condition instead of position/velocity (applies to freq.map) | |
QString | WorkDir |
current working directory (for GUI file dialogs) | |
QString | TempDir |
directory for exchanging data with external programs (qdelaunay, bpmpd) | |
QString | AppDir |
directory where the application executable is located and external programs are searched for | |
const CPotential * | potential |
instance of potential used in all calculations, created by initPotential() | |
const CDensity * | density |
density for the Schwarzschild model; may be different from the potential | |
COrbit * | orbit |
current orbit | |
COrbitLibrary * | orbitlib |
library of orbits (for frequency map and Schwarzschild model) | |
vectorSchwData | schwData |
Schwarzschild data objects (density and kinematic constraints) | |
Private Slots | |
void | coreOrbitFinished () |
called when single orbit integration is done; emits signalOrbitFinished() | |
void | coreOrbitLibraryFinished () |
called upon finish of last thread in building orbit library for frequency map or Schw model; stops timers, clears unused orbits and emits signalOrbitLibraryFinished() | |
void | coreSchwOptimizationFinished (const QString &result) |
called upon finish of Schwarzschild optimization; destroys the model object and emits signalSchwOptimizationFinished() | |
void | coreNbodyExportFinished (const QString &result) |
called when export to nbody model is finished; clears the filename and emits signalNbodyExportFinished() | |
void | coreNbodyExport () |
perform actual work on export to nbody file. More... | |
Private Member Functions | |
void | initSchwData () |
create a set of schwData objects specified by config->modeltype | |
bool | exportPotentialAtPoints (const CPotential *poten, const QString &fileName, const vectord points[N_DIM], int blockSize=0) |
actually do export potential, forces and density at given set of points | |
virtual void | timerEvent (QTimerEvent *) |
to display progress indicator in orbit library integration | |
Private Attributes | |
int | maxNumThread |
number of concurrent threads in orbit integration (set in ini file or automatically) | |
int | orbitLibTimer |
timer ID for displaying progress in orbit library integration; set to 0 when no integration is in progress | |
bool | orbitIntRunning |
set to true for the duration of single orbit integration | |
CBasicSchwModel * | schwModel |
instance of Schw model object internally created for the duration of optimization | |
COrbitLauncher * | launcherOrbit |
instance of orbit launcher for a single orbit integration | |
COrbitLauncher * | launcherLib |
instance of orbit launcher for the orbit library | |
COrbitRuntimeTrajSampleCreator * | trajSampleCreator |
pointer to the runtime function creator that collects trajectory samples (used in reintegration during export to Nbody) | |
int | numPointsNbodyExport |
number of points in Nbody model | |
QString | fileNameNbodyExport |
Nbody snapshot filename. If assigned, it means that the export is in progress. | |
QString | fileFormatNbodyExport |
format selector for Nbody snapshot | |
int | numBinsRefineNbodyExport |
if mass refinement in Nbody model is used, this is the number of mass bins | |
bool | firstCallNbodyExport |
flag signalling if the coreNbodyExport() was called for the first time or after reintegration | |
Class that provides all core computational functionality.
It contains configuration parameters and routines to load/save them in an ini file; routines for managing orbit library integration, Schwarzschild modelling and export of a model to an Nbody snapshot; manages import/export of data to text/binary files. This class is used in the console version - by CSmileConsole, and in the GUI - by CSmileGUI. Most computational tasks are performed in separate threads by worker objects; there are four of them:
|
privateslot |
perform actual work on export to nbody file.
The export consists of three stages: