00001
00002
00003
00004 #include "cddefines.h"
00005 #include "taulines.h"
00006 #include "opacity.h"
00007 #include "phycon.h"
00008 #include "secondaries.h"
00009 #include "pressure.h"
00010 #include "prt.h"
00011 #include "coolheavy.h"
00012 #include "thermal.h"
00013 #include "rfield.h"
00014 #include "dynamics.h"
00015 #include "mole.h"
00016 #include "rt.h"
00017 #include "hmi.h"
00018 #include "atomfeii.h"
00019 #include "yield.h"
00020 #include "ionbal.h"
00021 #include "atmdat.h"
00022 #include "grainvar.h"
00023 #include "hyperfine.h"
00024 #include "parse.h"
00025
00026 void ParseDont(char *chCard )
00027 {
00028 DEBUG_ENTRY( "ParseDont()" );
00029
00030 if( (nMatch( "21CM" , chCard ) || nMatch( "21 CM" , chCard )) &&
00031 nMatch( " LYA" , chCard ) && nMatch( "PUMP" , chCard ) )
00032 {
00033
00034 hyperfine.lgLya_pump_21cm = false;
00035 }
00036 else if( nMatch("ADVE",chCard) )
00037 {
00038
00039 if( nMatch("H-LI",chCard) )
00040 {
00041
00042 dynamics.lgISO[ipH_LIKE] = 0;
00043 }
00044 else if( nMatch("HE-L",chCard) )
00045 {
00046
00047 dynamics.lgISO[ipHE_LIKE] = 0;
00048 }
00049 else if( nMatch("META",chCard) )
00050 {
00051
00052 dynamics.lgMETALS = 0;
00053 }
00054 else if( nMatch("COOL",chCard) )
00055 {
00056
00057 dynamics.lgCoolHeat = 0;
00058 }
00059 else
00060 {
00061
00062 dynamics.lgISO[ipH_LIKE] = 0;
00063 dynamics.lgISO[ipHE_LIKE] = 0;
00064 dynamics.lgMETALS = 0;
00065 }
00066
00067 }
00068
00069 else if( nMatch("AUGE",chCard) )
00070 {
00071
00072 t_yield::Inst().kill_yield();
00073 phycon.lgPhysOK = false;
00074 }
00075
00076 else if( nMatch("BUFF",chCard) )
00077 {
00078
00079
00080
00081
00082
00083
00084 FILE *test = stderr;
00085 if( ioQQQ != test )
00086 {
00087
00088 fprintf( ioQQQ, " ioQQQ did not point to stdout, ignored NO BUFFERING command.\n" );
00089 }
00090
00091 }
00092
00093 else if( nMatch("CHAR",chCard) )
00094 {
00095
00096 atmdat.lgCTOn = false;
00097 phycon.lgPhysOK = false;
00098 }
00099
00100 else if( nMatch("CTHE",chCard) )
00101 {
00102
00103 atmdat.HCharHeatOn = 0.;
00104 phycon.lgPhysOK = false;
00105 }
00106
00107 else if( nMatch("COMP",chCard) )
00108 {
00109
00110 rfield.comoff = 0.;
00111 phycon.lgPhysOK = false;
00112 }
00113
00114 else if( nMatch("FEII",chCard) )
00115 {
00116
00117 FeII.lgLyaPumpOn = false;
00118 phycon.lgPhysOK = false;
00119 }
00120
00121 else if( nMatch("FILE",chCard) && nMatch("OPAC",chCard) )
00122 {
00123
00124 opac.lgUseFileOpac = false;
00125 }
00126
00127 else if( nMatch("FINE",chCard) && nMatch("OPAC",chCard) )
00128 {
00129
00130 rfield.lgOpacityFine = false;
00131 }
00132
00133 else if( nMatch("FINE",chCard) )
00134 {
00135
00136 rt.lgFstOn = false;
00137 phycon.lgPhysOK = false;
00138 }
00139
00140 else if( nMatch("FREE",chCard) )
00141 {
00142
00143 CoolHeavy.lgFreeOn = false;
00144 phycon.lgPhysOK = false;
00145 }
00146
00147 else if( nMatch("GRAI",chCard) )
00148 {
00149 if( nMatch("NEUT",chCard) )
00150 {
00151
00152 ionbal.lgGrainIonRecom = false;
00153 phycon.lgPhysOK = false;
00154 }
00155 else if( nMatch("GAS ",chCard) && nMatch("COLL",chCard) && nMatch("ENER",chCard) )
00156 {
00157
00158
00159 gv.lgDColOn = false;
00160 phycon.lgPhysOK = false;
00161 }
00162 else if( nMatch("ELEC",chCard) )
00163 {
00164
00165 gv.lgGrainElectrons = false;
00166 phycon.lgPhysOK = false;
00167 }
00168 else if( nMatch("MOLE",chCard) )
00169 {
00170
00171 mole.lgGrain_mole_deplete = false;
00172 phycon.lgPhysOK = false;
00173 }
00174 else if( nMatch("QHEA",chCard) )
00175 {
00176
00177 gv.lgQHeatOn = false;
00178 phycon.lgPhysOK = false;
00179 }
00180 else if( nMatch("PHYSICS",chCard) )
00181 {
00182
00183 gv.lgGrainPhysicsOn = false;
00184 phycon.lgPhysOK = false;
00185 }
00186 else
00187 {
00188 fprintf( ioQQQ, " No key recognized on this line.\n" );
00189 puts( "[Stop in ParseDont]" );
00190 cdEXIT(EXIT_FAILURE);
00191 }
00192 }
00193
00194
00195 else if( nMatch("INDU",chCard) )
00196 {
00197
00198
00199
00200 rfield.lgInducProcess = false;
00201 }
00202
00203
00204 else if( nMatch("COLL",chCard) && nMatch("IONI",chCard) )
00205 {
00206
00207 atmdat.lgCollIonOn = false;
00208 }
00209
00210 else if( nMatch("LEVE",chCard) )
00211 {
00212
00213
00214
00215
00216
00217 nWindLine = 0;
00218 }
00219
00220
00221 else if( nMatch("LINE",chCard) && !nMatch(" OTS",chCard) )
00222 {
00223 if( nMatch("DIFF",chCard) && nMatch("PUMP",chCard) )
00224 {
00225
00226
00227 rfield.DiffPumpOn = 0.;
00228 }
00229 else if( nMatch("TRAN",chCard) )
00230 {
00231
00232 rfield.lgDoLineTrans = false;
00233 }
00234 else
00235 {
00236
00237 fprintf( ioQQQ, " There has to be an option on the NO LINE command.\n" );
00238 fprintf( ioQQQ, " The optinoas are DIFFUSE PUMP and TRANSFER.\n Sorry.\n" );
00239 puts( "[Stop in ParseDont]" );
00240 cdEXIT(EXIT_FAILURE);
00241 }
00242 }
00243
00244
00245 else if( nMatch("OPAC",chCard) && nMatch("REEVAL",chCard) )
00246 {
00247
00248 rfield.lgOpacityReevaluate = false;
00249 }
00250
00251 else if( nMatch("IONI",chCard) && nMatch("REEVAL",chCard) )
00252 {
00253
00254 rfield.lgIonizReevaluate = false;
00255 }
00256
00257
00258 else if( nMatch(" OTS",chCard) )
00259 {
00260 if( nMatch(" LYA",chCard) )
00261 {
00262
00263 rfield.lgLyaOTS = false;
00264 }
00265
00266 else if( nMatch("HEII",chCard) )
00267 {
00268
00269 rfield.lgHeIIOTS = false;
00270 }
00271
00272 else if( nMatch("LINE",chCard) )
00273 {
00274
00275 rfield.lgKillOTSLine = true;
00276 }
00277 }
00278
00279
00280 else if( nMatch("OUTW",chCard) )
00281 {
00282 if( nMatch("LINE",chCard) )
00283 {
00284
00285 rfield.lgKillOutLine = true;
00286 }
00287 else if( nMatch("CONT",chCard) )
00288 {
00289
00290 rfield.lgKillOutCont = true;
00291 }
00292 }
00293 else if( nMatch("MOLE",chCard) )
00294 {
00295
00296 if( nMatch(" H2 ",chCard) )
00297 {
00298
00299 hmi.lgNoH2Mole = true;
00300 }
00301 else if( nMatch(" CO ",chCard) )
00302 {
00303
00304 co.lgNoCOMole = true;
00305 }
00306 else
00307 {
00308
00309 hmi.lgNoH2Mole = true;
00310 co.lgNoCOMole = true;
00311 }
00312 phycon.lgPhysOK = false;
00313 }
00314
00315 else if( nMatch("PHOT",chCard) )
00316 {
00317
00318 ionbal.lgPhotoIoniz_On = false;
00319 phycon.lgPhysOK = false;
00320 }
00321
00322 else if( nMatch("RADI",chCard) )
00323 {
00324
00325 pressure.lgLineRadPresOn = false;
00326 }
00327
00328 else if( nMatch("RECO",chCard) )
00329 {
00330
00331 ionbal.lgCompRecoil = false;
00332 phycon.lgPhysOK = false;
00333 }
00334
00335 else if( nMatch("SCAT",chCard) && nMatch("OPAC",chCard))
00336 {
00337
00338 opac.lgScatON = false;
00339 }
00340
00341 else if( nMatch("SCAT",chCard) && nMatch("ESCA",chCard))
00342 {
00343
00344 rt.lgElecScatEscape = false;
00345 }
00346
00347 else if( nMatch("SECO",chCard) )
00348 {
00349
00350 secondaries.lgSecOFF = true;
00351 phycon.lgPhysOK = false;
00352 }
00353
00354 else if( nMatch("SPOT",chCard) )
00355 {
00356
00357 opac.otsmin = 1.;
00358 }
00359
00360 else if( nMatch("STAR",chCard) )
00361 {
00362
00363 rt.lgStarkON = false;
00364 phycon.lgPhysOK = false;
00365 }
00366
00367 else if( nMatch("STAT",chCard) )
00368 {
00369
00370 opac.lgOpacStatic = false;
00371 }
00372
00373 else if( nMatch("TEPR",chCard) )
00374 {
00375
00376
00377 thermal.lgPredNextTe = false;
00378 }
00379
00380 else if( nMatch("THRE",chCard) )
00381 {
00382
00383 ionbal.lgNoCota = true;
00384 phycon.lgPhysOK = false;
00385 }
00386
00387 else if( nMatch("TIME",chCard) )
00388 {
00389
00390
00391 prt.lgPrintTime = false;
00392 }
00393
00394 else if( nMatch(" UTA",chCard) )
00395 {
00396
00397 ionbal.lgInnerShellLine_on = false;
00398 phycon.lgPhysOK = false;
00399 }
00400
00401
00402
00403
00404 else if( strncmp(chCard , "NO VARY" , 7 ) == 0 )
00405 {
00406
00407 ((void)0);
00408 }
00409
00410 else
00411 {
00412
00413 fprintf( ioQQQ,
00414 " I do not recognize a keyword on this NO ... command.\n %s\n Sorry.\n" ,
00415 chCard);
00416 puts( "[Stop in ParseDont]" );
00417 cdEXIT(EXIT_FAILURE);
00418 }
00419
00420
00421 if( nMatch("(OK)",chCard) )
00422 {
00423
00424 phycon.lgPhysOK = true;
00425 }
00426
00427 DEBUG_EXIT( "ParseDont()" );
00428 return;
00429 }