/*ipoint returns pointer to any energy within energy mesh */ #include "cddefines.h" #include "fillnu.h" #include "showme.h" #include "ipoint.h" long ipoint(double freq) { long int i, ipoint_v; # ifdef DEBUG_FUN fputs( "<+>ipoint()\n", debug_fp ); # endif if( freq < fillnu.filbnd[0] || freq > fillnu.filbnd[fillnu.nrange] ) { fprintf( ioQQQ, " ipoint:\n" ); fprintf( ioQQQ, " The freq array is not defined at nu=%11.3e. The bounds are%11.3e%11.3e\n", freq, fillnu.filbnd[0], fillnu.filbnd[fillnu.nrange] ); fprintf( ioQQQ, " ipoint is aborting to get trace, to find how this happened\n" ); ShowMe(); abort(); } for( i=0; i < fillnu.nrange; i++ ) { if( freq >= fillnu.filbnd[i] && freq <= fillnu.filbnd[i+1] ) { ipoint_v = (long int)(log10(freq/fillnu.filbnd[i])/fillnu.fildel[i] + 1.0 + fillnu.ifill0[i]); # ifdef DEBUG_FUN fputs( " <->ipoint()\n", debug_fp ); # endif return( ipoint_v ); } } fprintf( ioQQQ, " IPOINT logic error, energy=%10.2e\n", freq ); puts( "[Stop in ipoint]" ); exit(1); }