Changeset 1624

Show
Ignore:
Timestamp:
12/07/07 07:00:14 (12 months ago)
Author:
rporter
Message:

trunk/source/hydrogenic.h - move strkar and pestrk to iso structure

trunk/source/hydrolevel.cpp - hydro.pestrk -> iso.pestrk[ipH_LIKE][ipHYDROGEN]

trunk/source/iso.h - see above

trunk/source/iso_create.cpp - malloc and initialize strkar and pestrk

trunk/source/prt_lines_hydro.cpp - hydro.pestrk -> iso.pestrk[ipH_LIKE][ipHYDROGEN]

trunk/source/rt_line_all.cpp - hydro.pestrk -> iso.pestrk[ipH_LIKE][ipHYDROGEN], also add stark escape prob loop for all iso species (not active yet)

trunk/source/rt_stark.cpp - loop over all iso species, add Z dependence to Puetter formalism.

No botches result.

Location:
trunk/source
Files:
7 modified

Legend:

Unmodified
Added
Removed
  • trunk/source/hydrogenic.h

    r1622 r1624  
    7070        bool lgReevalRecom; 
    7171 
    72         /** arrays for stark broadening in Puetter formalism */ 
    73         realnum **strkar/**strkar[LMHLVL+1][LMHLVL+1]*/; 
    74         double **pestrk/**pestrk[LMHLVL+1][LMHLVL+1]*/; 
    75  
    7672        /** dstfe2lya is destruction probability for Lya onto FeII, 
    7773         * net deexcitation of Lya but not ots destruction */ 
  • trunk/source/hydrolevel.cpp

    r1557 r1624  
    177177                for( ipLo=ipH1s; ipLo < ipHi; ipLo++ ) 
    178178                { 
    179                         fprintf( ioQQQ,PrintEfmt("%9.2e",  hydro.pestrk[ipLo][ipHi] )); 
     179                        fprintf( ioQQQ,PrintEfmt("%9.2e",  iso.pestrk[ipH_LIKE][nelem][ipLo][ipHi] )); 
    180180                } 
    181181                fprintf( ioQQQ, "\n" ); 
  • trunk/source/iso.h

    r1622 r1624  
    165165{ 
    166166        const char **chISO; 
     167 
     168        /** arrays for stark broadening in Puetter formalism */ 
     169        realnum ****strkar; 
     170        double ****pestrk; 
    167171 
    168172        /** Find index given quantum numbers 
  • trunk/source/iso_create.cpp

    r1618 r1624  
    439439        /**********  Stark Broadening **********/ 
    440440        /***************************************/ 
    441         if( !lgHydroMalloc ) 
    442         { 
    443                 /*realnum **strkar strkar[LMHLVL+1][LMHLVL+1]*/ 
    444                 hydro.strkar = (realnum**)MALLOC( sizeof(realnum*)*(unsigned)(iso.numLevels_max[ipH_LIKE][ipHYDROGEN]) ); 
    445                 /*realnum **pestrk pestrk[LMHLVL+1][LMHLVL+1]*/ 
    446                 hydro.pestrk = (double**)MALLOC( sizeof(double*)*(unsigned)(iso.numLevels_max[ipH_LIKE][ipHYDROGEN]) ); 
    447  
    448                 /* now do second dimension of previous two */ 
    449                 for( ipLo=0; ipLo< iso.numLevels_max[ipH_LIKE][ipHYDROGEN];++ipLo ) 
    450                 { 
    451                         hydro.strkar[ipLo] =  
    452                                 (realnum*)MALLOC( sizeof(realnum)*(unsigned)(iso.numLevels_max[ipH_LIKE][ipHYDROGEN]) ); 
    453                         hydro.pestrk[ipLo] =  
    454                                 (double*)MALLOC( sizeof(double)*(unsigned)(iso.numLevels_max[ipH_LIKE][ipHYDROGEN]) ); 
    455                 } 
    456  
    457                 /* fill in hydro.strkar array */ 
    458                 for( ipLo=ipH1s; ipLo < (iso.numLevels_max[ipH_LIKE][ipHYDROGEN] - 1); ipLo++ ) 
    459                 { 
    460                         for( ipHi= ipLo + 1; ipHi < iso.numLevels_max[ipH_LIKE][ipHYDROGEN]; ipHi++ ) 
    461                         { 
    462                                 long nHi = StatesElem[ipH_LIKE][ipHYDROGEN][ipHi].n; 
    463                                 long nLo = StatesElem[ipH_LIKE][ipHYDROGEN][ipHi].n; 
    464  
    465                                 hydro.strkar[ipLo][ipHi] = (realnum)pow((realnum)( nLo * nHi ),(realnum)1.2f); 
    466                                 hydro.pestrk[ipLo][ipHi] = 0.; 
    467                         } 
    468                 } 
    469  
    470                 /* we will never do this again, in this coreload, 
    471                  * following says never change number of levels in hydrogen atom again, 
    472                  * future hydrogenic levels commands will be ignored*/ 
    473                 lgHydroMalloc = true;    
     441        /* fill in iso.strkar array */ 
     442        for( ipISO=ipH_LIKE; ipISO < NISO; ++ipISO ) 
     443        { 
     444                for( nelem=ipISO; nelem < LIMELM; nelem++ ) 
     445                { 
     446                        if( nelem < 2 || dense.lgElmtOn[nelem] ) 
     447                        { 
     448                                for( ipLo=ipH1s; ipLo < (iso.numLevels_max[ipISO][nelem] - 1); ipLo++ ) 
     449                                { 
     450                                        for( ipHi= ipLo + 1; ipHi < iso.numLevels_max[ipISO][nelem]; ipHi++ ) 
     451                                        { 
     452                                                long nHi = StatesElem[ipISO][nelem][ipHi].n; 
     453                                                fixit(); /* this should be ipLo! */ 
     454                                                long nLo = StatesElem[ipISO][nelem][ipHi].n; 
     455 
     456                                                iso.strkar[ipISO][nelem][ipLo][ipHi] = (realnum)pow((realnum)( nLo * nHi ),(realnum)1.2f); 
     457                                                iso.pestrk[ipISO][nelem][ipLo][ipHi] = 0.; 
     458                                        } 
     459                                } 
     460                        } 
     461                } 
    474462        } 
    475463 
     
    590578        iso.chISO[ipHE_LIKE] = "he-like"; 
    591579 
     580        iso.strkar = (realnum ****)MALLOC( sizeof(realnum***)*NISO ); 
     581 
     582        iso.pestrk = (double ****)MALLOC( sizeof(double***)*NISO ); 
     583 
    592584        iso.ipOpac = (long int ***)MALLOC(sizeof(long **)*NISO ); 
    593585 
     
    639631                secondaries.Hx12[ipISO] = (realnum **)MALLOC(sizeof(realnum *)*LIMELM ); 
    640632 
     633                iso.strkar[ipISO] = (realnum ***)MALLOC( sizeof(realnum**)*LIMELM ); 
     634 
     635                iso.pestrk[ipISO] = (double ***)MALLOC( sizeof(double**)*LIMELM ); 
     636 
    641637                iso.ipOpac[ipISO] = (long int **)MALLOC(sizeof(long *)*LIMELM ); 
    642638 
     
    695691 
    696692                                iso.nLyman_malloc[ipISO] = iso.nLyman[ipISO]; 
     693 
     694                                iso.strkar[ipISO][nelem] =  
     695                                        (realnum **)MALLOC( sizeof(realnum*)*(unsigned)(iso.numLevels_max[ipISO][nelem]) ); 
     696 
     697                                iso.pestrk[ipISO][nelem] =  
     698                                        (double **)MALLOC( sizeof(double*)*(unsigned)(iso.numLevels_max[ipISO][nelem]) ); 
    697699 
    698700                                iso.ipOpac[ipISO][nelem] =  
     
    801803                                for( i = 0; i < iso.numLevels_max[ipISO][nelem]; ++i) 
    802804                                { 
     805                                        iso.strkar[ipISO][nelem][i] =  
     806                                                (realnum *)MALLOC( sizeof(realnum)*(unsigned)(iso.numLevels_max[ipISO][nelem]) ); 
     807                                        iso.pestrk[ipISO][nelem][i] =  
     808                                                (double *)MALLOC( sizeof(double)*(unsigned)(iso.numLevels_max[ipISO][nelem]) ); 
     809 
    803810                                        iso.CascadeProb[ipISO][nelem][i] = (double*)MALLOC(sizeof(double)*(unsigned)(i+1) ); 
    804811 
  • trunk/source/prt_lines_hydro.cpp

    r1616 r1624  
    101101                "  this is the heating due to 3-body recombination "); 
    102102 
    103         linadd(dense.xIonDense[ipHYDROGEN][1]*StatesElem[ipH_LIKE][ipHYDROGEN][ipH2p].Pop*0.*hydro.pestrk[ipH2p][ipH1s]*1.634e-11,1216,"Strk",'i', 
     103        linadd(dense.xIonDense[ipHYDROGEN][1]*StatesElem[ipH_LIKE][ipHYDROGEN][ipH2p].Pop*0.*iso.pestrk[ipH_LIKE][ipHYDROGEN][ipH2p][ipH1s]*1.634e-11,1216,"Strk",'i', 
    104104          "  Stark broadening contribution to line "); 
    105105 
    106         linadd(dense.xIonDense[ipHYDROGEN][1]*StatesElem[ipH_LIKE][ipHYDROGEN][ipH3s].Pop*hydro.pestrk[ipH3s][ipH2p]*3.025e-12, 
     106        linadd(dense.xIonDense[ipHYDROGEN][1]*StatesElem[ipH_LIKE][ipHYDROGEN][ipH3s].Pop*iso.pestrk[ipH_LIKE][ipHYDROGEN][ipH3s][ipH2p]*3.025e-12, 
    107107          6563,"Strk",'i', 
    108108          "  Stark broadening contribution to line "); 
    109109 
    110         linadd(dense.xIonDense[ipHYDROGEN][1]*StatesElem[ipH_LIKE][ipHYDROGEN][ipH4s].Pop*hydro.pestrk[ipH4s][ipH2p]*4.084e-12, 
     110        linadd(dense.xIonDense[ipHYDROGEN][1]*StatesElem[ipH_LIKE][ipHYDROGEN][ipH4s].Pop*iso.pestrk[ipH_LIKE][ipHYDROGEN][ipH4s][ipH2p]*4.084e-12, 
    111111          4861,"Strk",'i', 
    112112          "Stark broadening contribution to line "); 
    113113 
    114         linadd(dense.xIonDense[ipHYDROGEN][1]*StatesElem[ipH_LIKE][ipHYDROGEN][ipH4p].Pop*hydro.pestrk[ipH4p][ipH3s]*1.059e-12, 
     114        linadd(dense.xIonDense[ipHYDROGEN][1]*StatesElem[ipH_LIKE][ipHYDROGEN][ipH4p].Pop*iso.pestrk[ipH_LIKE][ipHYDROGEN][ipH4p][ipH3s]*1.059e-12, 
    115115          18751,"Strk",'i', 
    116116                   " Stark broadening contribution to line "); 
     
    121121        /* 06 dec 21, change from numLevels_max to _local was mistake for this entire file.  Undo. */ 
    122122        if( iso.numLevels_max[ipH_LIKE][ipHYDROGEN] > 5 ) 
    123                 linadd(dense.xIonDense[ipHYDROGEN][1]*StatesElem[ipH_LIKE][ipHYDROGEN][ipH5p].Pop*hydro.pestrk[ipH5p][ipH4s]*4.900e-13,40512,"Strk",'i', 
     123                linadd(dense.xIonDense[ipHYDROGEN][1]*StatesElem[ipH_LIKE][ipHYDROGEN][ipH5p].Pop*iso.pestrk[ipH_LIKE][ipHYDROGEN][ipH5p][ipH4s]*4.900e-13,40512,"Strk",'i', 
    124124          "Stark broadening part of line"); 
    125125 
  • trunk/source/rt_line_all.cpp

    r1563 r1624  
    251251                                                Transitions[ipH_LIKE][ipHYDROGEN][ipHi][ipLo].Emis->Pesc = MIN2(1.f, 
    252252                                                        Transitions[ipH_LIKE][ipHYDROGEN][ipHi][ipLo].Emis->Pesc+ 
    253                                                         (realnum)hydro.pestrk[ipLo][ipHi]); 
     253                                                        (realnum)iso.pestrk[ipH_LIKE][ipHYDROGEN][ipLo][ipHi]); 
    254254                                        } 
    255255                                } 
    256256                        } 
     257 
     258 
     259                        /* try adding these for all lines of iso sequences */ 
     260#if     0 
     261                        /* these loops exclude lya, so are only evaluated with escprob are 
     262                         * evaluated. 
     263                         * add on Stark escape probabilities for H itself */ 
     264                        for( ipISO=0; ipISO<NISO; ipISO++ ) 
     265                        { 
     266                                fixit(); /* this MAX2 is only here because hydrogen is done above,  
     267                                                  * be sure to remove it during any consolidation. */ 
     268                                for( nelem=MAX2(ipISO,1); nelem<LIMELM; nelem++ ) 
     269                                { 
     270                                        if( nelem < 2 || dense.lgElmtOn[nelem] ) 
     271                                        { 
     272                                                for( ipLo=ipH1s; ipLo < (iso.numLevels_max[ipISO][nelem] - 1); ipLo++ ) 
     273                                                { 
     274                                                        /* >>chng 02 jun 12, do not do Lya here, since done above */ 
     275                                                        for( ipHi=MAX2((long)3,ipLo+1); ipHi < iso.numLevels_max[ipISO][nelem]; ipHi++ ) 
     276                                                        { 
     277                                                                if( Transitions[ipISO][nelem][ipHi][ipLo].Emis == NULL ) 
     278                                                                        continue; 
     279 
     280                                                                /* >>chng 03 jun 07, do not clobber esp prob when line is masing - 
     281                                                                 * this had effect of preventing total escape prob from getting larger than 1 */ 
     282                                                                if( Transitions[ipISO][nelem][ipHi][ipLo].Emis->Pesc<1. ) 
     283                                                                { 
     284                                                                        Transitions[ipISO][nelem][ipHi][ipLo].Emis->Pesc = MIN2(1.f, 
     285                                                                                Transitions[ipISO][nelem][ipHi][ipLo].Emis->Pesc+ 
     286                                                                                (realnum)iso.pestrk[ipISO][nelem][ipLo][ipHi]); 
     287                                                                } 
     288                                                        } 
     289                                                } 
     290                                        } 
     291                                } 
     292                        } 
     293#endif 
    257294                } 
    258295 
     
    262299                        Transitions[ipH_LIKE][ipHYDROGEN][ipH2p][ipH1s].Emis->Pesc = MIN2(1.f, 
    263300                                Transitions[ipH_LIKE][ipHYDROGEN][ipH2p][ipH1s].Emis->Pesc+ 
    264                                 (realnum)hydro.pestrk[ipH1s][ipH2p]); 
     301                                (realnum)iso.pestrk[ipH_LIKE][ipHYDROGEN][ipH1s][ipH2p]); 
    265302                } 
    266303 
  • trunk/source/rt_stark.cpp

    r1562 r1624  
    1313{ 
    1414        long int ipLo,  
    15           ipHi; 
     15          ipHi, 
     16          nelem, 
     17          ipISO; 
     18 
    1619        double aa , ah,  
    1720          stark,  
     
    2023        DEBUG_ENTRY( "RT_stark()" ); 
    2124 
    22         if( !rt.lgStarkON || dense.eden < 1e8 ) 
     25        for( ipISO=ipH_LIKE; ipISO<NISO; ++ipISO ) 
    2326        { 
    24                 for( ipHi=0; ipHi < iso.numLevels_max[ipH_LIKE][ipHYDROGEN]; ipHi++ ) 
     27                /* loop over all iso-electronic sequences */ 
     28                for( nelem=ipISO; nelem<LIMELM; ++nelem ) 
    2529                { 
    26                         for( ipLo=0; ipLo < iso.numLevels_max[ipH_LIKE][ipHYDROGEN]; ipLo++ ) 
     30                        fixit(); /* for now still do only hydrogen */ 
     31                        if( ipISO != ipH_LIKE || nelem != ipHYDROGEN ) 
     32                                continue; 
     33 
     34                        if( nelem >= 2 && !dense.lgElmtOn[nelem] ) 
     35                                continue; 
     36 
     37                        if( !rt.lgStarkON || dense.eden < 1e8 ) 
    2738                        { 
    28                                 hydro.pestrk[ipHi][ipLo] = 0.; 
    29                                 hydro.pestrk[ipLo][ipHi] = 0.; 
     39                                for( ipHi=0; ipHi < iso.numLevels_max[ipISO][nelem]; ipHi++ ) 
     40                                { 
     41                                        for( ipLo=0; ipLo < iso.numLevels_max[ipISO][nelem]; ipLo++ ) 
     42                                        { 
     43                                                iso.pestrk[ipISO][nelem][ipHi][ipLo] = 0.; 
     44                                                iso.pestrk[ipISO][nelem][ipLo][ipHi] = 0.; 
     45                                        } 
     46                                } 
     47                                continue; 
    3048                        } 
    31                 } 
    32                 return; 
    33         } 
    3449 
    35         /* evaluate Stark escape probability from  
    36         * >>ref Puetter Ap.J. 251, 446. */ 
     50                        /* evaluate Stark escape probability from  
     51                        * >>ref Puetter Ap.J. 251, 446. */ 
    3752 
    38         /* coefficients for Stark broadening escape probability 
    39          * to be Puetters AH, equation 9b, needs factor of (Z^-4.5 * (nu*nl)^3 * xl) */ 
    40          fixit(); //include Z factor 
    41         ah = 6.9e-6*1000./1e12/(phycon.sqrte*phycon.te10*phycon.te10* 
    42           phycon.te03*phycon.te01*phycon.te01)*dense.eden; 
     53                        /* coefficients for Stark broadening escape probability 
     54                         * to be Puetters AH, equation 9b, needs factor of (Z^-4.5 * (nu*nl)^3 * xl) */ 
     55                        ah = 6.9e-6*1000./1e12/(phycon.sqrte*phycon.te10*phycon.te10* 
     56                          phycon.te03*phycon.te01*phycon.te01)*dense.eden; 
    4357 
    44         /* coefficient for all lines except Ly alpha */ 
    45         /* equation 10b, except missing tau^-0.6 */ 
    46         stark = 0.264*pow(ah,0.4); 
     58                        fixit(); //include Z factor 
     59                        ah *= pow( (double)(nelem+1), -4.5 ); 
    4760 
    48         /* coefficient for Ly alpha */ 
    49         /* first few factors resemble equation 13c...what about the rest? */ 
    50         strkla = 0.538*ah*4.*9.875*(phycon.sqrte/phycon.te10/phycon.te03); 
     61                        /* coefficient for all lines except Ly alpha */ 
     62                        /* equation 10b, except missing tau^-0.6 */ 
     63                        stark = 0.264*pow(ah,0.4); 
    5164 
    52         /* Lyman lines always have outer optical depths */ 
    53         /*ASSERT( Transitions[ipH_LIKE][ipHYDROGEN][ipH2p][ipH1s].TauIn> 0. );*/ 
    54         /* >>chng 02 mar 31, put in max, crashed on some first iteration  
    55          * with negative optical depths, 
    56          * NB did not understand why neg optical depths started */ 
    57         aa = (realnum)SDIV(Transitions[ipH_LIKE][ipHYDROGEN][ipH2p][ipH1s].Emis->TauIn); 
    58         aa = pow( aa ,-0.75); 
    59         hydro.pestrk[ipH1s][ipH2p] = strkla/2.*MAX2(1.,aa); 
     65                        /* coefficient for Ly alpha */ 
     66                        /* first few factors resemble equation 13c...what about the rest? */ 
     67                        strkla = 0.538*ah*4.*9.875*(phycon.sqrte/phycon.te10/phycon.te03); 
    6068 
    61         /**\todo        2       - Stark is disabled for now since Lya escape causes density dependent 
    62          * feedback on the radiative transfer.  Would need to redo the escape 
    63          * probs every time the electron density is updated - see blr89.in for an  
    64          * example */ 
    65         hydro.pestrk[ipH1s][ipH2p] = MIN2(.01,hydro.pestrk[ipH1s][ipH2p]); 
    66         hydro.pestrk[ipH1s][ipH2p] = 0.; 
    67         hydro.pestrk[ipH2p][ipH1s] =  
    68                 hydro.pestrk[ipH1s][ipH2p]*Transitions[ipH_LIKE][ipHYDROGEN][ipH2p][ipH1s].Emis->Aul; 
     69                        /* Lyman lines always have outer optical depths */ 
     70                        /*ASSERT( Transitions[ipH_LIKE][ipHYDROGEN][ipH2p][ipH1s].TauIn> 0. );*/ 
     71                        /* >>chng 02 mar 31, put in max, crashed on some first iteration  
     72                         * with negative optical depths, 
     73                         * NB did not understand why neg optical depths started */ 
     74                        aa = (realnum)SDIV(Transitions[ipISO][nelem][iso.nLyaLevel[ipISO]][0].Emis->TauIn); 
     75                        aa = pow( aa ,-0.75); 
     76                        iso.pestrk[ipISO][nelem][0][iso.nLyaLevel[ipISO]] = strkla/2.*MAX2(1.,aa); 
     77 
     78                        /**\todo        2       - Stark is disabled for now since Lya escape causes density dependent 
     79                         * feedback on the radiative transfer.  Would need to redo the escape 
     80                         * probs every time the electron density is updated - see blr89.in for an  
     81                         * example */ 
     82                        iso.pestrk[ipISO][nelem][0][iso.nLyaLevel[ipISO]] = MIN2(.01,iso.pestrk[ipISO][nelem][0][iso.nLyaLevel[ipISO]]); 
     83                        iso.pestrk[ipISO][nelem][0][iso.nLyaLevel[ipISO]] = 0.; 
     84                        iso.pestrk[ipISO][nelem][iso.nLyaLevel[ipISO]][0] =  
     85                                iso.pestrk[ipISO][nelem][0][iso.nLyaLevel[ipISO]]*Transitions[ipISO][nelem][iso.nLyaLevel[ipISO]][0].Emis->Aul; 
    6986 
    7087 
    71         /* >>chng 06 aug 28, from numLevels_max to _local. */ 
    72         for( ipHi=3; ipHi < iso.numLevels_local[ipH_LIKE][ipHYDROGEN]; ipHi++ ) 
    73         { 
    74                 if( Transitions[ipH_LIKE][ipHYDROGEN][ipHi][ipH1s].Emis == NULL ) 
    75                         continue; 
     88                        /* >>chng 06 aug 28, from numLevels_max to _local. */ 
     89                        for( ipHi=3; ipHi < iso.numLevels_local[ipISO][nelem]; ipHi++ ) 
     90                        { 
     91                                if( Transitions[ipISO][nelem][ipHi][ipH1s].Emis == NULL ) 
     92                                        continue; 
    7693 
    77                 hydro.pestrk[0][ipHi] = stark*hydro.strkar[0][ipHi]/2.*pow(MAX2(1., 
    78                   Transitions[ipH_LIKE][ipHYDROGEN][ipHi][ipH1s].Emis->TauIn),-0.75); 
     94                                iso.pestrk[ipISO][nelem][0][ipHi] = stark*iso.strkar[ipISO][nelem][0][ipHi]/2.*pow(MAX2(1., 
     95                                  Transitions[ipISO][nelem][ipHi][ipH1s].Emis->TauIn),-0.75); 
    7996 
    80                 hydro.pestrk[0][ipHi] = MIN2(.01,hydro.pestrk[0][ipHi]); 
    81                 hydro.pestrk[ipHi][0] = Transitions[ipH_LIKE][ipHYDROGEN][ipHi][ipH1s].Emis->Aul* 
    82                   hydro.pestrk[0][ipHi]; 
    83         } 
     97                                iso.pestrk[ipISO][nelem][0][ipHi] = MIN2(.01,iso.pestrk[ipISO][nelem][0][ipHi]); 
     98                                iso.pestrk[ipISO][nelem][ipHi][0] = Transitions[ipISO][nelem][ipHi][ipH1s].Emis->Aul* 
     99                                  iso.pestrk[ipISO][nelem][0][ipHi]; 
     100                        } 
    84101 
    85         /* zero out rates above iso.numLevels_local */ 
    86         for( ipHi=iso.numLevels_local[ipH_LIKE][ipHYDROGEN]; ipHi < iso.numLevels_max[ipH_LIKE][ipHYDROGEN]; ipHi++ ) 
    87         { 
    88                 hydro.pestrk[0][ipHi] = 0.; 
    89                 hydro.pestrk[ipHi][0] = 0.; 
    90         } 
     102                        /* zero out rates above iso.numLevels_local */ 
     103                        for( ipHi=iso.numLevels_local[ipISO][nelem]; ipHi < iso.numLevels_max[ipISO][nelem]; ipHi++ ) 
     104                        { 
     105                                iso.pestrk[ipISO][nelem][0][ipHi] = 0.; 
     106                                iso.pestrk[ipISO][nelem][ipHi][0] = 0.; 
     107                        } 
    91108 
    92         /* all other lines */ 
    93         /* >>chng 06 aug 28, from numLevels_max to _local. */ 
    94         for( ipLo=ipH2s; ipLo < (iso.numLevels_local[ipH_LIKE][ipHYDROGEN] - 1); ipLo++ ) 
    95         { 
    96                 for( ipHi=ipLo + 1; ipHi < iso.numLevels_local[ipH_LIKE][ipHYDROGEN]; ipHi++ ) 
    97                 { 
    98                         if( Transitions[ipH_LIKE][ipHYDROGEN][ipHi][ipLo].Emis == NULL ) 
    99                                 continue; 
     109                        /* all other lines */ 
     110                        /* >>chng 06 aug 28, from numLevels_max to _local. */ 
     111                        for( ipLo=ipH2s; ipLo < (iso.numLevels_local[ipISO][nelem] - 1); ipLo++ ) 
     112                        { 
     113                                for( ipHi=ipLo + 1; ipHi < iso.numLevels_local[ipISO][nelem]; ipHi++ ) 
     114                                { 
     115                                        if( Transitions[ipISO][nelem][ipHi][ipLo].Emis == NULL ) 
     116                                                continue; 
    100117 
    101                         aa = stark*hydro.strkar[ipLo][ipHi]* 
    102                           pow(MAX2(1.,Transitions[ipH_LIKE][ipHYDROGEN][ipHi][ipLo].Emis->TauIn),-0.75); 
    103                         hydro.pestrk[ipLo][ipHi] =  
    104                                 (realnum)MIN2(.01,aa); 
     118                                        aa = stark*iso.strkar[ipISO][nelem][ipLo][ipHi]* 
     119                                          pow(MAX2(1.,Transitions[ipISO][nelem][ipHi][ipLo].Emis->TauIn),-0.75); 
     120                                        iso.pestrk[ipISO][nelem][ipLo][ipHi] =  
     121                                                (realnum)MIN2(.01,aa); 
    105122 
    106                         hydro.pestrk[ipHi][ipLo] = Transitions[ipH_LIKE][ipHYDROGEN][ipHi][ipLo].Emis->Aul* 
    107                           hydro.pestrk[ipLo][ipHi]; 
     123                                        iso.pestrk[ipISO][nelem][ipHi][ipLo] = Transitions[ipISO][nelem][ipHi][ipLo].Emis->Aul* 
     124                                          iso.pestrk[ipISO][nelem][ipLo][ipHi]; 
     125                                } 
     126                        } 
     127 
     128                        /* zero out rates above iso.numLevels_local */ 
     129                        for( ipLo=(iso.numLevels_local[ipISO][nelem] - 1); ipLo<(iso.numLevels_max[ipISO][nelem] - 1); ipLo++ ) 
     130                        { 
     131                                for( ipHi=ipLo + 1; ipHi < iso.numLevels_max[ipISO][nelem]; ipHi++ ) 
     132                                { 
     133                                        iso.pestrk[ipISO][nelem][ipLo][ipHi] = 0.; 
     134                                        iso.pestrk[ipISO][nelem][ipHi][ipLo] = 0.; 
     135                                } 
     136                        } 
    108137                } 
    109138        } 
    110139 
    111         /* zero out rates above iso.numLevels_local */ 
    112         for( ipLo=(iso.numLevels_local[ipH_LIKE][ipHYDROGEN] - 1); ipLo<(iso.numLevels_max[ipH_LIKE][ipHYDROGEN] - 1); ipLo++ ) 
    113         { 
    114                 for( ipHi=ipLo + 1; ipHi < iso.numLevels_max[ipH_LIKE][ipHYDROGEN]; ipHi++ ) 
    115                 { 
    116                         hydro.pestrk[ipLo][ipHi] = 0.; 
    117                         hydro.pestrk[ipHi][ipLo] = 0.; 
    118                 } 
    119         } 
    120140        return; 
    121141}