22 ASSERT( nTemps != 0 && nTrans != 0 );
27 if( chLine[0] ==
'!' || chLine[0] ==
'#' || chLine[0] ==
'\n' )
32 ASSERT( strlen( chLine ) > 0 );
36 char *chColltemp = strtok(chLine,
" \t\n");
37 while( chColltemp != NULL )
39 coll_rate_table.
temps.push_back( atof(chColltemp) );
40 chColltemp = strtok(NULL,
" \t\n");
44 nTemps = coll_rate_table.
temps.size();
46 ASSERT( (
unsigned)nTemps == coll_rate_table.
temps.size() );
51 for(
long ipHi=0; ipHi<nMolLevs; ipHi++ )
54 for(
long ipLo=0; ipLo<nMolLevs; ipLo++ )
66 if( chLine[0] ==
'!' || chLine[0] ==
'#' || chLine[0] ==
'\n' )
70 long ipHi = -1, ipLo = -1;
71 (*GetIndices)( ipHi, ipLo, chLine, i );
75 if( ipHi == -1 && ipLo == -1 )
79 if( ipLo >= nMolLevs || ipHi >= nMolLevs )
81 if( nTrans > 0 && ipTrans == nTrans )
90 ASSERT( ipLo == nMolLevs - 1);
100 for(
long j = 0; j < nTemps; ++j )
102 coll_rate_table.
collrates[ipHi][ipLo][j] =
103 (double)
FFmtRead( chLine, &i,
sizeof(chLine), &lgEOL );
108 FFmtRead( chLine, &i,
sizeof(chLine), &lgEOL );
112 enum {DEBUG_LOC=
false};
115 printf(
"The values of up and lo are %ld & %ld \n",ipHi,ipLo);
116 printf(
"The collision rates are");
117 for(
long i = 0; i < nTemps; ++i )
119 printf(
"\n %e", coll_rate_table.
collrates[ipHi][ipLo][i]);
125 if( nTrans > 0 && ipTrans == nTrans )
130 ASSERT( ipTrans == nTrans );
138 double ret_collrate = 0.;
140 if( rate_table.
temps.size() == 0 )
145 if( ftemp < rate_table.
temps[0] )
147 ret_collrate = rate_table.
collrates[ipHi][ipLo][0];
149 else if( ftemp > rate_table.
temps.back() )
151 ret_collrate = rate_table.
collrates[ipHi][ipLo][ rate_table.
temps.size()-1 ];
153 else if( rate_table.
temps.size() == 1 )
156 ret_collrate = rate_table.
collrates[ipHi][ipLo][0];
162 rate_table.
temps.size(),
167 return(ret_collrate);