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

The main GUI window class. More...

#include <gui.h>

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

Public Slots

void info (const QString &message)
 show message in the information area
 
void error (const QString &message)
 pop up an error message box
 

Signals

void stopOrbitLibrary ()
 raised if user pressed stop during orbit library integration
 
void stopExportNbody ()
 raised if user pressed stop during exporting to Nbody
 

Public Member Functions

 CSmileGUI (QWidget *parent=0, Qt::WFlags flags=0)
 create the CSmileCore object and various GUI elements, connect signals, load default settings
 
 ~CSmileGUI ()
 save settings on exit if the corresponding checkbox is turned on
 

Private Slots

void on_ButtonStart_clicked ()
 start an orbit with the current initial conditions
 
void on_ButtonRandom_clicked ()
 start an orbit with the current value of energy and random initial conditions
 
void timerEventCore ()
 refresh the progress bar during orbit library integration
 
void redrawPotential ()
 replot the potential/density figure on the "Potential" tab
 
void redrawPotentialB (bool)
 replot the potential/density figure if the parameter is true
 
void redrawOrbit (bool)
 redraw the current figure on the "Orbit" tab (trajectory or pericenter distribution)
 
void redrawFreqMap (bool)
 redraw the frequency map
 
void redrawSchwModel (bool)
 redraw the current plot on the "Schwarzschild model" tab
 
void refreshOrbitAndSpectrum ()
 compute spectrum for a given sub-interval of the orbit and update data on the spectrum and trajectory plots
 
void on_pushButton_refresh3dmesh_clicked ()
 redraw 3d rendering of the orbit as a solid body
 
void on_checkBox_usePS_stateChanged (int)
 toggle the usage of Poincare surface of section for integration of subsequent orbits
 
void on_ButtonClearPS_clicked ()
 clear Poincare plot
 
void on_ButtonFindPeriodic_clicked ()
 locate the periodic orbit closest to the current one, using the Poincare surface of section
 
void on_checkBox_freqLines_stateChanged (int)
 toggle the display of spectral lines on the spectrum plot
 
void on_radioButton_2d_toggled (bool)
 switch between 2d and 3d potentials
 
void on_comboBox_Lyapunov_currentIndexChanged (int)
 toggle the computation of Lyapunov exponent
 
void intTime_changed ()
 update integration time or steps per period
 
void PScoordChanged ()
 modify Poincare section coordinates
 
void fmparams_changed ()
 update frequency map parameters on user input
 
void smparams_changed ()
 update Schwarzschild model parameters on user input
 
void ccparams_changed ()
 update criteria for labelling orbits as regular or chaotic, after user input
 
void potentialChanged ()
 re-initialize potential when user changes potential parameters (if potential type is not BSE/Spline/Nbody)
 
void potentialIndexChanged ()
 index of potential component in the parameters panel has changed
 
void refreshPotentialComponentList ()
 fill the list of components on the potential plot tab and the potential parameters panel
 
void showHidePotentialParams ()
 depending on the current potential and density model, show only the relevant parameters in the right panel
 
void on_buttonInitPotential_clicked ()
 initialize potential for a computationally-intensive types (BSE/Spline/Nbody) when user presses "init potential" button
 
void integratorChanged ()
 update ODE integrator parameters
 
void ICchanged ()
 update initial conditions on user input
 
void chooseNbodyFile ()
 display the dialog window to open a file with Nbody snapshot or potential coefficients
 
void typeinNbodyFile ()
 called when user presses Enter in the input line for the Nbody snapshot file; if the file doesn't exist, pop up dialog for choosing the file, otherwise use the name that was typed in
 
void assignNbodyFile (QString fileName)
 initialize potential from an Nbody snapshot or coefficients file
 
void on_checkBox_fmExistingSS_stateChanged (int)
 toggle the usage of an existing orbit library for the start space in the Frequency Map
 
void on_checkBox_fmConfigSpace_stateChanged (int)
 in the Frequency map, toggle the display of orbits with nonzero weights only
 
void on_selectEnergyLevel_fm_valueChanged (int)
 display orbits from a given energy shell only in the frequency map
 
void on_selectEnergyLevel_sm_valueChanged (int)
 display orbits from a given energy shell only in the plot of Schwarzschild model coefficients
 
void on_spinBox_intervalCount_valueChanged (int)
 change the number of segments that a single orbit is divided into
 
