00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef _RATE_LOOKUP_H
00011 #define _RATE_LOOKUP_H
00012
00013 struct LookupRow
00014 {
00015 double* row;
00016 double fraction;
00017
00018 };
00019
00020 struct LookupColumn
00021 {
00022 LookupColumn() { ; }
00023 unsigned int column;
00024
00025 };
00026
00027 class LookupTable
00028 {
00029 public:
00030 LookupTable() { ; }
00031
00032 LookupTable(
00033 double min,
00034 double max,
00035 unsigned int nDivs,
00036 unsigned int nSpecies );
00037
00039 void addColumns(
00040 int species,
00041 const vector< double >& C1,
00042 const vector< double >& C2 );
00043
00044
00045
00046 void column(
00047 unsigned int species,
00048 LookupColumn& column );
00049
00054 void row(
00055 double x,
00056 LookupRow& row );
00057
00059 void lookup(
00060 const LookupColumn& column,
00061 const LookupRow& row,
00062 double& C1,
00063 double& C2 );
00064
00065 private:
00066
00067 vector< double > table_;
00068 double min_;
00069 double max_;
00070 unsigned int nPts_;
00071
00072
00073 double dx_;
00074
00075 unsigned int nColumns_;
00076 };
00077
00078 #endif // _RATE_LOOKUP_H