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("X-RA",chCard) )
00181                 {
00182                         
00183                         gv.lgWD01 = true;
00184                 }
00185                 else if( nMatch("PHYSICS",chCard) )
00186                 {
00187                         
00188                         gv.lgGrainPhysicsOn = false;
00189                         phycon.lgPhysOK = false;
00190                 }
00191                 else
00192                 {
00193                         fprintf( ioQQQ, " No key recognized on this line.\n" );
00194                         cdEXIT(EXIT_FAILURE);
00195                 }
00196         }
00197 
00198         
00199         else if( nMatch("INDU",chCard) )
00200         {
00201                 
00202 
00203 
00204                 rfield.lgInducProcess = false;
00205         }
00206 
00207         
00208         else if( nMatch("COLL",chCard) && nMatch("IONI",chCard) )
00209         {
00210                 
00211                 atmdat.lgCollIonOn = false;
00212         }
00213 
00214         else if( nMatch("LEVE",chCard) )
00215         {
00216                 
00217 
00218 
00219                 
00220                 
00221                 nWindLine = 0;
00222         }
00223 
00224         
00225         else if( nMatch("LINE",chCard) && !nMatch(" OTS",chCard) )
00226         {
00227                 if( nMatch("DIFF",chCard) && nMatch("PUMP",chCard) )
00228                 {
00229                         
00230 
00231                         rfield.DiffPumpOn = 0.;
00232                 }
00233                 else if( nMatch("TRAN",chCard) )
00234                 {
00235                         
00236                         rfield.lgDoLineTrans = false;
00237                 }
00238                 else
00239                 {
00240                         
00241                         fprintf( ioQQQ, " There has to be an option on the NO LINE command.\n" );
00242                         fprintf( ioQQQ, " The optinoas are DIFFUSE PUMP and TRANSFER.\n Sorry.\n" );
00243                         cdEXIT(EXIT_FAILURE);
00244                 }
00245         }
00246 
00247 
00248         else if( nMatch("OPAC",chCard) && nMatch("REEVAL",chCard) )
00249         {
00250                 
00251                 rfield.lgOpacityReevaluate = false;
00252         }
00253 
00254         else if( nMatch("IONI",chCard) && nMatch("REEVAL",chCard) )
00255         {
00256                 
00257                 rfield.lgIonizReevaluate = false;
00258         }
00259 
00260         
00261         else if( nMatch(" OTS",chCard) )
00262         {
00263                 if( nMatch(" LYA",chCard) )
00264                 {
00265                         
00266                         rfield.lgLyaOTS = false;
00267                 }
00268 
00269                 else if( nMatch("HEII",chCard) )
00270                 {
00271                         
00272                         rfield.lgHeIIOTS = false;
00273                 }
00274 
00275                 else if( nMatch("LINE",chCard) )
00276                 {
00277                         
00278                         rfield.lgKillOTSLine = true;
00279                 }
00280         }
00281 
00282         
00283         else if( nMatch("OUTW",chCard) )
00284         {
00285                 if( nMatch("LINE",chCard) )
00286                 {
00287                         
00288                         rfield.lgKillOutLine = true;
00289                 }
00290                 else if( nMatch("CONT",chCard) )
00291                 {
00292                         
00293                         rfield.lgKillOutCont = true;
00294                 }
00295         }
00296         else if( nMatch("MOLE",chCard) )
00297         {
00298                 
00299                 if( nMatch(" H2 ",chCard) )
00300                 {
00301                         
00302                         hmi.lgNoH2Mole = true;
00303                 }
00304                 else if( nMatch(" CO ",chCard) )
00305                 {
00306                         
00307                         co.lgNoCOMole = true;
00308                 }
00309                 else
00310                 {
00311                         
00312                         hmi.lgNoH2Mole = true;
00313                         co.lgNoCOMole = true;
00314                 }
00315                 phycon.lgPhysOK = false;
00316         }
00317 
00318         else if( nMatch("PHOT",chCard) )
00319         {
00320                 
00321                 ionbal.lgPhotoIoniz_On = false;
00322                 phycon.lgPhysOK = false;
00323         }
00324 
00325         else if( nMatch("RADI",chCard) )
00326         {
00327                 
00328                 pressure.lgLineRadPresOn = false;
00329         }
00330 
00331         else if( nMatch("RECO",chCard) )
00332         {
00333                 
00334                 ionbal.lgCompRecoil = false;
00335                 phycon.lgPhysOK = false;
00336         }
00337 
00338         else if( nMatch("SCAT",chCard) && nMatch("OPAC",chCard))
00339         {
00340                 
00341                 opac.lgScatON = false;
00342         }
00343 
00344         else if( nMatch("SCAT",chCard) && nMatch("ESCA",chCard))
00345         {
00346                 
00347                 rt.lgElecScatEscape = false;
00348         }
00349 
00350         else if( nMatch("SECO",chCard) )
00351         {
00352                 
00353                 secondaries.lgSecOFF = true;
00354                 phycon.lgPhysOK = false;
00355         }
00356 
00357         else if( nMatch("SPOT",chCard) )
00358         {
00359                 
00360                 opac.otsmin = 1.;
00361         }
00362 
00363         else if( nMatch("STAR",chCard) )
00364         {
00365                 
00366                 rt.lgStarkON = false;
00367                 phycon.lgPhysOK = false;
00368         }
00369 
00370         else if( nMatch("STAT",chCard) )
00371         {
00372                 
00373                 opac.lgOpacStatic = false;
00374         }
00375 
00376         else if( nMatch("TEPR",chCard) )
00377         {
00378                 
00379                 
00380                 thermal.lgPredNextTe = false;
00381         }
00382 
00383         else if( nMatch("THRE",chCard) )
00384         {
00385                 
00386                 ionbal.lgNoCota = true;
00387                 phycon.lgPhysOK = false;
00388         }
00389 
00390         else if( nMatch("TIME",chCard) )
00391         {
00392                 
00393 
00394                 prt.lgPrintTime = false;
00395         }
00396 
00397         else if( nMatch(" UTA",chCard) )
00398         {
00399                 
00400                 ionbal.lgInnerShellLine_on = false;
00401                 phycon.lgPhysOK = false;
00402         }
00403 
00404         
00405 
00406 
00407         else if( strncmp(chCard , "NO VARY" , 7 ) == 0 )
00408         {
00409                 
00410                 ((void)0);
00411         }
00412 
00413         else
00414         {
00415                 
00416                 fprintf( ioQQQ, 
00417                         " I do not recognize a keyword on this NO ... command.\n %s\n Sorry.\n" , 
00418                         chCard);
00419                 cdEXIT(EXIT_FAILURE);
00420         }
00421 
00422         
00423         if( nMatch("(OK)",chCard) )
00424         {
00425                 
00426                 phycon.lgPhysOK = true;
00427         }
00428         return;
00429 }