00001
00002
00003
00004
00005
00006 #include "cddefines.h"
00007 #include "physconst.h"
00008 #include "lines_service.h"
00009 #include "taulines.h"
00010 #include "hydrogenic.h"
00011 #include "helike.h"
00012 #include "opacity.h"
00013 #include "hydroeinsta.h"
00014 #include "dense.h"
00015 #include "atmdat.h"
00016 #include "iso.h"
00017
00018
00019 static void iso_zero(void);
00020
00021 void iso_create(void)
00022 {
00023 long int
00024 ipHi,
00025 ipISO ,
00026 ipLo,
00027 nelem,
00028 n ,
00029 need,
00030 nHi,
00031 nLo,
00032 NumHeLinesSav = 0;
00033 long jj, ii, j;
00034
00035 static int nCalled = 0;
00036
00037 double HIonPoten,
00038 Potential,
00039 gHi,
00040 gLo,
00041 *hdamp,
00042 z4;
00043
00044 DEBUG_ENTRY( "iso_create()" );
00045
00046
00047 if( nCalled > 0 )
00048 {
00049 iso_zero();
00050 DEBUG_EXIT( "iso_create()" );
00051 return;
00052 }
00053
00054
00055 ++nCalled;
00056
00057
00058
00059
00060
00061 if( helike.lgSetBenjamin )
00062 {
00063
00064 iso.numLevels_max[ipHE_LIKE][ipHELIUM] = 31;
00065 iso.numLevels_local[ipHE_LIKE][ipHELIUM] = iso.numLevels_max[ipHE_LIKE][ipHELIUM];
00066 iso.nCollapsed_max[ipHE_LIKE][ipHELIUM] = 0;
00067 iso.n_HighestResolved_max[ipHE_LIKE][ipHELIUM] = 5;
00068
00069 iso.numPrintLevels[ipHE_LIKE][ipHELIUM] = iso.numLevels_max[ipHE_LIKE][ipHELIUM];
00070
00071 for( nelem=ipLITHIUM; nelem < LIMELM; nelem++ )
00072 {
00073
00074 dense.lgElmtOn[nelem] = false;
00075 }
00076 }
00077 else if( !helike.lgCompileRecomb )
00078 {
00079 for( nelem=ipHELIUM; nelem < LIMELM; ++nelem )
00080 {
00081
00082 if( nelem==ipHELIUM || dense.lgElmtOn[nelem] )
00083 {
00084
00085 ASSERT( iso.nCollapsed_max[ipHE_LIKE][nelem] > 0);
00086
00087
00088 iso.numPrintLevels[ipHE_LIKE][nelem] = iso.numLevels_max[ipHE_LIKE][nelem];
00089
00090
00091
00092 iso.numLevels_max[ipHE_LIKE][nelem] += iso.nCollapsed_max[ipHE_LIKE][nelem];
00093 iso.numLevels_local[ipHE_LIKE][nelem] = iso.numLevels_max[ipHE_LIKE][nelem];
00094 }
00095 }
00096 }
00097
00098
00099
00100 hdamp=(double*)MALLOC(sizeof(double)*(unsigned)(iso.numLevels_max[ipH_LIKE][ipHYDROGEN]));
00101
00102
00103 iso.stat_ion[ipH_LIKE] = 1.f;
00104 iso.stat_ion[ipHE_LIKE] = 2.f;
00105
00106
00107
00108 iso.ipOpac = (long int ***)MALLOC(sizeof(long **)*NISO );
00109
00110
00111 iso.quant_desig = (Elevels***)MALLOC(sizeof(Elevels**)*(unsigned)NISO );
00112
00113 iso.ipIsoLevNIonCon = (long int ***)MALLOC(sizeof(long **)*NISO );
00114
00115 iso.xIsoLevNIonRyd = (double ***)MALLOC(sizeof(double **)*NISO );
00116
00117 iso.stat = (float ***)MALLOC(sizeof(float **)*NISO );
00118
00119 iso.RadRecomb = (double ****)MALLOC(sizeof(double ***)*NISO );
00120
00121 iso.ExtraLymanLines = (EmLine ***)MALLOC(sizeof(EmLine **)*NISO );
00122
00123 iso.Boltzmann = (double ****)MALLOC(sizeof(double ***)*NISO );
00124
00125 iso.ConBoltz = (double ***)MALLOC(sizeof(double **)*NISO );
00126
00127 iso.Pop2Ion = (double ***)MALLOC(sizeof(double **)*NISO );
00128
00129 iso.RateLevel2Cont = (double ***)MALLOC(sizeof(double **)*NISO );
00130
00131 iso.RateCont2Level = (double ***)MALLOC(sizeof(double **)*NISO );
00132
00133 iso.ConOpacRatio = (float ***)MALLOC(sizeof(float **)*NISO );
00134
00135 iso.DepartCoef = (double ***)MALLOC(sizeof(double **)*NISO );
00136
00137 iso.gamnc = (double ***)MALLOC(sizeof(double **)*NISO );
00138
00139 iso.RecomInducRate = (double ***)MALLOC(sizeof(double **)*NISO );
00140
00141 iso.RecomInducCool_Coef = (double ***)MALLOC(sizeof(double **)*NISO );
00142
00143 iso.PhotoHeat = (double ***)MALLOC(sizeof(double **)*NISO );
00144
00145 iso.PopLTE = (double ***)MALLOC(sizeof(double **)*NISO );
00146
00147 iso.ColIoniz = (double ***)MALLOC(sizeof(double **)*NISO );
00148
00149
00150 for( ipISO=ipH_LIKE; ipISO<NISO; ++ipISO )
00151 {
00152
00153
00154 iso.quant_desig[ipISO] = (Elevels**)MALLOC(sizeof(Elevels*)*(unsigned)LIMELM );
00155
00156 iso.ExtraLymanLines[ipISO] = (EmLine **)MALLOC(sizeof(EmLine *)*LIMELM );
00157
00158 iso.ipOpac[ipISO] = (long int **)MALLOC(sizeof(long *)*LIMELM );
00159
00160 iso.ipIsoLevNIonCon[ipISO] = (long int **)MALLOC(sizeof(long *)*LIMELM );
00161
00162 iso.xIsoLevNIonRyd[ipISO] = (double **)MALLOC(sizeof(double *)*LIMELM );
00163
00164 iso.stat[ipISO] = (float **)MALLOC(sizeof(float*)*LIMELM );
00165
00166 iso.RadRecomb[ipISO] = (double ***)MALLOC(sizeof(double **)*LIMELM );
00167
00168 iso.Boltzmann[ipISO] = (double ***)MALLOC(sizeof(double **)*LIMELM );
00169
00170 iso.ConBoltz[ipISO] = (double **)MALLOC(sizeof(double *)*LIMELM );
00171
00172 iso.Pop2Ion[ipISO] = (double **)MALLOC(sizeof(double *)*LIMELM );
00173
00174 iso.RateLevel2Cont[ipISO] = (double **)MALLOC(sizeof(double *)*LIMELM );
00175
00176 iso.RateCont2Level[ipISO] = (double **)MALLOC(sizeof(double *)*LIMELM );
00177
00178 iso.ConOpacRatio[ipISO] = (float **)MALLOC(sizeof(float *)*LIMELM );
00179
00180 iso.DepartCoef[ipISO] = (double **)MALLOC(sizeof(double *)*LIMELM );
00181
00182 iso.gamnc[ipISO] = (double **)MALLOC(sizeof(double *)*LIMELM );
00183
00184 iso.RecomInducRate[ipISO] = (double **)MALLOC(sizeof(double *)*LIMELM );
00185
00186 iso.RecomInducCool_Coef[ipISO] = (double **)MALLOC(sizeof(double *)*LIMELM );
00187
00188 iso.PhotoHeat[ipISO] = (double **)MALLOC(sizeof(double *)*LIMELM );
00189
00190 iso.PopLTE[ipISO] = (double **)MALLOC(sizeof(double *)*LIMELM );
00191
00192 iso.ColIoniz[ipISO] = (double **)MALLOC(sizeof(double *)*LIMELM );
00193
00194 for( nelem=ipISO; nelem < LIMELM; ++nelem )
00195 {
00196
00197 if( nelem < 2 || dense.lgElmtOn[nelem] )
00198 {
00199
00200
00201 ASSERT( iso.numLevels_max[ipISO][nelem] > 0 );
00202
00203
00204 iso.quant_desig[ipISO][nelem] =
00205 (Elevels*)MALLOC((unsigned)iso.numLevels_max[ipISO][nelem]*sizeof(Elevels));
00206
00207 iso.ExtraLymanLines[ipISO][nelem] =
00208 (EmLine *)MALLOC(sizeof(EmLine )*(unsigned)iso.nLyman[ipISO] );
00209 iso.nLyman_malloc[ipISO] = iso.nLyman[ipISO];
00210
00211 iso.ipOpac[ipISO][nelem] =
00212 (long int *)MALLOC(sizeof(long)*(unsigned)(iso.numLevels_max[ipISO][nelem]) );
00213
00214 iso.ipIsoLevNIonCon[ipISO][nelem] =
00215 (long int *)MALLOC(sizeof(long)*(unsigned)(iso.numLevels_max[ipISO][nelem]) );
00216
00217 iso.xIsoLevNIonRyd[ipISO][nelem] =
00218 (double *)MALLOC(sizeof(double)*(unsigned)(iso.numLevels_max[ipISO][nelem]) );
00219
00220 iso.stat[ipISO][nelem] = (float *)MALLOC(sizeof(float)*(unsigned)(iso.numLevels_max[ipISO][nelem]) );
00221
00222 iso.RadRecomb[ipISO][nelem] =
00223 (double **)MALLOC(sizeof(double *)*(unsigned)(iso.numLevels_max[ipISO][nelem]) );
00224
00225 iso.Boltzmann[ipISO][nelem] =
00226 (double **)MALLOC(sizeof(double *)*(unsigned)(iso.numLevels_max[ipISO][nelem]) );
00227
00228 iso.ConBoltz[ipISO][nelem] =
00229 (double *)MALLOC(sizeof(double)*(unsigned)(iso.numLevels_max[ipISO][nelem]) );
00230
00231 iso.DepartCoef[ipISO][nelem] =
00232 (double *)MALLOC(sizeof(double)*(unsigned)(iso.numLevels_max[ipISO][nelem]) );
00233
00234 iso.Pop2Ion[ipISO][nelem] =
00235 (double *)MALLOC(sizeof(double)*(unsigned)(iso.numLevels_max[ipISO][nelem]) );
00236
00237 iso.RateLevel2Cont[ipISO][nelem] =
00238 (double *)MALLOC(sizeof(double)*(unsigned)(iso.numLevels_max[ipISO][nelem]) );
00239
00240 iso.RateCont2Level[ipISO][nelem] =
00241 (double *)MALLOC(sizeof(double)*(unsigned)(iso.numLevels_max[ipISO][nelem]) );
00242
00243 iso.ConOpacRatio[ipISO][nelem] =
00244 (float *)MALLOC(sizeof(float)*(unsigned)(iso.numLevels_max[ipISO][nelem]) );
00245
00246 iso.gamnc[ipISO][nelem] = (double *)MALLOC(sizeof(double )*(unsigned)(iso.numLevels_max[ipISO][nelem]) );
00247
00248 iso.RecomInducRate[ipISO][nelem] = (double *)MALLOC(sizeof(double )*(unsigned)(iso.numLevels_max[ipISO][nelem]) );
00249
00250 iso.RecomInducCool_Coef[ipISO][nelem] = (double *)MALLOC(sizeof(double )*(unsigned)(iso.numLevels_max[ipISO][nelem]) );
00251
00252 iso.PhotoHeat[ipISO][nelem] = (double *)MALLOC(sizeof(double )*(unsigned)(iso.numLevels_max[ipISO][nelem]) );
00253
00254 iso.PopLTE[ipISO][nelem] = (double *)MALLOC(sizeof(double )*(unsigned)(iso.numLevels_max[ipISO][nelem]) );
00255
00256 iso.ColIoniz[ipISO][nelem] = (double *)MALLOC(sizeof(double )*(unsigned)(iso.numLevels_max[ipISO][nelem]) );
00257
00258 n = 0;
00259
00260 iso.RadRecomb[ipISO][nelem][n] = (double *)MALLOC(sizeof(double)*(unsigned)3 );
00261 for( n=1; n<iso.numLevels_max[ipISO][nelem]; ++n )
00262 {
00263 iso.RadRecomb[ipISO][nelem][n] = (double *)MALLOC(sizeof(double)*(unsigned)3 );
00264
00265
00266
00267 iso.Boltzmann[ipISO][nelem][n] = (double *)MALLOC(sizeof(double)*(unsigned)n );
00268 }
00269 }
00270 }
00271 }
00272
00273
00274 EmisLines = (EmLine ****)MALLOC(sizeof(EmLine ***)*NISO );
00275
00276
00277
00278
00279
00280 if( helike.lgHugeCaseB == true )
00281 {
00282 NumHeLinesSav = iso.numLevels_max[ipHE_LIKE][ipHELIUM];
00283 iso.numLevels_max[ipHE_LIKE][ipHELIUM] = 32;
00284 }
00285
00286
00287 for( ipISO=ipH_LIKE; ipISO<NISO; ++ipISO )
00288 {
00289 EmisLines[ipISO] = (EmLine ***)MALLOC(sizeof(EmLine **)*LIMELM );
00290
00291 for( nelem=ipISO; nelem < LIMELM; ++nelem )
00292 {
00293
00294 if( nelem < 2 || dense.lgElmtOn[nelem] )
00295 {
00296
00297
00298 ASSERT( iso.numLevels_max[ipISO][nelem] > 0 );
00299
00300 EmisLines[ipISO][nelem] =
00301 (EmLine **)MALLOC(sizeof(EmLine *)*(size_t)(iso.numLevels_max[ipISO][nelem]) );
00302
00303 for( n=1; n<iso.numLevels_max[ipISO][nelem]; ++n )
00304 {
00305 EmisLines[ipISO][nelem][n] = (EmLine *)MALLOC(sizeof(EmLine)*(size_t)n );
00306 }
00307 }
00308 }
00309 }
00310
00311
00312
00313 if( !lgHydroMalloc )
00314 {
00315 He1AutoLines = (EmLine **)MALLOC(sizeof(EmLine *)*LIMELM );
00316
00317
00318 for( nelem=1; nelem < LIMELM; ++nelem )
00319 {
00320
00321 if( nelem < 2 || dense.lgElmtOn[nelem] )
00322 {
00323 He1AutoLines[nelem]=(EmLine *)MALLOC(sizeof(EmLine )*(unsigned)(4));
00324
00325 }
00326 }
00327
00328
00329 hydro.strkar = (float**)MALLOC( sizeof(float*)*(unsigned)(iso.numLevels_max[ipH_LIKE][ipHYDROGEN]) );
00330
00331 hydro.pestrk = (double**)MALLOC( sizeof(double*)*(unsigned)(iso.numLevels_max[ipH_LIKE][ipHYDROGEN]) );
00332
00333
00334 for( ipLo=0; ipLo< iso.numLevels_max[ipH_LIKE][ipHYDROGEN];++ipLo )
00335 {
00336 hydro.strkar[ipLo] =
00337 (float*)MALLOC( sizeof(float)*(unsigned)(iso.numLevels_max[ipH_LIKE][ipHYDROGEN]) );
00338 hydro.pestrk[ipLo] =
00339 (double*)MALLOC( sizeof(double)*(unsigned)(iso.numLevels_max[ipH_LIKE][ipHYDROGEN]) );
00340 }
00341
00342 jj = 0;
00343
00344
00345 for( n=ipH1s; n < (iso.numLevels_max[ipH_LIKE][ipHYDROGEN] - 1); n++ )
00346 {
00347 if( n == 0 )
00348 {
00349 ii = 1;
00350 }
00351 else if( n == 1 )
00352 {
00353 ii = 2;
00354 }
00355 else
00356 {
00357 ii = n;
00358 }
00359 for( j=n + 1; j < iso.numLevels_max[ipH_LIKE][ipHYDROGEN]; j++ )
00360 {
00361 if( j == 1 )
00362 {
00363 jj = 2;
00364 }
00365 else
00366 {
00367 jj = j;
00368 }
00369 hydro.strkar[n][j] = (float)pow(((float)ii*jj),1.2f);
00370 hydro.pestrk[n][j] = 0.;
00371 }
00372 }
00373
00374
00375
00376
00377 lgHydroMalloc = true;
00378
00379
00380
00381
00382 for( nelem=0; nelem < LIMELM; nelem++ )
00383 {
00384 if( nelem < 2 || dense.lgElmtOn[nelem] )
00385 {
00386
00387
00388 for( ipHi=ipH1s+1; ipHi < iso.numLevels_max[ipH_LIKE][nelem]; ++ipHi )
00389 {
00390 for( ipLo=ipH1s; ipLo < ipHi; ++ipLo )
00391 {
00392
00393 EmLineJunk( &EmisLines[ipH_LIKE][nelem][ipHi][ipLo] );
00394 }
00395 }
00396
00397 for( ipHi=2; ipHi < iso.nLyman[ipH_LIKE]; ipHi++ )
00398 {
00399 EmLineJunk( &iso.ExtraLymanLines[ipH_LIKE][nelem][ipHi] );
00400 }
00401 }
00402 }
00403
00404 for( nelem=1; nelem < LIMELM; nelem++ )
00405 {
00406 if( nelem < 2 || dense.lgElmtOn[nelem] )
00407 {
00408
00409 for( ipHi=1; ipHi < iso.numLevels_max[ipHE_LIKE][nelem]; ipHi++ )
00410 {
00411
00412 for( ipLo=0; ipLo < ipHi; ipLo++ )
00413 {
00414 EmLineJunk( &EmisLines[ipHE_LIKE][nelem][ipHi][ipLo] );
00415 }
00416 }
00417
00418 for( ipHi=2; ipHi < iso.nLyman[ipHE_LIKE]; ipHi++ )
00419 {
00420 EmLineJunk( &iso.ExtraLymanLines[ipHE_LIKE][nelem][ipHi] );
00421 }
00422 }
00423 }
00424 for( nelem=1; nelem < LIMELM; nelem++ )
00425 {
00426 if( nelem < 2 || dense.lgElmtOn[nelem] )
00427 {
00428
00429 for( ipHi = 0; ipHi < 4; ipHi++ )
00430 {
00431
00432 EmLineJunk( &He1AutoLines[nelem][ipHi] );
00433 }
00434 }
00435 }
00436 }
00437
00438
00439
00440
00441
00442
00443 for( nelem=0; nelem < LIMELM; nelem++ )
00444 {
00445
00446 if( nelem < 2 || dense.lgElmtOn[nelem] )
00447 {
00448
00449 z4 = POW2(nelem+1.);
00450 z4 *= z4;
00451
00452
00453
00454
00455 HIonPoten = t_ADfA::Inst().ph1(0,0,nelem,0)/EVRYD* 0.9998787;
00456 ASSERT(HIonPoten > 0.);
00457
00459 iso.quant_desig[ipH_LIKE][nelem][iso.numLevels_max[ipH_LIKE][nelem] - 1].n = iso.numLevels_max[ipH_LIKE][nelem] - 1;
00460 iso.quant_desig[ipH_LIKE][nelem][iso.numLevels_max[ipH_LIKE][nelem] - 1].l = -1;
00461 iso.quant_desig[ipH_LIKE][nelem][iso.numLevels_max[ipH_LIKE][nelem] - 1].s = -1;
00462
00463 for( ipLo=ipH1s; ipLo < (iso.numLevels_max[ipH_LIKE][nelem] - 1); ipLo++ )
00464 {
00465
00466 if( ipLo == ipH1s )
00467 {
00468
00469 nLo = 1;
00470 gLo = 2.;
00471 iso.quant_desig[ipH_LIKE][nelem][ipLo].n = 1;
00472 iso.quant_desig[ipH_LIKE][nelem][ipLo].l = 0;
00473 iso.quant_desig[ipH_LIKE][nelem][ipLo].s = 0;
00474 }
00475 else if( ipLo == ipH2s )
00476 {
00477
00478 nLo = 2;
00479 gLo = 2.;
00480 iso.quant_desig[ipH_LIKE][nelem][ipLo].n = 2;
00481 iso.quant_desig[ipH_LIKE][nelem][ipLo].l = 0;
00482 iso.quant_desig[ipH_LIKE][nelem][ipLo].s = 0;
00483 }
00484 else if( ipLo == ipH2p )
00485 {
00486
00487 nLo = 2;
00488 gLo = 6.;
00489 iso.quant_desig[ipH_LIKE][nelem][ipLo].n = 2;
00490 iso.quant_desig[ipH_LIKE][nelem][ipLo].l = 1;
00491 iso.quant_desig[ipH_LIKE][nelem][ipLo].s = 0;
00492 }
00493 else
00494 {
00495 nLo = ipLo;
00496 gLo = 2.*nLo*nLo;
00497 iso.quant_desig[ipH_LIKE][nelem][ipLo].n = ipLo;
00498 iso.quant_desig[ipH_LIKE][nelem][ipLo].l = -1;
00499 iso.quant_desig[ipH_LIKE][nelem][ipLo].s = -1;
00500 }
00501 iso.stat[ipH_LIKE][nelem][ipLo] = (float)gLo;
00502 for( ipHi=ipLo + 1; ipHi < iso.numLevels_max[ipH_LIKE][nelem]; ipHi++ )
00503 {
00504 double EnergyRyd;
00505
00506 if( ipHi == ipH2s )
00507 {
00508 nHi = 2;
00509 gHi = 2.;
00510 }
00511 else if( ipHi == ipH2p )
00512 {
00513 nHi = 2;
00514 gHi = 6.;
00515 }
00516 else
00517 {
00518 nHi = ipHi;
00519 gHi = 2.*nHi*nHi;
00520 }
00521 iso.stat[ipH_LIKE][nelem][ipHi] = (float)gHi;
00522
00523
00524
00525 EmisLines[ipH_LIKE][nelem][ipHi][ipLo].nelem = (int)(nelem+1);
00526 EmisLines[ipH_LIKE][nelem][ipHi][ipLo].IonStg = (int)(nelem+1);
00527
00528
00529
00530
00531 if( ipLo==ipH2s && ipHi==ipH2p )
00532 {
00533
00534 EnergyRyd = 0.;
00535 }
00536 else
00537 {
00538 EnergyRyd = (HIonPoten*
00539 ( 1./POW2((double)nLo) -1./POW2((double)nHi) ) );
00540 }
00541
00542 ASSERT(EnergyRyd >= 0.);
00543
00544 EmisLines[ipH_LIKE][nelem][ipHi][ipLo].EnergyErg =
00545 (float)(EnergyRyd*
00546 EN1RYD);
00547 ASSERT(EmisLines[ipH_LIKE][nelem][ipHi][ipLo].EnergyErg >= 0.);
00548
00549 EmisLines[ipH_LIKE][nelem][ipHi][ipLo].EnergyK =
00550 (float)(EnergyRyd*
00551 TE1RYD);
00552 ASSERT(EmisLines[ipH_LIKE][nelem][ipHi][ipLo].EnergyK >= 0.);
00553
00554
00555 EmisLines[ipH_LIKE][nelem][ipHi][ipLo].EnergyWN =
00556 (float)(EnergyRyd/ WAVNRYD);
00557 ASSERT(EmisLines[ipH_LIKE][nelem][ipHi][ipLo].EnergyWN >= 0.);
00558
00559 if( ipLo==ipH2s && ipHi==ipH2p )
00560 {
00561 EmisLines[ipH_LIKE][nelem][ipHi][ipLo].WLAng = 0.;
00562 }
00563 else
00564 {
00565
00566 EmisLines[ipH_LIKE][nelem][ipHi][ipLo].WLAng =
00567 (float)(1.0e8/
00568 EmisLines[ipH_LIKE][nelem][ipHi][ipLo].EnergyWN/
00569 RefIndex( EmisLines[ipH_LIKE][nelem][ipHi][ipLo].EnergyWN));
00570 ASSERT(EmisLines[ipH_LIKE][nelem][ipHi][ipLo].WLAng > 0.);
00571 }
00572
00573
00574 EmisLines[ipH_LIKE][nelem][ipHi][ipLo].gLo = (float)gLo;
00575
00576 EmisLines[ipH_LIKE][nelem][ipHi][ipLo].gHi = (float)gHi;
00577
00578
00579 if( ipHi==ipH2s && ipLo==ipH1s )
00580 {
00581
00582
00583
00584 EmisLines[ipH_LIKE][nelem][ipHi][ipLo].Aul =
00585 (float)(HydroEinstA(ipLo,ipHi)*pow(nelem+1.,6.));
00586 }
00587 else
00588 {
00589
00590 EmisLines[ipH_LIKE][nelem][ipHi][ipLo].Aul =
00591 (float)(HydroEinstA(ipLo,ipHi)*z4);
00592 }
00593 ASSERT(EmisLines[ipH_LIKE][nelem][ipHi][ipLo].Aul > 0.);
00594
00595
00596
00597
00598 if( ipLo == ipH1s && ipHi == ipH2p )
00599 {
00600
00601 EmisLines[ipH_LIKE][nelem][ipHi][ipLo].iRedisFun = iso.ipLyaRedist[ipH_LIKE];
00602 }
00603 else if( ipLo == ipH1s && ipHi != ipH2p )
00604 {
00605
00606
00607 EmisLines[ipH_LIKE][nelem][ipHi][ipLo].iRedisFun = iso.ipResoRedist[ipH_LIKE];
00608 }
00609 else
00610 {
00611
00612 EmisLines[ipH_LIKE][nelem][ipHi][ipLo].iRedisFun = iso.ipSubRedist[ipH_LIKE];
00613 }
00614 if( EmisLines[ipH_LIKE][nelem][ipHi][ipLo].EnergyWN <= 0. )
00615 {
00616 EmisLines[ipH_LIKE][nelem][ipHi][ipLo].gf = 0.;
00617 EmisLines[ipH_LIKE][nelem][ipHi][ipLo].opacity = 0.;
00618 }
00619 else
00620 {
00621
00622
00623
00624
00625
00626 EmisLines[ipH_LIKE][nelem][ipHi][ipLo].gf =
00627 (float)(GetGF(EmisLines[ipH_LIKE][nelem][ipHi][ipLo].Aul,
00628 EmisLines[ipH_LIKE][nelem][ipHi][ipLo].EnergyWN,
00629 EmisLines[ipH_LIKE][nelem][ipHi][ipLo].gHi));
00630 ASSERT(EmisLines[ipH_LIKE][nelem][ipHi][ipLo].gf > 0.);
00631
00632
00633 EmisLines[ipH_LIKE][nelem][ipHi][ipLo].opacity =
00634 (float)(abscf(EmisLines[ipH_LIKE][nelem][ipHi][ipLo].gf,
00635 EmisLines[ipH_LIKE][nelem][ipHi][ipLo].EnergyWN,
00636 EmisLines[ipH_LIKE][nelem][ipHi][ipLo].gLo));
00637 ASSERT(EmisLines[ipH_LIKE][nelem][ipHi][ipLo].opacity > 0.);
00638 }
00639
00640
00641 EmisLines[ipH_LIKE][nelem][ipHi][ipLo].ipCont = INT_MIN;
00642 }
00643 }
00644
00645 nLo = 1;
00646 for( ipHi=2; ipHi < iso.nLyman[ipH_LIKE]; ipHi++ )
00647 {
00648 double EnergyRyd;
00649 iso.ExtraLymanLines[ipH_LIKE][nelem][ipHi].nelem = (int)(nelem+1);
00650
00651 iso.ExtraLymanLines[ipH_LIKE][nelem][ipHi].IonStg = (int)(nelem+1);
00652
00653 EnergyRyd =
00654 (float)(HIonPoten*
00655 ( 1./POW2((double)nLo) -1./POW2((double)ipHi) ) );
00656
00657 iso.ExtraLymanLines[ipH_LIKE][nelem][ipHi].EnergyErg =
00658 (float)(EnergyRyd*
00659 EN1RYD);
00660
00661 iso.ExtraLymanLines[ipH_LIKE][nelem][ipHi].EnergyK =
00662 (float)(EnergyRyd* TE1RYD);
00663
00664 iso.ExtraLymanLines[ipH_LIKE][nelem][ipHi].EnergyWN =
00665 (float)(EnergyRyd/ WAVNRYD);
00666
00667 iso.ExtraLymanLines[ipH_LIKE][nelem][ipHi].WLAng =
00668 (float)(1.0e8/
00669 iso.ExtraLymanLines[ipH_LIKE][nelem][ipHi].EnergyWN/
00670 RefIndex( iso.ExtraLymanLines[ipH_LIKE][nelem][ipHi].EnergyWN));
00671
00672 iso.ExtraLymanLines[ipH_LIKE][nelem][ipHi].gLo = 2.L;
00673
00674 iso.ExtraLymanLines[ipH_LIKE][nelem][ipHi].gHi = (float)(2.*ipHi*ipHi);
00675
00676 iso.ExtraLymanLines[ipH_LIKE][nelem][ipHi].Aul =
00677 (float)(HydroEinstA(0,ipHi)*z4);
00678
00679 iso.ExtraLymanLines[ipH_LIKE][nelem][ipHi].iRedisFun = iso.ipResoRedist[ipH_LIKE];
00680
00681 iso.ExtraLymanLines[ipH_LIKE][nelem][ipHi].gf =
00682 (float)(GetGF(iso.ExtraLymanLines[ipH_LIKE][nelem][ipHi].Aul,
00683 iso.ExtraLymanLines[ipH_LIKE][nelem][ipHi].EnergyWN,
00684 iso.ExtraLymanLines[ipH_LIKE][nelem][ipHi].gHi));
00685
00686 iso.ExtraLymanLines[ipH_LIKE][nelem][ipHi].opacity =
00687 (float)(abscf(iso.ExtraLymanLines[ipH_LIKE][nelem][ipHi].gf,
00688 iso.ExtraLymanLines[ipH_LIKE][nelem][ipHi].EnergyWN,
00689 iso.ExtraLymanLines[ipH_LIKE][nelem][ipHi].gLo));
00690
00691
00692 iso.ExtraLymanLines[ipH_LIKE][nelem][ipHi].ipCont = INT_MIN;
00693 }
00694
00695
00696 # if LOWDEN_LYMAN
00697
00698 for( ipHi=3; ipHi < iso.numLevels_max[ipH_LIKE][nelem]; ipHi++ )
00699 {
00700 float Ratio_lyman_alpha_Z1[25]={
00701 0.,0.,0.,
00702 5.52E-01f,
00703 3.30E-01f,
00704 2.96E-01f,
00705 2.80E-01f,
00706 2.74E-01f,
00707 2.72E-01f,
00708 2.72E-01f,
00709 2.74E-01f,
00710 2.76E-01f,
00711 2.78E-01f,
00712 2.81E-01f,
00713 2.84E-01f,
00714 2.86E-01f,
00715 2.89E-01f,
00716 2.92E-01f,
00717 2.95E-01f,
00718 2.98E-01f,
00719 3.01E-01f,
00720 3.05E-01f,
00721 3.09E-01f,
00722 3.13E-01f,
00723 3.18E-01f};
00724 float Ratio_lyman_alpha_Z2[25]={
00725 0.,0.,0.,
00726 4.52E-01f,
00727 2.38E-01f,
00728 1.98E-01f,
00729 1.80E-01f,
00730 1.71E-01f,
00731 1.66E-01f,
00732 1.64E-01f,
00733 1.63E-01f,
00734 1.63E-01f,
00735 1.64E-01f,
00736 1.65E-01f,
00737 1.66E-01f,
00738 1.68E-01f,
00739 1.69E-01f,
00740 1.71E-01f,
00741 1.72E-01f,
00742 1.73E-01f,
00743 1.75E-01f,
00744 1.76E-01f,
00745 1.78E-01f,
00746 1.79E-01f,
00747 1.80E-01f};
00748
00749 if( nelem==0 )
00750 {
00751 EmisLines[ipH_LIKE][nelem][ipHi][ipH1s].Aul = EmisLines[ipH_LIKE][nelem][ipHi][ipHi-1].Aul *
00752 Ratio_lyman_alpha_Z1[MIN2(23,ipHi) ];
00753 }
00754 else
00755 {
00756 EmisLines[ipH_LIKE][nelem][ipHi][ipH1s].Aul = EmisLines[ipH_LIKE][nelem][ipHi][ipHi-1].Aul *
00757 Ratio_lyman_alpha_Z2[MIN2(23,ipHi) ];
00758 }
00759
00760
00761 EmisLines[ipH_LIKE][nelem][ipHi][ipH1s].opacity =
00762 (float)(abscf(
00763 EmisLines[ipH_LIKE][nelem][ipHi][ipH1s].gf,
00764 EmisLines[ipH_LIKE][nelem][ipHi][ipH1s].EnergyWN,
00765 EmisLines[ipH_LIKE][nelem][ipHi][ipH1s].gLo));
00766 }
00767 # endif
00768
00769 EmisLines[ipH_LIKE][nelem][ipH2s][ipH1s].TauTot = 0.;
00770
00771
00772
00773
00774 EmisLines[ipH_LIKE][nelem][ipH2s][ipH1s].opacity /= 1e4f;
00775
00776
00777 EmisLines[ipH_LIKE][nelem][ipH2s][ipH1s].WLAng = 0.;
00778
00779
00780 EmisLines[ipH_LIKE][nelem][ipH2p][ipH2s].opacity = 1e-30f;
00781
00782
00783
00784 }
00785 }
00786
00787
00788 EmisLines[ipH_LIKE][ipHELIUM][3][ipH2s].WLAng = 1640.f;
00789 EmisLines[ipH_LIKE][ipHELIUM][3][ipH2p].WLAng = 1640.f;
00790
00791
00792
00793
00794
00795
00796 need = 0;
00797 for( nelem=0; nelem < LIMELM; nelem++ )
00798 {
00799 if( nelem < 2 || dense.lgElmtOn[nelem] )
00800 {
00801 need = MAX2( need , iso.numLevels_max[ipH_LIKE][nelem] );
00802 }
00803 }
00804 need = MAX2(need , iso.nLyman[ipH_LIKE]);
00805
00806
00807
00808
00809 hydro.HyLife[ipH2p] = 0.;
00810
00811
00812 for( ipHi=3; ipHi < need; ipHi++ )
00813 {
00814 hydro.HyLife[ipHi] = 0.;
00815
00816
00817 for( ipLo=ipH2s; ipLo < ipHi; ipLo++ )
00818 {
00819
00820
00821
00822
00823 double ea = HydroEinstA(ipLo,ipHi);
00824 ASSERT(ea>0.);
00825 hydro.HyLife[ipHi] += (float)ea;
00826 }
00827 }
00828
00829
00830 for( ipHi=need; ipHi<NHYDRO_MAX_LEVEL; ++ipHi )
00831 {
00832 hydro.HyLife[ipHi] = -FLT_MAX;
00833 }
00834
00835
00836 hydro.HyLife[ipH1s] = -FLT_MAX;
00837
00838 hydro.HyLife[ipH2s] = 8.226f;
00839
00840
00841
00842
00843 for( nelem=0; nelem < LIMELM; nelem++ )
00844 {
00845 if( nelem < 2 || dense.lgElmtOn[nelem] )
00846 {
00847
00848 z4 = POW2(nelem+1.);
00849 z4 *= z4;
00850
00851 EmisLines[ipH_LIKE][nelem][ipH2p][ipH2s].dampXvel = 1e-30f;
00852
00853 for( ipHi=ipH2p; ipHi < iso.numLevels_max[ipH_LIKE][nelem]; ipHi++ )
00854 {
00855 for( ipLo=ipH1s; ipLo < ipHi; ipLo++ )
00856 {
00857 if( EmisLines[ipH_LIKE][nelem][ipHi][ipLo].EnergyWN <= 0. )
00858 continue;
00859
00860
00861
00862
00863
00864 EmisLines[ipH_LIKE][nelem][ipHi][ipLo].dampXvel =
00865 (float)(
00866
00867 (hydro.HyLife[ipHi]*z4 +
00868
00869 EmisLines[ipH_LIKE][nelem][ipHi][ipH1s].Aul)/
00870 PI4/EmisLines[ipH_LIKE][nelem][ipHi][ipLo].EnergyWN);
00871
00872 ASSERT(EmisLines[ipH_LIKE][nelem][ipHi][ipLo].dampXvel> 0.);
00873 }
00874 }
00875
00876
00877 ipLo = 0;
00878 for( ipHi=2; ipHi < iso.nLyman[ipH_LIKE]; ipHi++ )
00879 {
00880 iso.ExtraLymanLines[ipH_LIKE][nelem][ipHi].dampXvel =
00881 (float)(
00882
00883 (hydro.HyLife[ipHi]*z4 +
00884
00885 iso.ExtraLymanLines[ipH_LIKE][nelem][ipHi].Aul)/
00886 PI4/iso.ExtraLymanLines[ipH_LIKE][nelem][ipHi].EnergyWN);
00887 }
00888 }
00889 }
00890
00891
00892
00893 hdamp[ipH2p] = EmisLines[ipH_LIKE][ipHYDROGEN][ipH2p][ipH1s].Aul*7.958e-6/0.75;
00894
00895
00896 hydro.HyLife[ipH2p] = EmisLines[ipH_LIKE][ipHYDROGEN][ipH2p][ipH1s].Aul;
00897
00898 for( ipHi=3; ipHi < iso.numLevels_max[ipH_LIKE][ipHYDROGEN]; ipHi++ )
00899 {
00900 hydro.HyLife[ipHi] = 0.;
00901 for( ipLo=ipH2s; ipLo < ipHi; ipLo++ )
00902 {
00903
00904
00905 hydro.HyLife[ipHi] += EmisLines[ipH_LIKE][ipHYDROGEN][ipHi][ipLo].Aul;
00906 }
00907
00908
00909 hdamp[ipHi] = (hydro.HyLife[ipHi] + EmisLines[ipH_LIKE][ipHYDROGEN][ipHi][ipH1s].Aul)*7.958e-6/
00910 (1. - 1./POW2( (float)ipHi));
00911 }
00912
00913
00914 hdamp[ipH1s] = 0.;
00915 hdamp[ipH2s] = 0.;
00916
00917
00918
00919 for( nelem=0; nelem < LIMELM; nelem++ )
00920 {
00921
00922 if( nelem < 2 || dense.lgElmtOn[nelem] )
00923 {
00924
00925
00926 Potential = t_ADfA::Inst().ph1(0,0,nelem,0)/EVRYD* 0.9998787;
00927
00928 for( ipHi=ipH2p; ipHi < iso.numLevels_max[ipH_LIKE][nelem]; ipHi++ )
00929 {
00930 iso.xIsoLevNIonRyd[ipH_LIKE][nelem][ipHi] =
00931 Potential/POW2((double)ipHi);
00932
00933
00934 }
00935
00936
00937 iso.xIsoLevNIonRyd[ipH_LIKE][nelem][ipH2s] = iso.xIsoLevNIonRyd[ipH_LIKE][nelem][ipH2p];
00938
00939
00940
00941
00942 iso.xIsoLevNIonRyd[ipH_LIKE][nelem][ipH1s] = Potential;
00943
00944
00945 }
00946 }
00947
00948 for( ipISO=ipH_LIKE; ipISO<NISO; ++ipISO )
00949 {
00950 for( nelem=0; nelem < LIMELM; nelem++ )
00951 {
00952 if( nelem < 2 || dense.lgElmtOn[nelem] )
00953 {
00954 for( n=0; n < iso.numLevels_max[ipISO][nelem]; n++ )
00955 {
00956 iso.PopLTE[ipISO][nelem][n] = 0.;
00957 iso.ColIoniz[ipISO][nelem][n] = 0.;
00958 iso.gamnc[ipISO][nelem][n] = -DBL_MAX;
00959 iso.RecomInducRate[ipISO][nelem][n] = -DBL_MAX;
00960 iso.DepartCoef[ipISO][nelem][n] = -DBL_MAX;
00961 iso.Pop2Ion[ipISO][nelem][n] = 0.;
00962 iso.RateLevel2Cont[ipISO][nelem][n] = 0.;
00963 iso.RateCont2Level[ipISO][nelem][n] = 0.;
00964 iso.ConOpacRatio[ipISO][nelem][n] = 1.f;
00965 iso.RadRecomb[ipISO][nelem][n][ipRecRad] = 0.;
00966 iso.RadRecomb[ipISO][nelem][n][ipRecNetEsc] = 1.;
00967 iso.RadRecomb[ipISO][nelem][n][ipRecEsc] = 1.;
00968 }
00969 }
00970 }
00971 }
00972
00973
00974
00975 iso.ConOpacRatio[ipH_LIKE][ipHYDROGEN][0] = 1e-5f;
00976 iso.ConOpacRatio[ipH_LIKE][ipHELIUM][0] = 1e-5f;
00977 iso.ConOpacRatio[ipHE_LIKE][ipHELIUM][0] = 1e-5f;
00978
00979
00980
00981 free(hdamp);
00982
00983
00984 iso_zero();
00985
00986 if( helike.lgHugeCaseB == true )
00987 {
00988 iso.numLevels_max[ipHE_LIKE][ipHELIUM] = NumHeLinesSav;
00989 }
00990
00991 DEBUG_EXIT( "iso_create()" );
00992 return;
00993 }
00994
00995
00996 static void iso_zero(void)
00997 {
00998 long int i,
00999 ipHi,
01000 ipISO,
01001 ipLo,
01002 nelem;
01003
01004 DEBUG_ENTRY( "iso_zero()" );
01005
01006 hydro.HLineWidth = 0.;
01007
01008
01009 for( ipISO=ipH_LIKE; ipISO < NISO; ++ipISO )
01010 {
01011 for( nelem=ipISO; nelem < LIMELM; nelem++ )
01012 {
01013
01014 iso.numLevels_local[ipISO][nelem] = iso.numLevels_max[ipISO][nelem];
01015
01016
01017 if( nelem < 2 || dense.lgElmtOn[nelem] )
01018 {
01019 for( ipLo=0; ipLo < (iso.numLevels_max[ipISO][nelem] - 1); ipLo++ )
01020 {
01021 for( ipHi=ipLo + 1; ipHi < iso.numLevels_max[ipISO][nelem]; ipHi++ )
01022 {
01023 EmisLines[ipISO][nelem][ipHi][ipLo].Pesc = 1.0;
01024
01025
01026 EmisLines[ipISO][nelem][ipHi][ipLo].Pdest = 0.0;
01027 EmisLines[ipISO][nelem][ipHi][ipLo].Pelec_esc = 0.0;
01028
01029
01030 EmisLines[ipISO][nelem][ipHi][ipLo].PopHi = 0.0;
01031 EmisLines[ipISO][nelem][ipHi][ipLo].PopLo = 0.0;
01032
01033 EmisLines[ipISO][nelem][ipHi][ipLo].xIntensity = 0.0;
01034
01035
01036
01037 EmisLines[ipISO][nelem][ipHi][ipLo].pump = 0.;
01038 EmisLines[ipISO][nelem][ipHi][ipLo].cool = 0.;
01039 EmisLines[ipISO][nelem][ipHi][ipLo].heat = 0.;
01040 EmisLines[ipISO][nelem][ipHi][ipLo].ColOvTot = 0.;
01041 EmisLines[ipISO][nelem][ipHi][ipLo].PopOpc = 0.;
01042 }
01043 }
01044 }
01045 }
01046 }
01047
01048
01049 for( nelem=1; nelem < LIMELM; nelem++ )
01050 {
01051
01052 if( nelem < 2 || dense.lgElmtOn[nelem] )
01053 {
01054 for( ipHi = 0; ipHi < 4; ipHi++ )
01055 {
01056 He1AutoLines[nelem][ipHi].Pesc = 1.0;
01057
01058
01059 He1AutoLines[nelem][ipHi].Pdest = 0.0;
01060 He1AutoLines[nelem][ipHi].Pelec_esc = 0.0;
01061
01062
01063 He1AutoLines[nelem][ipHi].PopHi = 0.0;
01064 He1AutoLines[nelem][ipHi].PopLo = 0.0;
01065
01066 He1AutoLines[nelem][ipHi].xIntensity = 0.0;
01067
01068
01069
01070 He1AutoLines[nelem][ipHi].pump = 0.;
01071 He1AutoLines[nelem][ipHi].cool = 0.;
01072 He1AutoLines[nelem][ipHi].heat = 0.;
01073 He1AutoLines[nelem][ipHi].ColOvTot = 0.;
01074 He1AutoLines[nelem][ipHi].PopOpc = 0.;
01075 }
01076 }
01077 }
01078
01079
01080
01081 for( i=0; i <= nLevel1; i++ )
01082 {
01083 TauLines[i].TauIn = opac.taumin;
01084 TauLines[i].TauCon = opac.taumin;
01085 TauLines[i].ColOvTot = 0.;
01086
01087 TauLines[i].TauTot = 1e30f;
01088
01089 TauLines[i].Pesc = 1.;
01090
01091 TauLines[i].FracInwd = 1.;
01092
01093 TauLines[i].Pdest = 0.;
01094 TauLines[i].Pelec_esc = 0.;
01095
01096 TauLines[i].pump = 0.;
01097
01098 TauLines[i].PopLo = 0.;
01099
01100
01101 TauLines[i].PopHi = 0.;
01102
01103 TauLines[i].PopOpc = 0.;
01104
01105 TauLines[i].cool = 0.;
01106 TauLines[i].heat = 0.;
01107
01108 TauLines[i].xIntensity = 0.;
01109
01110 TauLines[i].phots = 0.;
01111 }
01112
01113 for( i=0; i < nUTA; i++ )
01114 {
01115 UTALines[i].PopLo = 0.;
01116 UTALines[i].PopHi = 0.;
01117
01118
01119
01120 UTALines[i].TauIn = opac.taumin;
01121 UTALines[i].TauCon = opac.taumin;
01122 UTALines[i].ColOvTot = 0.;
01123
01124 UTALines[i].TauTot = 1e20f;
01125
01126 UTALines[i].Pesc = 1.;
01127
01128 UTALines[i].FracInwd = 1.;
01129
01130 UTALines[i].Pdest = 0.;
01131 UTALines[i].Pelec_esc = 0.;
01132
01133 UTALines[i].pump = 0.;
01134
01135 UTALines[i].PopLo = 0.;
01136
01137 UTALines[i].PopHi = 0.;
01138
01139 UTALines[i].PopOpc = 0.;
01140
01141 UTALines[i].cool = 0.;
01142
01143
01144
01145
01146 UTALines[i].xIntensity = 0.;
01147
01148 UTALines[i].phots = 0.;
01149 }
01150
01151 for( i=0; i < nWindLine; i++ )
01152 {
01153 TauLine2[i].PopLo = 0.;
01154 TauLine2[i].PopHi = 0.;
01155
01156
01157
01158 TauLine2[i].TauIn = opac.taumin;
01159 TauLine2[i].TauCon = opac.taumin;
01160 TauLine2[i].ColOvTot = 0.;
01161
01162 TauLine2[i].TauTot = 1e20f;
01163
01164 TauLine2[i].Pesc = 1.;
01165
01166 TauLine2[i].FracInwd = 1.;
01167
01168 TauLine2[i].Pdest = 0.;
01169 TauLine2[i].Pelec_esc = 0.;
01170
01171 TauLine2[i].pump = 0.;
01172
01173 TauLine2[i].PopLo = 0.;
01174
01175 TauLine2[i].PopHi = 0.;
01176
01177 TauLine2[i].PopOpc = 0.;
01178
01179 TauLine2[i].cool = 0.;
01180 TauLine2[i].heat = 0.;
01181
01182 TauLine2[i].xIntensity = 0.;
01183
01184 TauLine2[i].phots = 0.;
01185 }
01186
01187 for( i=0; i < nHFLines; i++ )
01188 {
01189 HFLines[i].PopLo = 0.;
01190 HFLines[i].PopHi = 0.;
01191
01192
01193
01194 HFLines[i].TauIn = opac.taumin;
01195 HFLines[i].TauCon = opac.taumin;
01196 HFLines[i].ColOvTot = 0.;
01197
01198 HFLines[i].TauTot = 1e20f;
01199
01200 HFLines[i].Pesc = 1.;
01201
01202 HFLines[i].FracInwd = 1.;
01203
01204 HFLines[i].Pdest = 0.;
01205 HFLines[i].Pelec_esc = 0.;
01206
01207 HFLines[i].pump = 0.;
01208
01209 HFLines[i].PopLo = 0.;
01210
01211 HFLines[i].PopHi = 0.;
01212
01213 HFLines[i].PopOpc = 0.;
01214
01215 HFLines[i].cool = 0.;
01216 HFLines[i].heat = 0.;
01217
01218 HFLines[i].xIntensity = 0.;
01219
01220 HFLines[i].phots = 0.;
01221 }
01222
01223 for( i=0; i < nCORotate; i++ )
01224 {
01225 C12O16Rotate[i].PopLo = 0.;
01226 C13O16Rotate[i].PopLo = 0.;
01227 C12O16Rotate[i].PopHi = 0.;
01228 C13O16Rotate[i].PopHi = 0.;
01229
01230
01231
01232 C12O16Rotate[i].TauIn = opac.taumin;
01233 C13O16Rotate[i].TauIn = opac.taumin;
01234 C12O16Rotate[i].TauCon = opac.taumin;
01235 C13O16Rotate[i].TauCon = opac.taumin;
01236 C12O16Rotate[i].ColOvTot = 0.;
01237 C13O16Rotate[i].ColOvTot = 0.;
01238
01239 C12O16Rotate[i].TauTot = 1e20f;
01240 C13O16Rotate[i].TauTot = 1e20f;
01241
01242 C12O16Rotate[i].Pesc = 1.;
01243 C13O16Rotate[i].Pesc = 1.;
01244
01245 C12O16Rotate[i].FracInwd = 1.;
01246 C13O16Rotate[i].FracInwd = 1.;
01247
01248 C12O16Rotate[i].Pdest = 0.;
01249 C13O16Rotate[i].Pdest = 0.;
01250 C12O16Rotate[i].Pelec_esc = 0.;
01251 C13O16Rotate[i].Pelec_esc = 0.;
01252
01253 C12O16Rotate[i].pump = 0.;
01254 C13O16Rotate[i].pump = 0.;
01255
01256 C12O16Rotate[i].PopLo = 0.;
01257 C13O16Rotate[i].PopLo = 0.;
01258
01259 C12O16Rotate[i].PopHi = 0.;
01260 C13O16Rotate[i].PopHi = 0.;
01261
01262 C12O16Rotate[i].PopOpc = 0.;
01263 C13O16Rotate[i].PopOpc = 0.;
01264
01265 C12O16Rotate[i].cool = 0.;
01266 C13O16Rotate[i].cool = 0.;
01267 C12O16Rotate[i].heat = 0.;
01268 C13O16Rotate[i].heat = 0.;
01269
01270 C12O16Rotate[i].xIntensity = 0.;
01271 C13O16Rotate[i].xIntensity = 0.;
01272
01273 C12O16Rotate[i].phots = 0.;
01274 C13O16Rotate[i].phots = 0.;
01275 }
01276
01277 DEBUG_EXIT( "iso_zero()" );
01278 return;
01279 }
01280