UltraScan III
us_astfem_math.h
Go to the documentation of this file.
1 #ifndef US_ASTFEM_MATH_H
3 #define US_ASTFEM_MATH_H
4 
5 #include "us_model.h"
6 #include "us_simparms.h"
7 #include "us_extern.h"
8 
9 #include <unistd.h>
10 
14 {
15  public:
16 
17  class MfemInitial;
18  class MfemScan;
19  class MfemData;
20 
24  static void interpolate_C0( MfemInitial&, MfemInitial& );
25 
30  static void interpolate_C0( MfemInitial&, double*, QVector< double >& );
31 
36  static void zero_2d ( int, int, double** );
37 
42  static void initialize_2d( int, int, double*** );
43 
47  static void clear_2d ( int, double** );
48 
52  static double maxval( const QVector< double >& );
53 
57  static double minval( const QVector< double >& );
58 
62  static double maxval( const QVector< US_Model::SimulationComponent >& );
63 
67  static double minval( const QVector< US_Model::SimulationComponent >& );
68 
74  static void initialize_3d( int, int, int, double**** );
75 
80  static void clear_3d ( int, int, double*** );
81 
89  static void tridiag ( double*, double*, double*,
90  double*, double*, int );
91 
99  static double cube_root ( double, double, double );
100 
106  static int GaussElim ( int, double**, double* );
107 
113  static double find_C1_mono_Nmer( int, double, double );
114 
120  static int interpolate ( MfemData&, MfemData&, bool );
121 
129  static int interpolate ( MfemData&, MfemData&, bool, int, int );
130 
139  static void QuadSolver ( double*, double*, double*, double*,
140  double*, double*, int);
141 
148  static void IntQT1 ( double* , double, double,
149  double**, double );
150 
157  static void IntQTm ( double* , double, double,
158  double**, double );
159 
166  static void IntQTn2 ( double* , double, double,
167  double**, double );
168 
175  static void IntQTn1 ( double* , double, double,
176  double**, double );
180  static void DefineFkp ( int, double** );
181 
185  static double AreaT ( double*, double* );
186 
193  static void BasisTS ( double, double, double*, double*, double*);
194 
201  static void BasisQS ( double, double, double*, double*, double*);
202 
211  static void BasisTR ( double*, double*,
212  double, double, double*, double*, double* );
213 
222  static void BasisQR ( double*, double, double,
223  double*, double*, double*, double );
224 
234  static double Integrand ( double, double, double, double,
235  double, double, double, double);
236 
240  static void DefineGaussian( int, double** );
241 
246  static void initSimData ( US_DataIO::RawData&,
247  US_DataIO::EditedData&, double );
248 
254  static double variance ( US_DataIO::RawData&,
256 
263  static double variance ( US_DataIO::RawData&,
265  QList< int > );
266 
273  static double calc_bottom ( double, double, double* );
274 
277  {
278  public:
279  QVector< double > radius;
280  QVector< double > concentration;
281  };
283 
285  class MfemScan
286  {
287  public:
288  double time;
289  double omega_s_t;
290  double temperature;
291  double rpm;
292  QVector< double > conc;
293  };
294 
297  class MfemData
298  {
299  public:
300  QString id;
301  int cell;
302  int channel;
303 
305  double wavelength;
306  double rpm;
307 
313 
332 
337 
339  double viscosity;
340  double density;
341  double vbar;
343  double vbar20;
344  double meniscus;
345  double bottom;
346  QVector< double> radius;
348  QVector< MfemScan > scan;
349  };
350 
353  {
354  public:
355  QVector< int > association;
356  QVector< int > GroupComponent;
357  };
358 
361  {
362  public:
364  QVector< int > assocs;
365  QVector< int > stoichs;
366  };
369 
372  {
373  public:
374  int simpoints;
375 
376  QVector< double > s;
377  QVector< double > D;
378  QVector< double > kext;
379  QVector< ComponentRole > role;
380  double pathlength;
382  double dt;
384  double omega_s;
385  double start_time;
386  double start_om2t;
389  double current_bottom;
391  int rg_index;
392 
394  QVector< int > local_index;
395 
398  QVector< US_Model::Association > association;
399  };
400 
401 };
402 #endif