void on_spinBox_IntervalNum_valueChanged (int)
 change the index of orbit segment
 
void on_radioButton_ICe_toggled (bool)
 switch between using energy or coordinates/velocities for the initial conditions of a single orbit
 
void PSclicked (const QwtDoublePoint &pos)
 assign the initial conditions by right-clicking Poincare plot
 
void FMclicked (const QwtDoublePoint &pos)
 select the nearest orbit in the frequency map plot
 
void SMclicked (const QwtDoublePoint &pos)
 display information about nearest coefficient of the Schwarzschild model
 
void SMHistoClicked (const QwtDoublePoint &pos)
 select the nearest orbit from the plot displaying orbit weights in the Schwarzschild model
 
void on_ButtonFreqMap_clicked ()
 create the orbit library for the Frequency Map
 
void on_ButtonSchwOrbitLib_clicked ()
 create the orbit library for the Schwarzschild model
 
void on_ButtonSchwLP_clicked ()
 run linear optimization solver for the Schwarzschild model
 
void on_ButtonSchwQP_clicked ()
 run quadratic optimization solver
 
void on_ButtonSchwNbody_clicked ()
 run the export of Schwarzschild model to an Nbody snapshot
 
void on_ButtonExportModelStats_clicked ()
 export statistics of Schwarzschild model coefficients
 
void on_ButtonExportPS_clicked ()
 export the Poincare surface of section to a text file
 
void on_ButtonImportSM_clicked ()
 import Schwarzschild model (orbit library plus binary data)
 
void on_ButtonExportSM_clicked ()
 export Schwarzschild model
 
void on_ButtonImportFM_clicked ()
 import orbit library for the Frequency map
 
void on_ButtonExportFM_clicked ()
 export orbit library
 
void on_ButtonImportOrbit_clicked ()
 import a trajectory from a text file
 
void on_ButtonExportOrbit_clicked ()
 export orbit trajectory to a text file
 
void on_ButtonExportPotential_clicked ()
 export potential/density profile to a text file
 
void on_ButtonPrint_clicked ()
 export the currently visible plot to a PS or PDF file
 
void CalcFinished ()
 called after the integration of a single orbit is done
 
void OrbitLibraryFinished ()
 called after the orbit library integration is done
 
void SchwOptimizationFinished (const QString &message)
 called when Schwarzschild optimization is finished with the given result message
 
void NbodyReintegrationFinished ()
 called when reintegration of high-weight orbits during the export to Nbody is finished
 
void NbodyExportFinished (const QString &message)
 called when the export of Schwarzschild model to an Nbody snapshot is finished
 

Private Member Functions

bool eventFilter (QObject *target, QEvent *Event)
 track 'Enter' keydown events and start single orbit integration in response
 
bool loadApplySettings (QString fileName="")
 load ini file (at start or along with orbit library) and modify the content of GUI controls
 
void updatePotentialSettings ()
 fill the potential parameters tab when the component index of a composite potential is changed
 
void drawFreqMapResonances ()
 draw several most important resonance lines on the frequency map plot
 
void addPoincareCurve (const CPoincareInformation *tps)
 add a new orbit to the Poincare surface of section
 
QString getOrbitPopulation (int numShell, bool useWeights) const
 calls corresponding function from orbit library, if it exists
 
void enableOrbitLibControls (bool enable)
 switch on or off some GUI controls for the duration of orbit library integration, optimization, or export to Nbody
 
virtual void timerEvent (QTimerEvent *)
 update orbit trajectory plot if orbit integration is taking too long
 

Static Private Member Functions

static void XYZtoXY (const double X, const double Y, const double Z, double *x, double *y)
 project start-space onto 2d plane
 

Private Attributes

Ui::CSmileGUIClass ui
 window interface elements
 
QwtPlot * PlotOrbit
 figure that displays single trajectory in 2d
 
QwtPlotCurve * CurveOrbit
 orbit trajectory
 
QwtPlotCurve * CurveEquipotential
 equipotential surface on the trajectory plot
 
QwtPlotZoomer * ZoomerOrbit
 pan/zoom the trajectory plot
 
QwtPlot * PlotOrbitParam
 figure that displays the distribution of pericenter radii for a single orbit
 
QwtPlotCurve * CurveOrbitParam
 curve displaying the pericenter distribution
 
QwtPlotZoomer * ZoomerOrbitParam
 pan/zoom the pericenter plot
 
