00001
00002
00003
00004 #include "cddefines.h"
00005 #include "dense.h"
00006 #include "parse.h"
00007
00008 void ParseFluc(char *chCard )
00009 {
00010 bool lgEOL;
00011 long int i;
00012 double flmax,
00013 flmin,
00014 period,
00015 temp;
00016
00017 DEBUG_ENTRY( "ParseFluc()" );
00018
00019
00020
00021 if( nMatch("ABUN",chCard) )
00022 {
00023
00024 dense.lgDenFlucOn = false;
00025 }
00026 else
00027 {
00028
00029 dense.lgDenFlucOn = true;
00030 }
00031
00032
00033 if( nMatch("COLU",chCard) )
00034 {
00035
00036 dense.lgDenFlucRadius = false;
00037 }
00038 else
00039 {
00040
00041 dense.lgDenFlucRadius = true;
00042 }
00043
00044 i = 5;
00045
00046 period = pow(10.,FFmtRead(chCard,&i,INPUT_LINE_LENGTH,&lgEOL));
00047 dense.flong = (float)(6.2831853/period);
00048 temp = FFmtRead(chCard,&i,INPUT_LINE_LENGTH,&lgEOL);
00049
00050
00051 flmax = pow(10.,temp);
00052
00053
00054 flmin = pow(10.,FFmtRead(chCard,&i,INPUT_LINE_LENGTH,&lgEOL));
00055 if( flmax/flmin > 100. )
00056 {
00057 fprintf( ioQQQ, "This range of density probably will not work.\n" );
00058 }
00059 if( flmax > 1e15 )
00060 {
00061 fprintf( ioQQQ, "These parameters look funny to me. Please check Hazy.\n" );
00062 }
00063 if( lgEOL || (flmin > flmax) )
00064 {
00065 fprintf( ioQQQ, "There MUST be three numbers on this line.\n" );
00066 fprintf( ioQQQ, "These must be the period(cm), max, min densities, all logs, in that order.\n" );
00067 puts( "[Stop in getfluc]" );
00068 cdEXIT(EXIT_FAILURE);
00069 }
00070
00071
00072 dense.flcPhase = (float)FFmtRead(chCard,&i,INPUT_LINE_LENGTH,&lgEOL);
00073
00074
00075 dense.cfirst = (float)((flmax - flmin)/2.);
00076 dense.csecnd = (float)((flmax + flmin)/2.);
00077
00078
00079 ASSERT( dense.cfirst < dense.csecnd );
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092 if( dense.lgDenFlucOn )
00093 {
00094 strcpy( dense.chDenseLaw, "SINE" );
00095
00096
00097 dense.gas_phase[ipHYDROGEN] = dense.cfirst*(float)cos(dense.flcPhase) + dense.csecnd;
00098 dense.gas_phase[ipHYDROGEN] = (float)log10(dense.gas_phase[ipHYDROGEN]);
00099 }
00100
00101 DEBUG_EXIT( "ParseFluc()" );
00102 return;
00103 }
00104