00001
00002
00003
00004
00005
00006 #include "cddefines.h"
00007 #include "physconst.h"
00008 #include "phycon.h"
00009 #include "radius.h"
00010 #include "trace.h"
00011 #include "dynamics.h"
00012 #include "geometry.h"
00013 #include "noexec.h"
00014 #include "rfield.h"
00015 #include "opacity.h"
00016 #include "stopcalc.h"
00017 #include "atomfeii.h"
00018 #include "plot.h"
00019 #include "rt.h"
00020 #include "fudgec.h"
00021 #include "abund.h"
00022 #include "h2.h"
00023 #include "ionbal.h"
00024 #include "hextra.h"
00025 #include "wind.h"
00026 #include "atmdat.h"
00027 #include "pressure.h"
00028 #include "thermal.h"
00029 #include "continuum.h"
00030 #include "optimize.h"
00031 #include "save.h"
00032 #include "dense.h"
00033 #include "hcmap.h"
00034 #include "prt.h"
00035 #include "init.h"
00036 #include "taulines.h"
00037 #include "lines_service.h"
00038 #include "grid.h"
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048 void InitDefaultsPreparse( void )
00049 {
00050 long int i,
00051 ipISO,
00052 nelem;
00053
00054 DEBUG_ENTRY( "InitDefaultsPreparse()" );
00055
00056
00057
00058
00059 atmdat.lgCollIonOn = true;
00060
00061
00062 atmdat.lgChiantiOn = true;
00063 atmdat.lgChiantiHybrid = true;
00064 atmdat.lgChiantiPrint = false;
00065
00066 atmdat.lgGbarOn = true;
00067
00068 atmdat.GbarAulLimit = 1e5;
00069
00070 atmdat.lgChiantiExp = true;
00071
00072 atmdat.nChiantiMaxLevelsFe = atmdat.nChiantiPhotoLevelsFe;
00073
00074 atmdat.nChiantiMaxLevels = atmdat.nChiantiPhotoLevels;
00075
00076 atmdat.lgChiantiLevelsSet = false;
00077
00078
00079
00080
00081 atmdat.nStoutMaxLevels = atmdat.nChiantiMaxLevelsFe;
00082
00083
00084 atmdat.lgStoutOn = true;
00085 atmdat.lgStoutPrint = false;
00086 atmdat.lgStoutHybrid = true;
00087
00088
00089
00090 atmdat.CIRCData = t_atmdat::HYBRID;
00091
00093 atmdat.collstrDefault = 0.01;
00094
00095 atmdat.lgLamdaOn = true;
00096 # ifdef USE_CDMS
00097 atmdat.lgCalpgmOn = true;
00098 # else
00099 atmdat.lgCalpgmOn = false;
00100 # endif
00101 strcpy(atmdat.chCloudyChiantiFile, "CloudyChianti.ini");
00102 strcpy(atmdat.chStoutFile, "Stout.ini");
00103
00104
00105
00106 radius.drChange = 0.15f;
00107
00108 radius.glbdst = 0.;
00109 radius.glbrad = 0.;
00110
00111
00112 continuum.lgCheckEnergyEveryZone = false;
00113
00114
00115
00116 noexec.lgNoExec = false;
00117
00118
00119 rfield.ExtinguishColumnDensity = 0.;
00120 rfield.ExtinguishLeakage = 0.;
00121 rfield.ExtinguishLowEnergyLimit = 1.;
00122
00123
00124 hcmap.RangeMap[0] = 10.f;
00125 hcmap.RangeMap[1] = .99e10f;
00126
00127 hcmap.MapZone = -1;
00128 hcmap.nMapStep = 20;
00129
00130 thermal.ConstGrainTemp = 0.;
00131 thermal.lgTemperatureConstant = false;
00132 thermal.lgTemperatureConstantCommandParsed = false;
00133 thermal.ConstTemp = 0.;
00134 thermal.lgTeHigh = false;
00135 thermal.lgTeBD96 = false;
00136 thermal.lgTLaw = false;
00137 thermal.lgTeSN99 = false;
00138
00139
00140 thermal.lgPredNextTe = true;
00141
00142
00143 hextra.TurbHeat = 0.;
00144
00145 hextra.lgTurbHeatVaryTime = false;
00146
00147 hextra.lgHextraDepth = false;
00148
00149 hextra.lgHextraDensity = false;
00150
00151 hextra.lgHextraSS = false;
00152
00153
00154 hextra.cryden = 0.;
00155 hextra.cryden_ov_background = 0.;
00156 hextra.lg_CR_B_equipartition = false;
00157 hextra.crtemp = 0.;
00158 hextra.crpowr = 0.;
00159 hextra.cr_energydensity = 0;
00160
00161
00162 dynamics.lg_coronal_time_init = false;
00163 dynamics.lgTracePrint = false;
00164
00165
00166 wind.lgWindOK = true;
00167 wind.DiskRadius = 0;
00168 wind.lgDisk = false;
00169 wind.windv0 = 0.;
00170 wind.setStatic();
00171 wind.comass = 0.;
00172 wind.windv = 0.;
00173 wind.dvdr = 0.;
00174 wind.emdot = 0.;
00175 wind.AccelAver = 0.;
00176 wind.acldr = 0.;
00177 wind.AccelGravity = 0.;
00178 wind.AccelTotalOutward = 0.;
00179 wind.AccelCont = 0.;
00180 wind.AccelElectron = 0.;
00181 wind.AccelLine = 0.;
00182 wind.AccelMax = 0.;
00183 wind.fmul = 0.;
00184 wind.lgVelPos = true;
00185
00186
00187
00188 dense.AbundanceLimit = 0.;
00189
00190
00191
00192 dense.lgDenFlucOn = true;
00193 dense.lgDenFlucRadius = true;
00194 dense.flong = 0.;
00195 dense.flcPhase = 0.;
00196
00197
00198
00199 dense.lgDenseInitConstant = true;
00200
00201
00202 dense.lgPressureVaryTime = false;
00203
00204 dense.PressureVaryTimeTimescale = -1.;
00205
00206 dense.PressureVaryTimeIndex = 0.;
00207
00208
00209 dense.EdenExtra = 0.;
00210
00211
00212 dense.EdenSet = 0.;
00213
00214
00215 dense.EdenFraction = 0.;
00216
00217
00218
00219
00220
00221
00222
00223
00224 pressure.lgPres_radiation_ON = true;
00225 pressure.lgPres_magnetic_ON = true;
00226 pressure.lgPres_ram_ON = true;
00227
00228 pressure.lgContRadPresOn = true;
00229
00230 strcpy( dense.chDenseLaw, "CDEN" );
00231
00232 pressure.lgPressureInitialSpecified = false;
00233
00234 pressure.PressureInitialSpecified = 0;
00235
00236
00237
00238 dense.lgAsChoose[ipOXYGEN][1] = false;
00239
00240 abund.lgAbnSolar = false;
00241
00242
00243
00244
00245 abund.npSolar = LIMELM - 1;
00246 for( i=0; i < abund.npSolar; i++ )
00247 {
00248 abund.ipSolar[i] = i + 2;
00249 }
00250
00251
00252 for( nelem=0; nelem < LIMELM; nelem++ )
00253 {
00254
00255 abund.ScaleElement[nelem] = 1.;
00256 abund.solar[nelem] = abund.SolarSave[nelem];
00257
00258
00259 ionbal.DR_mean_scale[nelem] = 1.;
00260 }
00261
00262 abund.lgAbTaON = false;
00263
00264
00265 for( nelem=0; nelem < LIMELM; nelem++ )
00266 {
00267
00268 abund.lgAbunTabl[nelem] = false;
00269 }
00270
00271
00272
00273 save.WeakHeatCool = 0.05f;
00274
00275
00276 save.nsave = 0;
00277 save.lgPunContinuum = false;
00278 save.lgDRPLst = false;
00279 save.lgDRHash = true;
00280 save.lgTraceConvergeBaseHash = true;
00281
00282
00283 strcpy( save.chHashString , "###########################" );
00284
00285 save.ncSaveSkip = 1;
00286
00287 save.lgFLUSH = false;
00288 for( i=0; i<LIMPUN; ++i )
00289 {
00290 save.lgHashEndIter[i] = true;
00291
00292 save.lg_separate_iterations[i] = true;
00293 save.lgSaveEveryZone[i] = false;
00294 save.nSaveEveryZone[i] = -1;
00295 }
00296
00297
00298
00299 save.Resolution = realnum(-1.);
00300 save.ResolutionAbs = realnum(-1.);
00301 save.emisfreq.set( -1. );
00302 save.ipEmisFreq = -1;
00303
00304
00305 for( long i=0; i<LIMPUN; i++ )
00306 strcpy( save.chSpeciesDominantRates[i], "" );
00307
00308
00309 prt.lgPrtTau = false;
00310 prt.PrtTauFnt = 0.1f;
00311 prt.lgPrtShort = false;
00312 prt.TooFaint = 1e-3f;
00313 prt.lgFaintOn = true;
00314 prt.lgFntSet = false;
00315 prt.lgPrnLineCell = false;
00316 prt.nPrnLineCell = -1000;
00317 prt.lgPrtCitations = false;
00318
00319
00320
00321 geometry.DirectionalCosin = 1.;
00322 geometry.size = 1.f;
00323 geometry.lgSizeSet = false;
00324 geometry.covaper = -1.f;
00325
00326
00327
00328
00329 prt.lgPrtLineArray = true;
00330
00331
00332 prt.lgPrtLineLog = true;
00333
00334
00335 prt.lgPrnAges = false;
00336
00337
00338 prt.lgPrintColumns = true;
00339
00340
00341 prt.lgSortLines = false;
00342
00343 prt.lgPrtMaser = false;
00344 prt.lgPrintTime = true;
00345
00346 prt.lgPrtContIndices = false;
00347 prt.lgPrnPump = false;
00348 prt.lgPrnInwd = false;
00349 prt.lgPrnColl = false;
00350 prt.lgPrnHeat = false;
00351
00352 prt.lgSourceReflected = true;
00353 prt.lgSourceTransmitted = false;
00354 prt.lgDiffuseInward = true;
00355 prt.lgDiffuseOutward = true;
00356 prt.lgPrtLastIt = false;
00357 prt.lgOnlyZone = false;
00358 prt.lgOnlyHead = false;
00359 prt.lgPrtStart = false;
00360 prt.nstart = 0;
00361
00362 prt.lgPrnIsoCollapsed = false;
00363
00364
00365 prt.lgPrintHeating = false;
00366
00367
00368
00369 for( nelem=ipHYDROGEN; nelem<LIMELM; ++nelem )
00370 {
00371 prt.lgPrtArry[nelem] = false;
00372 }
00373
00374
00375 prt.lgPrintFluxEarth = false;
00376
00377
00378 prt.lgSurfaceBrightness = false;
00379 prt.lgSurfaceBrightness_SR = true;
00380
00381
00382
00383 prt.lgPrintLineCumulative = false;
00384
00385 prt.nzdump = -100;
00386
00387 trace.lgSecIon = false;
00388 trace.lgTrOvrd = true;
00389 trace.lgOpacBug = false;
00390 trace.nTrConvg = 0;
00391 trace.lgTr8446 = false;
00392 trace.lgTrLevN = false;
00393 trace.lgTrGant = false;
00394 trace.lgOptcBug = false;
00395 trace.lgTrace3Bod = false;
00396 trace.lgOTSBug = false;
00397 trace.lgESOURCE = false;
00398 trace.lgTraceMole = false;
00399 trace.lgHeatBug = false;
00400 trace.lgHeavyBug = false;
00401 trace.lgBug2nu = false;
00402 trace.lgDrBug = false;
00403 trace.lgWind = false;
00404 trace.lgPtrace = false;
00405 trace.lgDrv_cdLine = false;
00406 trace.lgDustBug = false;
00407 trace.lgComBug = false;
00408 trace.lgHeBug = false;
00409 trace.lgCarBug = false;
00410 trace.lgCalBug = false;
00411 trace.lgConBug = false;
00412 trace.lgNeBug = false;
00413 trace.lgFeBug = false;
00414 trace.lgHBug = false;
00415 trace.lgTrLine = false;
00416 trace.nznbug = 10000;
00417 trace.npsbug = 10000;
00418 trace.lgTrace = false;
00419 trace.lgPointBug = false;
00420 trace.lgNeonBug = false;
00421 trace.lgCoolTr = false;
00422 trace.lgTrDiff = false;
00423 for( ipISO=ipH_LIKE; ipISO<NISO; ++ipISO )
00424 trace.lgIsoTraceFull[ipISO] = false;
00425
00426
00427
00428
00429
00430
00431 StopCalc.tauend = 1e30f;
00432
00433
00434
00435
00436
00437
00438
00439
00440
00441 StopCalc.StopDepleteFrac = 1.02f;
00442
00443 StopCalc.xMass = 0.;
00444 StopCalc.taunu = 0.;
00445 StopCalc.iptnu = -1;
00446
00447 StopCalc.AV_extended = 1e30f;
00448 StopCalc.AV_point = 1e30f;
00449
00450 StopCalc.TempHiStopZone = (realnum)phycon.TEMP_LIMIT_HIGH;
00451 StopCalc.TempHiStopIteration = (realnum)phycon.TEMP_LIMIT_HIGH;
00452
00453
00454
00455
00456 StopCalc.TeFloor = 0.;
00457
00458
00459
00460 StopCalc.TempLoStopZone = (realnum)phycon.TEMP_STOP_DEFAULT;
00461
00462 StopCalc.TempLoStopIteration = -1.;
00463
00464
00465 StopCalc.HColStop = COLUMN_INIT;
00466 StopCalc.colpls = COLUMN_INIT;
00467 StopCalc.colnut = COLUMN_INIT;
00468 StopCalc.col_h2 = COLUMN_INIT;
00469 StopCalc.col_h2_nut = COLUMN_INIT;
00470 StopCalc.col_H0_ov_Tspin = COLUMN_INIT;
00471 StopCalc.col_monoxco = COLUMN_INIT;
00472
00473 StopCalc.lgStopSpeciesColumn = false;
00474 StopCalc.chSpeciesColumn[0] = '\0';
00475 StopCalc.col_species = COLUMN_INIT;
00476
00477
00478 StopCalc.StopElecDensity = -COLUMN_INIT;
00479
00480
00481 StopCalc.StopElecFrac = -FLT_MAX;
00482 StopCalc.StopHPlusFrac = -FLT_MAX;
00483
00484 StopCalc.StopH2MoleFrac = FLT_MAX;
00485
00486 StopCalc.lgStop21cm = false;
00487
00488 StopCalc.nTotalIonizStop = 0;
00489
00490 StopCalc.StopVelocity = 0.;
00491
00492 StopCalc.nstpl = 0;
00493
00494
00495 optimize.nIterOptim = 400;
00496 optimize.OptGlobalErr = 0.10f;
00497 optimize.nEmergent.clear();
00498 optimize.chLineLabel.clear();
00499 optimize.wavelength.clear();
00500 optimize.errorwave.clear();
00501 optimize.ipobs.clear();
00502 optimize.xLineInt_Obs.clear();
00503 optimize.xLineInt_error.clear();
00504 optimize.chTempLab.clear();
00505 optimize.ionTemp.clear();
00506 optimize.temp_obs.clear();
00507 optimize.temp_error.clear();
00508 optimize.chTempWeight.clear();
00509 optimize.chColDen_label.clear();
00510 optimize.ion_ColDen.clear();
00511 optimize.ColDen_Obs.clear();
00512 optimize.ColDen_error.clear();
00513 optimize.ContIndex.clear();
00514 optimize.ContEner.clear();
00515 optimize.ContNFnu.clear();
00516 optimize.ContNFnuErr.clear();
00517 optimize.nRangeSet = 0;
00518 strcpy( optimize.chOptRtn, "PHYM" );
00519
00520
00521 optimize.lgOptLum = false;
00522 optimize.lgOptDiam = false;
00523 optimize.lgOptimize = false;
00524
00525
00526 optimize.lgTrOpt = false;
00527
00528 optimize.lgOptimFlow = false;
00529 optimize.optint = 0.;
00530 optimize.optier = 0.;
00531 # if defined(__unix) || defined(__APPLE__)
00532 optimize.lgParallel = !cpu.i().lgMPISingleRankMode();
00533 # else
00534 optimize.lgParallel = false;
00535 # endif
00536 if( optimize.lgParallel )
00537 optimize.useCPU = cpu.i().nCPU();
00538 else
00539 optimize.useCPU = 1;
00540 optimize.lgOptCont = false;
00541
00542
00543 fudgec.nfudge = 0;
00544 fudgec.lgFudgeUsed = false;
00545 for( i=0; i < NFUDGC; i++ )
00546 fudgec.fudgea[i] = 0.;
00547
00548 EmLineZero( DummyEmis );
00549 TauZero( DummyEmis );
00550 DummyEmis.iRedisFun() = 0;
00551 DummyEmis.ipFine() = -1;
00552 DummyEmis.gf() = 0.;
00553 DummyEmis.damp() = 0.;
00554 DummyEmis.dampXvel() = 0.;
00555 DummyEmis.opacity() = 0.;
00556 DummyEmis.Aul() = 1e-30f;
00557
00558
00559 for( i=0; i < NDPLOT; i++ )
00560 {
00561 plotCom.lgPltTrace[i] = false;
00562 }
00563
00564
00565 for( i=0; i < NDPLOT; i++ )
00566 {
00567 strcpy( plotCom.chPType[i], "NONE" );
00568 }
00569 plotCom.lgPlotON = false;
00570
00571
00572 rt.lgStarkON = true;
00573
00574
00575 rt.nLineContShield = LINE_CONT_SHIELD_FEDERMAN;
00576
00577
00578
00579 opac.lgCaseB = false;
00580
00581
00582 opac.lgCaseB_HummerStorey = false;
00583
00584
00585 opac.lgCaseB_no_photo = false;
00586
00587 opac.lgCaseB_no_pdest = false;
00588
00589
00590
00591 opac.tlamin = 1e-20f;
00592
00593
00594 opac.taumin = 1e-20f;
00595
00596
00597 rfield.lgInducProcess = true;
00598
00599
00600 rfield.lgCMB_set = false;
00601
00602 rfield.lgComptonOn = true;
00603
00604 for( i=0; i < LIMSPC; i++ )
00605 {
00606
00607
00608 rfield.lgTimeVary[i] = false;
00609
00610 rfield.lgBeamed[i] = true;
00611
00612 rfield.Illumination[i] = Illuminate::FORWARD;
00613
00614
00615 rfield.OpticalDepthScaleFactor[i] = 1.;
00616
00617 rfield.range[i][0] = HIONPOT;
00618 rfield.range[i][1] = rfield.egamry;
00619 rfield.RSFCheck[i] = 0.;
00620 }
00621
00622
00623 rfield.lgOpacityFine = true;
00624
00625
00626 FeII.feconwlLo = 1000.;
00627 FeII.feconwlHi = 7000.;
00628 FeII.nfe2con = 1000;
00629
00630
00631 rfield.FluxFaint = 1e-10f;
00632
00633
00634
00635 strcpy( rfield.chDffTrns, "OU2" );
00636 rfield.lgOutOnly = true;
00637
00638
00639 rfield.lgMMok = true;
00640 rfield.lgHPhtOK = true;
00641 rfield.lgXRayOK = true;
00642 rfield.lgGamrOK = true;
00643
00644 for( rfield.ipSpec=0; rfield.ipSpec < LIMSPC; rfield.ipSpec++ )
00645 {
00646 if( rfield.lgContMalloc[rfield.ipSpec] )
00647 {
00648 rfield.tNu[rfield.ipSpec].clear();
00649 rfield.tslop[rfield.ipSpec].clear();
00650 rfield.tFluxLog[rfield.ipSpec].clear();
00651 rfield.lgContMalloc[rfield.ipSpec] = false;
00652 }
00653 }
00654
00655 grid.lgNegativeIncrements = false;
00656 grid.lgSaveXspec = false;
00657
00658 return;
00659 }