UltraScan III
us_eqmath.h
Go to the documentation of this file.
1 #ifndef US_EQMATH_H
2 #define US_EQMATH_H
3 
4 #include <QtCore>
5 
6 #include "us_extern.h"
7 #include "us_dataIO.h"
8 #include "us_matrix.h"
9 #include "us_math2.h"
10 #include "us_globeq_data.h"
11 
12 #ifndef DbgLv
13 #define DbgLv(a) if(dbg_level>=a)qDebug()
14 #endif
15 
16 class US_EqMath : public QObject
17 {
18  Q_OBJECT
19 
20  public:
21  US_EqMath( QVector< US_DataIO::EditedData >&,
22  QVector< ScanEdit >&, QVector< EqScanFit >&, EqRunFit& );
23 
24  void init_params ( int, bool,
25  QList< double >&, QList< double >& );
26  void init_fit ( int, int, FitCtrlPar& );
27  int calc_jacobian ( void );
28  double calc_testParameter ( double );
29  double linesearch ( void );
30  void calc_B ( void );
31  double calc_residuals ( void );
32  int calc_model ( double* );
33  void genLeastSquaresOrd2 ( double**, int, double*, double** );
34  void guess_mapForward ( double* );
35  void parameter_mapBackward( double* );
36  void calc_runs ( void );
37  void calc_integral ( void );
38 
39  private:
40  QVector< US_DataIO::EditedData >& dataList;
41  QVector< ScanEdit >& scedits;
42  QVector< EqScanFit >& scanfits;
44 
45  QVector< int > v_setpts; // Set points vector
46  QVector< int > v_setlpts; // Set log points vector
47 
48  QVector< double > v_yraw; // Y raw values vector
49  QVector< double > v_yguess; // Y guesses vector
50  QVector< double > v_ydelta; // Y deltas vector
51  QVector< double > v_BB; // B vector
52  QVector< double > v_guess; // Guesses vector
53  QVector< double > v_tguess; // Test guesses vector
54  QVector< double > v_jacobi; // Jacobian matrix values vector
55  QVector< double > v_info; // Information matrix values vector
56  QVector< double > v_LLtrns; // LL transpose matrix values vector
57  QVector< double > v_dcr2; // dcr2 matrix values vector
58  QVector< double > v_dlncr2; // dlncr2 matrix values vector
59  QVector< double > v_lncr2; // lncr2 matrix values vector
60 
61  QVector< double* > m_jacobi; // Jacobian matrix
62  QVector< double* > m_info; // Information matrix
63  QVector< double* > m_LLtrns; // LL transpose matrix
64  QVector< double* > m_dcr2; // dcr2 matrix
65  QVector< double* > m_dlncr2; // dlncr2 matrix
66  QVector< double* > m_lncr2; // lncr2 matrix
67 
68  double* d_jacobi; // Jacobian data array
69  double* d_info; // Information data array
70  double* d_LLtrns; // LL transpose data array
71  double* d_dcr2; // dcr2 data array
72  double* d_dlncr2; // dlncr2 data array
73  double* d_lncr2; // lncr2 data array
74 
75  int* setpts; // Set points array
76  int* setlpts; // Set log points array
77  double* y_raw; // Y raw values array
78  double* y_guess; // Y guesses array
79  double* y_delta; // Y deltas array
80  double* BB; // B array
81  double* guess; // Guesses array
82  double* tguess; // Test guesses array
83  double** jacobian; // Jacobian matrix array
84  double** info; // Information matrix array
85  double** LLtr; // LL transpose matrix array
86  double** dcr2; // dcr2 matrix array
87  double** dlncr2; // dlncr2 matrix array
88  double** lncr2; // lncr2 matrix array
89 
90  int dbg_level;
91  int modelx; // Model type index
92  int nlsmeth; // NLS method index
93  int ntpts; // Number of total points
94  int ndsets; // Number of data sets
95  int nfpars; // Number of data sets
96  int ffitx; // First fit scan index
97  int nspts; // Number of set points
98  int nslpts; // Number of set log points
99 
100  private slots:
101  bool Cholesky_DecompOrd2 ( double** );
102  bool Cholesky_SolveSysOrd2( double**, double* );
103  bool isNan( double );
104  double calc_bottom( double );
105 };
106 #endif
107