00001
00002
00003
00004 #include "cddefines.h"
00005 #include "physconst.h"
00006 #include "rfield.h"
00007 #include "radius.h"
00008 #include "parser.h"
00009
00010 void ParseF_nu(
00011 Parser &p,
00012 const char *chType,
00013 bool lgNU2)
00014 {
00015 double fr;
00016
00017 DEBUG_ENTRY( "ParseF_nu()" );
00018
00019
00020
00021 strcpy( rfield.chRSpec[p.m_nqh], chType );
00022
00023 rfield.totpow[p.m_nqh] = p.FFmtRead();
00024
00025
00026 if( rfield.totpow[p.m_nqh] > 37. &&
00027 strcmp(rfield.chRSpec[p.m_nqh],"SQCM") == 0 )
00028 {
00029 fprintf( ioQQQ, " This intensity is VERY large. Problems? Was luminosity intended??\n" );
00030 }
00031
00032 if( p.lgEOL() )
00033 {
00034 p.NoNumb("flux density");
00035 }
00036
00037 strcpy( rfield.chSpNorm[p.m_nqh], "FLUX" );
00038
00039
00040 rfield.range[p.m_nqh][0] = p.FFmtRead();
00041
00042
00043
00044 if( p.lgEOL() )
00045 {
00046 rfield.range[p.m_nqh][0] = HIONPOT;
00047 }
00048
00049 if( rfield.range[p.m_nqh][0] <= 0. )
00050 {
00051 rfield.range[p.m_nqh][0] = pow(10.,rfield.range[p.m_nqh][0]);
00052 }
00053
00054 if( lgNU2 )
00055 {
00056
00057 fr = log10(rfield.range[p.m_nqh][0]*FR1RYD);
00058 rfield.totpow[p.m_nqh] -= fr;
00059 }
00060
00061
00062
00063 if( strcmp(chType,"SQCM") == 0 && radius.Radius == 0. )
00064 {
00065
00066 radius.Radius = pow(10.,radius.rdfalt);
00067 }
00068
00069
00070 if( p.nMatch( "TIME" ) )
00071 rfield.lgTimeVary[p.m_nqh] = true;
00072
00073 ++p.m_nqh;
00074 if( p.m_nqh >= LIMSPC )
00075 {
00076 fprintf( ioQQQ, " Too many continua entered; increase LIMSPC\n" );
00077 cdEXIT(EXIT_FAILURE);
00078 }
00079 return;
00080 }