Changeset 1142
- Timestamp:
- 05/21/07 12:12:52 (18 months ago)
- Location:
- trunk
- Files:
-
- 3 removed
- 28 modified
-
source/assert_results.cpp (modified) (1 diff)
-
source/cddefines.h (modified) (1 diff)
-
source/cdspec.cpp (modified) (2 diffs)
-
source/helike.cpp (modified) (6 diffs)
-
source/helike.h (modified) (1 diff)
-
source/helike_create.cpp (modified) (26 diffs)
-
source/helike_cs.cpp (modified) (26 diffs)
-
source/helike_einsta.cpp (modified) (3 diffs)
-
source/helike_level.cpp (modified) (10 diffs)
-
source/helike_recom.cpp (modified) (15 diffs)
-
source/hydro_vs_rates.cpp (modified) (4 diffs)
-
source/ion_recomb_Badnell.cpp (modified) (2 diffs)
-
source/iso.h (modified) (5 diffs)
-
source/iso_cool.cpp (modified) (2 diffs)
-
source/iso_create.cpp (modified) (24 diffs)
-
source/optimize_func.cpp (modified) (1 diff)
-
source/parse_atomhelike.cpp (modified) (5 diffs)
-
source/path.cpp (modified) (1 diff)
-
source/prt_lines.cpp (modified) (1 diff)
-
source/prt_lines_helium.cpp (modified) (2 diffs)
-
source/prt_zone.cpp (modified) (3 diffs)
-
source/punch_do.cpp (modified) (1 diff)
-
source/rt_line_all.cpp (modified) (2 diffs)
-
source/rt_tau_inc.cpp (modified) (1 diff)
-
source/rt_tau_init.cpp (modified) (1 diff)
-
source/rt_tau_reset.cpp (modified) (1 diff)
-
source/sanity_check.cpp (modified) (2 diffs)
-
source/zero.cpp (modified) (2 diffs)
-
tsuite/auto/he1n2t4.in (deleted)
-
tsuite/auto/he1n4t4.in (deleted)
-
tsuite/auto/he1n6t4.in (deleted)
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/assert_results.cpp
r1111 r1142 2367 2367 { 2368 2368 fprintf( ioQQQ, "\t%li %li %li %li %li %li", 2369 iso.quant_desig[ipHE_LIKE][ipHELIUM][ipHi].n,2370 iso.quant_desig[ipHE_LIKE][ipHELIUM][ipHi].l,2371 iso.quant_desig[ipHE_LIKE][ipHELIUM][ipHi].s,2372 iso.quant_desig[ipHE_LIKE][ipHELIUM][ipLo].n,2373 iso.quant_desig[ipHE_LIKE][ipHELIUM][ipLo].l,2374 iso.quant_desig[ipHE_LIKE][ipHELIUM][ipLo].s );2369 StatesElem[ipHE_LIKE][ipHELIUM][ipHi].n, 2370 StatesElem[ipHE_LIKE][ipHELIUM][ipHi].l, 2371 StatesElem[ipHE_LIKE][ipHELIUM][ipHi].s, 2372 StatesElem[ipHE_LIKE][ipHELIUM][ipLo].n, 2373 StatesElem[ipHE_LIKE][ipHELIUM][ipLo].l, 2374 StatesElem[ipHE_LIKE][ipHELIUM][ipLo].s ); 2375 2375 break; 2376 2376 } -
trunk/source/cddefines.h
r1121 r1142 1029 1029 double ConBoltz; 1030 1030 1031 long n, l, s, j; 1032 1031 1033 } quantumState; 1032 1034 -
trunk/source/cdspec.cpp
r1078 r1142 463 463 { 464 464 /* this is exp(-tau) */ 465 cont = (float*)MALLOC( sizeof(float)*(size_t)rfield.nupper ); 466 /* need to free the vector once done */ 467 lgFREE = true; 465 468 for( j=0; j<nEnergy; ++j) 466 469 { 467 470 /* This is the TOTAL attentuation in both the continuum and lines. 468 471 * Jon Miller discovered that the line attentuation was missing in 07.02 */ 469 ReturnedSpectrum[j] = opac.ExpmTau[j]*rfield.trans_coef[j];472 cont[j] = opac.ExpmTau[j]*rfield.trans_coef[j]; 470 473 } 471 474 return; … … 478 481 } 479 482 480 /* this is array index used in Spec_cont */481 iplo = 0;482 iphi = 0;483 483 /* now generate the continua */ 484 484 for( ncell = 0; ncell < nEnergy; ++ncell ) -
trunk/source/helike.cpp
r1116 r1142 69 69 /*lint -e662 creation of out of bound pointer */ 70 70 /*lint -e661 creation of out of bound pointer */ 71 72 /* The Elevels data type, and then the iso.quant_desig[ipHE_LIKE] structure,73 * which contain the quantum numbers n,l, and s for a given74 * energy level, are defined in iso.h, for use in multiple subroutines. */75 76 /*typedef struct {77 long n;78 long s;79 long l;80 } Elevels; iso.h */81 82 /* An array of structures each containing for a given element, n,l, and s83 * s=0 for singlets, s=1 for triplets84 * in helike.h85 static Elevels **iso.quant_desig[ipHE_LIKE]; */86 71 87 72 /*static long ipLev,globalZ;*/ … … 172 157 173 158 /* evaluate recombination rates */ 174 /* if the flag iso.lgHugeCaseB[ipISO] is true, cloudy exits in HeRecom(). */175 159 HeRecom(nelem); 176 160 … … 303 287 304 288 ipFirstCollapsed= iso.numLevels_local[ipHE_LIKE][nelem]-iso.nCollapsed_local[ipHE_LIKE][nelem]; 305 nResolved = iso.quant_desig[ipHE_LIKE][nelem][ipFirstCollapsed-1].n;289 nResolved = StatesElem[ipHE_LIKE][nelem][ipFirstCollapsed-1].n; 306 290 ASSERT( nResolved == iso.n_HighestResolved_local[ipHE_LIKE][nelem] ); 307 291 ASSERT(nResolved > 0 ); … … 344 328 for( il = ipFirstCollapsed; il < iso.numLevels_local[ipHE_LIKE][nelem]; ++il) 345 329 { 346 in = iso.quant_desig[ipHE_LIKE][nelem][il].n;330 in = StatesElem[ipHE_LIKE][nelem][il].n; 347 331 348 332 /* prin quan number of collapsed levels */ … … 365 349 366 350 ipFirstCollapsed= iso.numLevels_local[ipHE_LIKE][nelem]-iso.nCollapsed_local[ipHE_LIKE][nelem]; 367 nResolved = iso.quant_desig[ipHE_LIKE][nelem][ipFirstCollapsed-1].n;351 nResolved = StatesElem[ipHE_LIKE][nelem][ipFirstCollapsed-1].n; 368 352 ASSERT( nResolved == iso.n_HighestResolved_local[ipHE_LIKE][nelem] ); 369 353 ASSERT(nResolved > 0 ); … … 407 391 for( il = ipFirstCollapsed; il < iso.numLevels_local[ipHE_LIKE][nelem]; ++il) 408 392 { 409 in = iso.quant_desig[ipHE_LIKE][nelem][il].n;393 in = StatesElem[ipHE_LIKE][nelem][il].n; 410 394 /* prin quan number of collapsed levels */ 411 395 fprintf(ioQQQ," %2ld ",in); -
trunk/source/helike.h
r1062 r1142 21 21 /** the magic number for the table of He1 case A and B emissivities, YYMMDD */ 22 22 #define CASEABMAGIC (51214) 23 24 /** these macros are just an easy way to return the quantum numbers of a given level. */25 #define N_(A_) (iso.quant_desig[ipISO][nelem][A_].n)26 #define L_(A_) (iso.quant_desig[ipISO][nelem][A_].l)27 #define S_(A_) (iso.quant_desig[ipISO][nelem][A_].s)28 #define J_(A_) ( (A_>=ipHe2p3P0 && A_<=ipHe2p3P2 && ipISO==ipHE_LIKE) ? (A_-3):0 )29 23 30 24 /** He-like main routine to call HeLikeLevel and determine -
trunk/source/helike_create.cpp
r1116 r1142 327 327 }; 328 328 329 long int n = iso.quant_desig[ipHE_LIKE][nelem][ipLo].n;330 long int lqn = iso.quant_desig[ipHE_LIKE][nelem][ipLo].l;331 long int s = iso.quant_desig[ipHE_LIKE][nelem][ipLo].s;329 long int n = StatesElem[ipHE_LIKE][nelem][ipLo].n; 330 long int lqn = StatesElem[ipHE_LIKE][nelem][ipLo].l; 331 long int s = StatesElem[ipHE_LIKE][nelem][ipLo].s; 332 332 333 333 ASSERT(n >= 1L); … … 414 414 void HeCreate(void) 415 415 { 416 double **energies, *n_effs, **SumAPerN, **RobbinsC , ***HeliumAs;416 double **energies, *n_effs, **SumAPerN, **RobbinsC; 417 417 418 418 long int i, i1; 419 419 long int j, ipLo, ipHi, ipFirstCollapsed, nelem; 420 420 int ipISO = ipHE_LIKE; 421 422 421 423 422 static int nCalled = 0; … … 451 450 } 452 451 453 /* This is the flag that says to simulate the work of Benjamin, Skillman, and Smits (1999). */ 454 if( iso.lgSetBenjamin[ipISO] ) 455 { 456 max_num_levels = iso.numLevels_max[ipHE_LIKE][ipHELIUM]; 457 max_n = iso.n_HighestResolved_max[ipHE_LIKE][ipHELIUM]; 458 iso.lgInd2nu_On = false; 459 460 if( iso.lgCompileRecomb[ipISO] ) 461 { 462 fprintf( ioQQQ, " Not compiling He recomb file...can not do with Benjamin command set."); 463 iso.lgCompileRecomb[ipISO] = false; 464 } 465 if( iso.lgFSM[ipISO] ) 466 { 467 fprintf( ioQQQ, " Can not include f-s mixing with the Benjamin command! I have turned it off."); 468 iso.lgFSM[ipISO] = false; 469 } 470 } 471 else 472 { 473 /* first find the largest number of levels in any element in the he-like sequence */ 474 max_num_levels = 0; 475 max_n = 0; 476 for( nelem=ipHELIUM; nelem < LIMELM; nelem++ ) 477 { 478 /* only check elements that are turned on */ 479 if( nelem == ipHELIUM || dense.lgElmtOn[nelem] ) 480 { 481 max_num_levels = MAX2( max_num_levels, iso.numLevels_max[ipHE_LIKE][nelem] ); 482 max_n = MAX2( max_n, iso.n_HighestResolved_max[ipHE_LIKE][nelem] + iso.nCollapsed_max[ipHE_LIKE][nelem] ); 483 } 484 } 485 } 486 487 /* This is the flag for including random error generation in the calculations. */ 488 if( iso.lgRandErrGen[ipISO] ) 489 { 490 /* These are only needed if error generation is turned on */ 491 /* this is the standard deviation for the error, 492 * first dimension is iso, 493 * second is nelem, 494 * third, malloc'd below, is upper level, 495 * fourth, malloc'd below, is lower level, 496 * fifth, malloc'd below, is for radiative, collisional, or energy errors. 497 * MACROS are used for the last dimension: IPRAD, IPCOLLIS, and IPENERGY. */ 498 iso.Error = (float*****)MALLOC(sizeof(float****)*(unsigned)NISO ); 499 iso.Error[ipISO] = (float****)MALLOC(sizeof(float***)*(unsigned)LIMELM ); 500 501 iso.ErrorFactor = (float*****)MALLOC(sizeof(float****)*(unsigned)NISO ); 502 iso.ErrorFactor[ipISO] = (float****)MALLOC(sizeof(float***)*(unsigned)LIMELM ); 503 } 504 505 /* Total of exchange collisions out of 2^3S into singlet states for every species in the sequence. */ 506 iso.qTot2TripS = (double**)MALLOC(sizeof(double*)*(unsigned)NISO ); 507 iso.qTot2TripS[ipISO] = (double*)MALLOC(sizeof(double)*(unsigned)LIMELM ); 508 509 /* In this array are stored the C values described in Robbins 68. */ 510 HeliumAs = (double***)MALLOC(sizeof(double**)*(unsigned)(LIMELM) ); 511 512 /* branching ratios from all levels to all lower levels for all species. */ 513 iso.BranchRatio = (double****)MALLOC(sizeof(double***)*(unsigned)(NISO) ); 514 iso.BranchRatio[ipISO] = (double***)MALLOC(sizeof(double**)*(unsigned)(LIMELM) ); 515 516 /* In this array are stored the C values described in Robbins 68. */ 517 /* >>chng 06 jul 10, added "nelem" dimension to CascadeProb array. */ 518 iso.CascadeProb = (double****)MALLOC(sizeof(double***)*(unsigned)(NISO) ); 519 iso.CascadeProb[ipISO] = (double***)MALLOC(sizeof(double**)*(unsigned)(LIMELM) ); 452 /* first find the largest number of levels in any element in the he-like sequence */ 453 max_num_levels = 0; 454 max_n = 0; 455 for( nelem=ipHELIUM; nelem < LIMELM; nelem++ ) 456 { 457 /* only check elements that are turned on */ 458 if( nelem == ipHELIUM || dense.lgElmtOn[nelem] ) 459 { 460 max_num_levels = MAX2( max_num_levels, iso.numLevels_max[ipHE_LIKE][nelem] ); 461 max_n = MAX2( max_n, iso.n_HighestResolved_max[ipHE_LIKE][nelem] + iso.nCollapsed_max[ipHE_LIKE][nelem] ); 462 } 463 } 520 464 521 465 /*char ***helike chLevel[lev][lev][str]*/ … … 524 468 /* In this array are stored the C values described in Robbins 68. */ 525 469 RobbinsC = (double**)MALLOC(sizeof(double*)*(unsigned)(max_num_levels) ); 526 527 /* Effective recombination into all levels for all species. */528 iso.RadEffec = (double**)MALLOC(sizeof(double*)*(unsigned)(max_num_levels) );529 iso.RadEffec[ipISO] = (double*)MALLOC(sizeof(double)*(unsigned)(max_num_levels) );530 531 if( iso.lgRandErrGen[ipISO] && iso.lgHugeCaseB[ipISO] )532 {533 /* Uncertainty in cascade probability and effective recombination,534 * only when error generation is turned on. */535 iso.SigmaCascadeProb[ipISO] = (double**)MALLOC(sizeof(double*)*(unsigned)(max_num_levels) );536 iso.SigmaRadEffec[ipISO] = (double*)MALLOC(sizeof(double)*(unsigned)(max_num_levels) );537 }538 470 539 471 /* Wavenumber level energies for each element are stored here. */ 540 472 energies = (double**)MALLOC(sizeof(double*)*(unsigned)LIMELM ); 541 473 542 /* The lifetime of individual levels. iso.Lifetime[ipISO][LIMELM][iso.numLevels_max[ipHE_LIKE][nelem]] */ 543 iso.Lifetime = (double***)MALLOC(sizeof(double**)*(unsigned)NISO ); 544 iso.Lifetime[ipISO] = (double**)MALLOC(sizeof(double*)*(unsigned)LIMELM ); 545 546 if( iso.lgRandErrGen[ipISO] && iso.lgHugeCaseB[ipISO] ) 547 { 548 /* The error in inverse lifetimes, for all species and all levels. */ 549 iso.SigmaAtot[ipISO] = (double**)MALLOC(sizeof(double*)*(unsigned)LIMELM ); 550 } 551 474 552 475 /* The sum of all A's coming out of a given n...used to make sure trend is monotonic */ 553 476 SumAPerN = (double**)MALLOC(sizeof(double*)*(unsigned)LIMELM ); … … 563 486 { 564 487 RobbinsC[ipLo] = (double*)MALLOC(sizeof(double)*(unsigned)(ipLo+1) ); 565 566 if( iso.lgRandErrGen[ipISO] && iso.lgHugeCaseB[ipISO] ) 567 { 568 /* error in cascade probabilities, for all levels, but helium only. */ 569 iso.SigmaCascadeProb[ipISO][ipLo] = (double*)MALLOC(sizeof(double)*(unsigned)(ipLo+1) ); 570 } 571 } 572 488 } 489 490 573 491 for( nelem=ipHELIUM; nelem < LIMELM; ++nelem ) 574 492 { … … 577 495 /* energies for all levels and all species, info later stored elsewhere and space freed. */ 578 496 energies[nelem] = (double*)MALLOC(sizeof(double)*(unsigned)(iso.numLevels_max[ipHE_LIKE][nelem]) ); 579 580 /* In this array are stored the C values described in Robbins 68. 581 * this is a permanent one for helium only. */ 582 iso.CascadeProb[ipISO][nelem] = (double**)MALLOC(sizeof(double*)*(unsigned)(iso.numLevels_max[ipHE_LIKE][nelem]) ); 583 584 /* If enabled, malloc the remaining dimensions of the error infrastructure. */ 585 if( iso.lgRandErrGen[ipISO] ) 586 { 587 /* Here we add one slot for rates involving the continuum and one additional for an electric fence. */ 588 iso.Error[ipISO][nelem] = (float***)MALLOC(sizeof(float**)*(unsigned)(iso.numLevels_max[ipHE_LIKE][nelem]+2) ); 589 590 iso.ErrorFactor[ipISO][nelem] = (float***)MALLOC(sizeof(float**)*(unsigned)(iso.numLevels_max[ipHE_LIKE][nelem]+2) ); 591 592 for( i = 1; i< iso.numLevels_max[ipHE_LIKE][nelem] + 1; i++ ) 593 { 594 iso.Error[ipISO][nelem][i] = (float**)MALLOC(sizeof(float*)*(unsigned)(i+1) ); 595 596 iso.ErrorFactor[ipISO][nelem][i] = (float**)MALLOC(sizeof(float*)*(unsigned)(i+1) ); 597 598 for( j = 0; j<i+1; j++ ) 599 { 600 iso.Error[ipISO][nelem][i][j] = (float*)MALLOC(sizeof(float)*(unsigned)(3) ); 601 602 iso.ErrorFactor[ipISO][nelem][i][j] = (float*)MALLOC(sizeof(float)*(unsigned)(3) ); 603 604 /* set each of these to negative one */ 605 for( i1=0; i1<3; i1++ ) 606 { 607 iso.Error[ipISO][nelem][i][j][i1] = -1.f; 608 iso.ErrorFactor[ipISO][nelem][i][j][i1] = -1.f; 609 } 610 } 611 } 612 613 if( iso.lgHugeCaseB[ipISO] ) 614 { 615 iso.SigmaAtot[ipISO][nelem] = (double*)MALLOC(sizeof(double)*(unsigned)(iso.numLevels_max[ipHE_LIKE][nelem]) ); 616 } 617 } 618 619 HeliumAs[nelem] = (double**)MALLOC(sizeof(double*)*(unsigned)(iso.numLevels_max[ipHE_LIKE][nelem]+1) ); 620 621 iso.BranchRatio[ipISO][nelem] = (double**)MALLOC(sizeof(double*)*(unsigned)(iso.numLevels_max[ipHE_LIKE][nelem]+1) ); 622 623 for( i = 1; i< iso.numLevels_max[ipHE_LIKE][nelem]; i++ ) 624 { 625 HeliumAs[nelem][i] = (double*)MALLOC(sizeof(double)*(unsigned)(i+1) ); 626 627 iso.BranchRatio[ipISO][nelem][i] = (double*)MALLOC(sizeof(double)*(unsigned)(i+1) ); 628 629 for( j = 0; j< i; j++ ) 630 { 631 632 HeliumAs[nelem][i][j] = -DBL_MAX; 633 iso.BranchRatio[ipISO][nelem][i][j] = -DBL_MAX; 634 } 635 } 636 637 /* malloc dimension for number of levels of each species. */ 638 iso.Lifetime[ipISO][nelem] = (double*)MALLOC(sizeof(double)*(unsigned)(iso.numLevels_max[ipHE_LIKE][nelem]) ); 639 497 640 498 /* The sum of all A's coming out of a given n...used to make sure trend is monotonic */ 641 499 SumAPerN[nelem] = (double*)MALLOC(sizeof(double)* (unsigned)(iso.n_HighestResolved_max[ipHE_LIKE][nelem] + iso.nCollapsed_max[ipHE_LIKE][nelem] + 1) ); 642 643 /* malloc final dimension of cascade probabilities. */644 for( i = 0; i < iso.numLevels_max[ipHE_LIKE][nelem]; ++i)645 {646 iso.CascadeProb[ipISO][nelem][i] = (double*)MALLOC(sizeof(double)*(unsigned)(i+1) );647 648 for( j = 0; j< i; j++ )649 {650 iso.CascadeProb[ipISO][nelem][i][j] = -DBL_MAX;651 }652 }653 500 } 654 501 } … … 704 551 iso.Lifetime[ipISO][nelem][ipHe1s1S] = 0.; 705 552 iso.CascadeProb[ipISO][nelem][ipHe1s1S][ipHe1s1S] = 1.; 706 if( iso.lgRandErrGen[ipISO] && iso.lgHugeCaseB[ipISO])553 if( iso.lgRandErrGen[ipISO] ) 707 554 { 708 555 iso.SigmaAtot[ipISO][nelem][ipHe1s1S] = 0.; 709 iso.SigmaCascadeProb[ipISO][ ipHe1s1S][ipHe1s1S] = 0.;556 iso.SigmaCascadeProb[ipISO][nelem][ipHe1s1S][ipHe1s1S] = 0.; 710 557 } 711 558 StatesElem[ipHE_LIKE][nelem][ipHe1s1S].g = 1.f; … … 726 573 ( N_(ipHi) - n_effs[ipHi] >= 0. ) ); 727 574 728 HeliumAs[nelem][ipHi][ipHi] = 0.;729 730 575 if(ipHi >= ipFirstCollapsed ) 731 576 { … … 748 593 double Enerwn, Aul, Aul1; 749 594 750 if( !iso.lgHugeCaseB[ipISO] )751 595 { 752 596 /** \todo 1 all this should already be true. */ … … 816 660 */ 817 661 818 /* The Transitions structure does not exist if helike.lgHugeCaseB is true, so only 819 * set these values if false. */ 820 if( !iso.lgHugeCaseB[ipISO] ) 821 { 822 Transitions[ipHE_LIKE][nelem][ipHi][ipLo].EnergyWN = (float)Enerwn; 823 Transitions[ipHE_LIKE][nelem][ipHi][ipLo].EnergyErg = (float)(Enerwn*WAVNRYD*EN1RYD); 824 Transitions[ipHE_LIKE][nelem][ipHi][ipLo].EnergyK = (float)(Enerwn*WAVNRYD*TE1RYD ); 825 } 662 Transitions[ipHE_LIKE][nelem][ipHi][ipLo].EnergyWN = (float)Enerwn; 663 Transitions[ipHE_LIKE][nelem][ipHi][ipLo].EnergyErg = (float)(Enerwn*WAVNRYD*EN1RYD); 664 Transitions[ipHE_LIKE][nelem][ipHi][ipLo].EnergyK = (float)(Enerwn*WAVNRYD*TE1RYD ); 826 665 } 827 666 … … 888 727 } 889 728 890 /* Transitions structure only exists if iso.lgHugeCaseB[ipISO] is false. */ 891 if( iso.lgHugeCaseB[ipISO] == false ) 892 { 893 /* set the transition probability */ 894 Transitions[ipHE_LIKE][nelem][ipHi][ipLo].Emis.Aul = (float)Aul; 895 896 ASSERT(Transitions[ipHE_LIKE][nelem][ipHi][ipLo].Emis.Aul > 0.); 897 } 898 899 HeliumAs[nelem][ipHi][ipLo] = Aul; 900 ASSERT(HeliumAs[nelem][ipHi][ipLo] > 0.); 729 /* set the transition probability */ 730 Transitions[ipHE_LIKE][nelem][ipHi][ipLo].Emis.Aul = (float)Aul; 731 ASSERT(Transitions[ipHE_LIKE][nelem][ipHi][ipLo].Emis.Aul > 0.); 901 732 } 902 733 } … … 914 745 /* No stat. weight is needed because this is the lifetime of an individual level, 915 746 * Collapsed or resolved is irrelevant. */ 916 if( !iso.lgHugeCaseB[ipISO] ) 917 { 918 iso.Lifetime[ipISO][nelem][ipHi] += Transitions[ipHE_LIKE][nelem][ipHi][ipLo].Emis.Aul; 919 } 920 else 921 { 922 iso.Lifetime[ipISO][nelem][ipHi] += HeliumAs[nelem][ipHi][ipLo]; 923 } 747 iso.Lifetime[ipISO][nelem][ipHi] += Transitions[ipHE_LIKE][nelem][ipHi][ipLo].Emis.Aul; 924 748 } 925 749 … … 931 755 /********** Fine Structure Mixing - FSM ********/ 932 756 /************************************************/ 933 if( iso.lgFSM[ipISO] && !iso.lgHugeCaseB[ipISO])757 if( iso.lgFSM[ipISO] == true ) 934 758 { 935 759 for( ipHi=ipHe2s3S; ipHi<iso.numLevels_max[ipHE_LIKE][nelem]; ipHi++ ) … … 950 774 RobbinsC[ipHi][ipHi] = 1.; 951 775 iso.CascadeProb[ipISO][nelem][ipHi][ipHi] = 1.; 952 if( iso.lgRandErrGen[ipISO] && iso.lgHugeCaseB[ipISO])776 if( iso.lgRandErrGen[ipISO] ) 953 777 { 954 778 iso.SigmaAtot[ipISO][nelem][ipHi] = 0.; 955 iso.SigmaCascadeProb[ipISO][ ipHi][ipHi] = 0.;779 iso.SigmaCascadeProb[ipISO][nelem][ipHi][ipHi] = 0.; 956 780 } 957 781 … … 961 785 iso.CascadeProb[ipISO][nelem][ipHi][ipLo] = 0.; 962 786 963 if( !iso.lgHugeCaseB[ipISO] ) 964 { 965 /* there are some negative energy transitions, where the order 966 * has changed, but these are not optically allowed, these are 967 * same n, different L, forbidden transitions */ 968 ASSERT( Transitions[ipHE_LIKE][nelem][ipHi][ipLo].EnergyWN > 0. || 969 Transitions[ipHE_LIKE][nelem][ipHi][ipLo].Emis.Aul <= iso.SmallA ); 970
