00001
00002
00003 #include "cddefines.h"
00004 #include "predcont.h"
00005 #include "rfield.h"
00006
00007 t_PredCont::t_PredCont()
00008 {
00009
00010
00011
00012
00013
00014
00015
00016 p_val.reserve(100);
00017
00018 add(1275.,"MHz");
00019 add(1465.,"MHz");
00020 add(4535.,"MHz");
00021 add(4885.,"MHz");
00022 add(8435.,"MHz");
00023 add(8735.,"MHz");
00024 add(3.4,"cm");
00025 add(14965.,"MHz");
00026 add(22460.,"MHz");
00027 add(30.,"GHz");
00028 add(43340.,"MHz");
00029 add(7.445e-04,"Ryd");
00030 add(1.498e-03,"Ryd");
00031 add(2.211e-03,"Ryd");
00032 add(2.952e-03,"Ryd");
00033 add(3.677e-03,"Ryd");
00034 add(3.7501e-03,"Ryd");
00035 add(3.9915e-03,"Ryd");
00036 add(4.2543e-03,"Ryd");
00037 add(4.314e-03,"Ryd");
00038 add(4.6446e-03,"Ryd");
00039 add(5.162e-03,"Ryd");
00040 add(5.2462e-03,"Ryd");
00041 add(5.8079e-03,"Ryd");
00042 add(6.240e-03,"Ryd");
00043 add(7.3312e-03,"Ryd");
00044 add(7.9936e-03,"Ryd");
00045 add(8.7119e-03,"Ryd");
00046 add(9.6125e-03,"Ryd");
00047 add(9.77243e-03,"Ryd");
00048 add(1.1099e-02,"Ryd");
00049 add(1.2022e-02,"Ryd");
00050 add(1.29253e-02,"Ryd");
00051 add(2.2152e-02,"Ryd");
00052 add(3.92044e-02,"Ryd");
00053 add(5.54593e-02,"Ryd");
00054
00055
00056 add(6.1563e-02,"Ryd");
00057 add(6.3437e-02,"Ryd");
00058 add(8.1460e-02,"Ryd");
00059
00060
00061 add(0.1094,"Ryd");
00062 add(0.1128,"Ryd");
00063 add(0.14675,"Ryd");
00064 add(0.18653,"Ryd");
00065
00066
00067
00068
00069 add(0.246,"Ryd");
00070 add(0.254,"Ryd");
00071 add(0.375,"Ryd");
00072 add(0.38096,"Ryd");
00073 add(0.43994,"Ryd");
00074 add(0.44394,"Ryd");
00075 add(0.50811,"Ryd");
00076 add(0.57489,"Ryd");
00077 add(0.62487,"Ryd");
00078 add(0.67155,"Ryd");
00079 add(0.70244,"Ryd");
00080 add(0.72163,"Ryd");
00081 add(0.74812,"Ryd");
00082 add(0.76172,"Ryd");
00083 add(0.77551,"Ryd");
00084 add(0.79681,"Ryd");
00085 add(0.81859,"Ryd");
00086 add(0.8260,"Ryd");
00087 add(0.84859,"Ryd");
00088 add(0.85618,"Ryd");
00089 add(0.87967,"Ryd");
00090 add(1000.,"A");
00091
00092
00093
00094
00095
00096 add(0.985,"Ryd");
00097 add(1.015,"Ryd");
00098 add(1.199,"Ryd");
00099 add(1.299,"Ryd");
00100 add(1.4984,"Ryd");
00101 add(1.58441,"Ryd");
00102
00103
00104
00105
00106
00107 add(1.780,"Ryd");
00108 add(1.834,"Ryd");
00109 add(2.283,"Ryd");
00110 }
00111
00112 long t_PredCont::find(double energy, const char* unit) const
00113 {
00114 DEBUG_ENTRY( "t_PredCont::find()" );
00115
00116 for( size_t i=0; i < p_val.size(); ++i )
00117 if( fp_equal( p_val[i].get(unit), energy ) )
00118 return i;
00119 return -1;
00120 }
00121
00122 long t_PredCont::add(double energy, const char* unit)
00123 {
00124 DEBUG_ENTRY( "t_PredCont::add()" );
00125
00126 long ind = find(energy, unit);
00127 if( ind < 0 )
00128 {
00129 p_val.push_back( EnergyEntry(energy, unit) );
00130 ind = p_val.size()-1;
00131 }
00132 double eRyd = p_val[ind].Ryd();
00133 if( eRyd < rfield.emm || eRyd > rfield.egamry )
00134 {
00135 fprintf( ioQQQ, " The energy %g Ryd (%g %s) is not within the default Cloudy range\n",
00136 eRyd, energy, unit );
00137 fprintf( ioQQQ, " The energy must be between %g and %g Ryd\n",
00138 rfield.emm, rfield.egamry );
00139 cdEXIT(EXIT_FAILURE);
00140 }
00141 return ind;
00142 }