QwtPlot * PlotPotential
 figure that displays potential, density or circular velocity as a function of radius
 
QwtPlotCurve * CurvePotential
 curve displaying the potential, density, circular velocity or one of frequencies
 
QwtPlotCurve * CurvePotential1
 additional curve displaying another frequency
 
QwtPlotCurve * CurvePotential2
 additional curve displaying third frequency
 
QwtPlotZoomer * ZoomerPotential
 pan/zoom the potential plot
 
QwtPlot * PlotPoincare
 figure that displays Poincare surface of section
 
QwtPlotZoomer * ZoomerPoincare
 pan/zoom the Poincare plot
 
QVector< QwtPlotCurve * > CurvesPoincare
 array of curves on the Poincare plot, one for each orbit previously displayed
 
QwtPlot * PlotFreq
 figure that displays the frequency spectrum of an orbit and the lines
 
QwtPlotCurve * CurveFreqX
 spectrum of oscillations in X direction
 
QwtPlotCurve * CurveFreqY
 spectrum of oscillations in Y direction
 
QwtPlotCurve * CurveFreqZ
 spectrum of oscillations in Z direction
 
QwtPlotCurve * CurveFreqPeaksP
 spectral lines detected with Hunter's precise method
 
QwtPlotCurve * CurveFreqPeaks
 spectral lines detected with more approximate method of Carpintero&Aguilar
 
QwtPlotZoomer * ZoomerFreq
 pan/zoom the spectrum plot
 
QwtPlot * PlotLyapunov
 figure that displays the estimate of the Lyapunov exponent of an orbit as a function of time
 
QwtPlotCurve * CurveDeviation
 magnitude of the deviation vector divided by time
 
QwtPlotCurve * CurveLyapunov
 finite-time estimate of Lyapunov exponent
 
QwtPlot * PlotFreqMap
 figure that displays the frequency map for the orbit library
 
QwtPlotCurve * CurveFreqMapR
 regular orbits on the frequency map
 
QwtPlotCurve * CurveFreqMapC
 chaotic orbits on the frequency map
 
QwtPlotZoomer * ZoomerFreqMap
 pan/zoom the frequency map
 
QwtPlot * PlotFreqMapHisto
 figure that displays cumulative distribution of orbits as a function of frequency or Lyapunov exponent
 
QwtPlotCurve * CurveFreqMapHisto
 cumulative distrubution of orbits
 
QwtPlot * PlotFreqMapSS
 figure that shows the start space (a regular set of orbits with the same energy)
 
QwtPlotCurve * CurveFreqMapSSR
 regular orbits on the start space plot
 
QwtPlotCurve * CurveFreqMapSSC
 chaotic orbits on the start space plot
 
QwtPlot * PlotSchw
 figure that shows coefficients of the Schwarzschild model
 
QwtPlotCurve * CurveSchwCellF
 feasible coefficients in the model
 
QwtPlotCurve * CurveSchwCellI
 infeasible coefficients in the model
 
QwtPlot * PlotSchwHisto
 figure that displays orbit weights in the Schwarzschild model or their cumulative distribution
 
QwtPlotCurve * CurveSchwHistoR
 weights of regular orbits
 
QwtPlotCurve * CurveSchwHistoC
 weights of chaotic orbits
 
Qwt3D::SurfacePlot * Plot3d
 3d plot of orbit trajectory
 
Qwt3D::TripleField trjpos
 3d trajectory, points
 
Qwt3D::CellField trjcells
 3d trajectory defined as a set of polygons (with only one cell)
 
CTriangThreadTriangThr
 the worker object to perform triangulation
 
CSmileCorecore
 the instance of core object holding all non-gui data
 
double maxdist
 max distance between adjacent points of trajectory (used in triangulation thread)
 
bool InternalRecalc
 indicate that modification of GUI controls is done not by user but internally, so do not react on this
 
double Eprev
 
double Lz2prev
 previous value of orbit energy and z-axis angular momentum (if difference is > Eeps, clear the Poincare section)
 
QString SchwModelResult
 text message returned by Schwarzschild modelling routine
 
int myTimerOrbit
 timer for single orbit integration
 
QTime timeOI
 measure time for orbit integration
 
double timeOIelapsed
 keep track of time used for orbit integration (not including analysis)
 
QTime timeFM
 measure time for frequency map calculation
 
size_t currentComponentIndex
 index of selected potential component in the potential parameters panel
 

Detailed Description

The main GUI window class.


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