Show
Ignore:
Timestamp:
01/12/08 12:50:52 (10 months ago)
Author:
rjrw
Message:

Eliminate last references to COmole/comole; convert one element of
molecule structure to valarray local to calling routine.

Location:
branches/newmole/source
Files:
23 modified

Legend:

Unmodified
Added
Removed
  • branches/newmole/source/conv_base.cpp

    r1739 r1740  
    160160        static double SumOTS=0. , OldSumOTS[2]={0.,0.}; 
    161161        double save_iso_grnd[NISO][LIMELM]; 
     162        valarray<realnum> mole_save(mole.num_calc); 
    162163 
    163164        DEBUG_ENTRY( "ConvBase()" ); 
     
    229230        for( i=0; i < mole.num_calc; i++ ) 
    230231        { 
    231                 COmole[i]->comole_save = (realnum) COmole[i]->hevmol; 
     232                mole_save[i] = (realnum) mole.list[i]->hevmol; 
    232233        } 
    233234 
     
    926927        for( i=0; i < mole.num_calc; ++i ) 
    927928        { 
    928                 if( fabs(COmole[i]->hevmol-COmole[i]->comole_save)/dense.gas_phase[ipHYDROGEN]-1. > 
     929                if( fabs(mole.list[i]->hevmol-mole_save[i])/dense.gas_phase[ipHYDROGEN]-1. > 
    929930                        conv.EdenErrorAllowed/2.) 
    930931                { 
    931932                        conv.lgConvIoniz = false; 
    932                         sprintf( conv.chConvIoniz, "ch %-4.4s",COmole[i]->label ); 
    933                         conv.BadConvIoniz[0] = COmole[i]->comole_save/dense.gas_phase[ipHYDROGEN]; 
    934                         conv.BadConvIoniz[1] = COmole[i]->hevmol/dense.gas_phase[ipHYDROGEN]; 
     933                        sprintf( conv.chConvIoniz, "ch %-4.4s",mole.list[i]->label ); 
     934                        conv.BadConvIoniz[0] = mole_save[i]/dense.gas_phase[ipHYDROGEN]; 
     935                        conv.BadConvIoniz[1] = mole.list[i]->hevmol/dense.gas_phase[ipHYDROGEN]; 
    935936                } 
    936937        } 
  • branches/newmole/source/conv_init_solution.cpp

    r1739 r1740  
    132132                for (nelem=ipHYDROGEN;nelem<LIMELM;nelem++)  
    133133                { 
    134                         if( dense.lgElmtOn[nelem] && COmole[i]->location == NULL ) 
     134                        if( dense.lgElmtOn[nelem] && mole.list[i]->location == NULL ) 
    135135                        { 
    136                                 realnum dens_elemsp = (realnum) COmole[i]->hevmol*COmole[i]->nElem[nelem]; 
     136                                realnum dens_elemsp = (realnum) mole.list[i]->hevmol*mole.list[i]->nElem[nelem]; 
    137137                                if (    FracMoleMax*dense.gas_phase[nelem] < dens_elemsp )  
    138138                                { 
     
    148148        for(i=0;i<mole.num_calc;++i) 
    149149        { 
    150                 OxyInGrains += (1 - COmole[i]->lgGas_Phase)*COmole[i]->hevmol*COmole[i]->nElem[ipOXYGEN];  
     150                OxyInGrains += (1 - mole.list[i]->lgGas_Phase)*mole.list[i]->hevmol*mole.list[i]->nElem[ipOXYGEN];  
    151151        } 
    152152        /* this is now fraction of O in ices */ 
  • branches/newmole/source/conv_ioniz.cpp

    r1739 r1740  
    108108                dense.eden, 
    109109                gv.TotalEden, 
    110                 co.comole_eden , 
     110                mole.elec, 
    111111                dense.EdenTrue); 
    112112        } 
  • branches/newmole/source/conv_itercheck.cpp

    r1739 r1740  
    152152                { 
    153153                        double differ; 
    154                         if(COmole[i]->n_nuclei == 1) 
     154                        if(mole.list[i]->n_nuclei == 1) 
    155155                                continue; 
    156156 
    157157                        /* was the species abundance and changing? */ 
    158                         differ = (double)fabs(COmole[i]->hevcol_old-COmole[i]->hevcol) / 
    159                                 (double)SDIV(COmole[i]->hevcol); 
    160                         if( (COmole[i]->hevcol/colden.colden[ipCOL_HTOT] > 1e-5) && 
     158                        differ = (double)fabs(mole.list[i]->hevcol_old-mole.list[i]->hevcol) / 
     159                                (double)SDIV(mole.list[i]->hevcol); 
     160                        if( (mole.list[i]->hevcol/colden.colden[ipCOL_HTOT] > 1e-5) && 
    161161                                (differ > conv.autocv) ) 
    162162                        { 
     
    168168                                strcpy( conv.chNotConverged, "CO mol col" ); 
    169169                                /*fprintf(ioQQQ,"debugggreset\t CO mole %li %li %.2e %.2e\n", 
    170                                         i,iteration,COmole[i]->hevcol_old,COmole[i]->hevcol);*/ 
     170                                        i,iteration,mole.list[i]->hevcol_old,mole.list[i]->hevcol);*/ 
    171171 
    172172                                if( punch.lgPunConv ) 
    173173                                { 
    174174                                        fprintf( punch.ipPunConv, "CO mol col, old:%.3e new:%.3e\n" , 
    175                                                 COmole[i]->hevcol_old , 
    176                                                 COmole[i]->hevcol ); 
     175                                                mole.list[i]->hevcol_old , 
     176                                                mole.list[i]->hevcol ); 
    177177                                } 
    178178                        } 
  • branches/newmole/source/dynamics.cpp

    r1739 r1740  
    740740                                for(i=0;i<mole.num_calc;i++)  
    741741                                { 
    742                                         sumh += (realnum) COmole[i]->hevmol*COmole[i]->nElem[nelem]; 
     742                                        sumh += (realnum) mole.list[i]->hevmol*mole.list[i]->nElem[nelem]; 
    743743                                } 
    744744                                fprintf(ioQQQ, 
     
    951951                                frac_next; 
    952952                        /* Externally represented species are already counted in UpstreamElem */ 
    953                         if(COmole[mol]->location == NULL) 
     953                        if(mole.list[mol]->location == NULL) 
    954954                        { 
    955955                                for( nelem=ipHYDROGEN; nelem<LIMELM; ++nelem ) 
    956956                                { 
    957                                         UpstreamElem[nelem] += Upstream_molecules[mol]*COmole[mol]->nElem[nelem]; 
     957                                        UpstreamElem[nelem] += Upstream_molecules[mol]*mole.list[mol]->nElem[nelem]; 
    958958                                } 
    959959                        } 
     
    983983                { 
    984984                        Upstream_molecules[mol] = Old_molecules[ipUpstream][mol]/Old_density[ipUpstream]; 
    985                         if(COmole[mol]->location == NULL) 
     985                        if(mole.list[mol]->location == NULL) 
    986986                        { 
    987987                                for( nelem=ipHYDROGEN; nelem<LIMELM; ++nelem ) 
    988988                                { 
    989                                         UpstreamElem[nelem] += Upstream_molecules[mol]*COmole[mol]->nElem[nelem]; 
     989                                        UpstreamElem[nelem] += Upstream_molecules[mol]*mole.list[mol]->nElem[nelem]; 
    990990                                } 
    991991                        } 
  • branches/newmole/source/heat_sum.cpp

    r1739 r1740  
    116116        for( i=0; i < mole.num_calc; i++ ) 
    117117        { 
    118                 if(COmole[i]->location == NULL) 
    119                         AtomicCollidDensity += COmole[i]->hevmol; 
     118                if(mole.list[i]->location == NULL) 
     119                        AtomicCollidDensity += mole.list[i]->hevmol; 
    120120        } 
    121121 
  • branches/newmole/source/iter_end_chk.cpp

    r1739 r1740  
    5151        { 
    5252                /* define the abundance of oxygen frozen out on grain surfaces */ 
    53                 oxy_in_grains += (1 - COmole[i]->lgGas_Phase)*COmole[i]->hevmol*COmole[i]->nElem[ipOXYGEN]; 
     53                oxy_in_grains += (1 - mole.list[i]->lgGas_Phase)*mole.list[i]->hevmol*mole.list[i]->nElem[ipOXYGEN]; 
    5454        } 
    5555        /*fprintf(ioQQQ, "DEBUG oxy in grains %.2e %e %e\n",  
  • branches/newmole/source/iter_startend.cpp

    r1739 r1740  
    298298        for( i=0; i<mole.num_calc; i++)  
    299299        { 
    300                 COmole[i]->hevmol_save = (realnum) COmole[i]->hevmol; 
     300                mole.list[i]->hevmol_save = (realnum) mole.list[i]->hevmol; 
    301301        } 
    302302        ortho_save = h2.ortho_density; 
     
    433433        for( i=0; i < mole.num_calc; i++ ) 
    434434        { 
    435                 COmole[i]->hevcol = 0.; 
     435                mole.list[i]->hevcol = 0.; 
    436436        } 
    437437        for( i=0; i < 5; i++ ) 
     
    890890        for( i=0; i<mole.num_calc; i++)  
    891891        { 
    892                 COmole[i]->hevmol = COmole[i]->hevmol_save; 
     892                mole.list[i]->hevmol = mole.list[i]->hevmol_save; 
    893893        } 
    894894        hmi.H2_total = (realnum) (findspecies("H2")->hevmol + findspecies("H2*")->hevmol); 
     
    908908        { 
    909909                /* column densities */ 
    910                 COmole[i]->hevcol = 0.; 
     910                mole.list[i]->hevcol = 0.; 
    911911                /* largest fraction of atoms in molecules */ 
    912                 COmole[i]->xMoleFracMax = 0.; 
    913                 COmole[i]->xMoleFracMaxElem = -1; 
     912                mole.list[i]->xMoleFracMax = 0.; 
     913                mole.list[i]->xMoleFracMaxElem = -1; 
    914914        } 
    915915 
  • branches/newmole/source/molcol.cpp

    r1739 r1740  
    5757                for( i=0; i < mole.num_calc; i++ ) 
    5858                { 
    59                         COmole[i]->hevcol = 0.; 
     59                        mole.list[i]->hevcol = 0.; 
    6060                } 
    6161        } 
     
    6666                for( i=0; i < mole.num_calc; i++ ) 
    6767                { 
    68                         COmole[i]->hevcol += (realnum) COmole[i]->hevmol*radius.drad_x_fillfac; 
     68                        mole.list[i]->hevcol += (realnum) mole.list[i]->hevmol*radius.drad_x_fillfac; 
    6969                } 
    7070        } 
     
    7979                for( i=0; i < mole.num_calc; i++ ) 
    8080                { 
    81                         if(COmole[i]->location == NULL) 
     81                        if(mole.list[i]->location == NULL) 
    8282                        { 
    83                                 fprintf( ioMEAN, "   %-6.6s:", COmole[i]->label ); 
    84                                 fprintf( ioMEAN, "%7.3f",log10(MAX2(SMALLFLOAT,COmole[i]->hevcol ))); 
     83                                fprintf( ioMEAN, "   %-6.6s:", mole.list[i]->label ); 
     84                                fprintf( ioMEAN, "%7.3f",log10(MAX2(SMALLFLOAT,mole.list[i]->hevcol ))); 
    8585                                j++;  
    8686                                if( j == 8 ) 
  • branches/newmole/source/mole.h

    r1739 r1740  
    6161   can be important to the ionization balance */ 
    6262 
     63struct molecule; 
     64 
    6365class Mole { 
    6466 
     
    121123                *snk; 
    122124        realnum ***xMoleChTrRate;/***[LIMELM][LIMELM+1][LIMELM+1];*/ 
     125 
     126 
     127        struct molecule **list; 
    123128}; 
    124129 
     
    149154        realnum hev_reinit;   /* this saves solution in first zone of previous iteration */ 
    150155        realnum hevcol_old;   /** column density in previous iteration */ 
    151         realnum comole_save; 
    152156        realnum hevmol_save; 
    153157        enum mole_state state; 
    154158        int index, groupnum; 
    155159};  
    156  
    157 extern struct molecule **COmole; 
    158160 
    159161extern struct molecule *findspecies(const char buf[]); 
  • branches/newmole/source/mole_drive.cpp

    r1687 r1740  
    4242STATIC void mole_h_rate_diagnostics(void); 
    4343 
    44 struct molecule **COmole; 
    45  
    46  
    4744/*mole_drive main driver for heavy molecular equilibrium routines      */ 
    4845void mole_drive(void) 
     
    132129                for( i=0; i < mole.num_calc; i++ ) 
    133130                { 
    134                         COmole[i]->hevmol = COmole[i]->hev_reinit*ratio; 
     131                        mole.list[i]->hevmol = mole.list[i]->hev_reinit*ratio; 
    135132                } 
    136133 
     
    150147                for( i=0; i < mole.num_calc; i++ ) 
    151148                { 
    152                         COmole[i]->hev_reinit = (realnum) COmole[i]->hevmol; 
     149                        mole.list[i]->hev_reinit = (realnum) mole.list[i]->hevmol; 
    153150                } 
    154151                 
     
    177174                for( i=0; i<mole.num_calc; ++i ) 
    178175                { 
    179                         COmole[i]->hevmol = 0.; 
     176                        mole.list[i]->hevmol = 0.; 
    180177                } 
    181178                /* heating due to CO photodissociation */ 
     
    508505                hmi.HeatH2Dexc_ELWERT = ((mole_findrate("H2*,H2=>H2,H2") + mole_findrate("H2*,H=>H2,H")) 
    509506                                                                                                                 - (mole_findrate("H2,H2=>H2*,H2") + mole_findrate("H2,H=>H2*,H"))) * 4.17e-12 * f3 +  
    510                         f4 * (COmole[element_list[ipHYDROGEN]->ipMl[0]]->hevmol/dense.gas_phase[ipHYDROGEN]) + 
     507                        f4 * (mole.list[element_list[ipHYDROGEN]->ipMl[0]]->hevmol/dense.gas_phase[ipHYDROGEN]) + 
    511508                        f5 * secondaries.x12tot * EN1EV * hmi.H2_total; 
    512509                 
     
    788785                        { 
    789786                                if (nelem != ipHYDROGEN && nelem != ipHELIUM) 
    790                                         sum_first_ions += COmole[element_list[nelem]->ipMl[1]]->hevmol; 
     787                                        sum_first_ions += mole.list[element_list[nelem]->ipMl[1]]->hevmol; 
    791788                        } 
    792789 
     
    798795                        destroy_coll_heavies = mole_findrk("H-,Li+=>H,Li")*sum_first_ions; 
    799796                        destroy_coll_electrons = mole_findrk("H-,e-=>H-,e-,e-")*findspecies("e-")->hevmol; 
    800                         destroy_Hattach = COmole[element_list[ipHYDROGEN]->ipMl[0]]->hevmol*(mole_findrk("H,H-=>H2,e-")+mole_findrk("H,H-=>H2*,e-")); 
    801                         destroy_fhneut = mole_findrk("H-,H+=>H,H")*COmole[element_list[ipHYDROGEN]->ipMl[1]]->hevmol; 
     797                        destroy_Hattach = mole.list[element_list[ipHYDROGEN]->ipMl[0]]->hevmol*(mole_findrk("H,H-=>H2,e-")+mole_findrk("H,H-=>H2*,e-")); 
     798                        destroy_fhneut = mole_findrk("H-,H+=>H,H")*mole.list[element_list[ipHYDROGEN]->ipMl[1]]->hevmol; 
    802799 
    803800                        destsum = destroy_photo + destroy_coll_heavies + destroy_coll_electrons +  
     
    835832                        for( i=0; i < mole.num_calc; i++ ) 
    836833                        { 
    837                                 fprintf( ioQQQ, "\t%-4.4s\t%.2e", COmole[i]->label, COmole[i]->hevmol ); 
     834                                fprintf( ioQQQ, "\t%-4.4s\t%.2e", mole.list[i]->label, mole.list[i]->hevmol ); 
    838835                        } 
    839836                        fprintf( ioQQQ, " \n" ); 
     
    847844                for( i=0; i < mole.num_calc; i++ ) 
    848845                { 
    849                         fprintf( ioQQQ, " %-4.4s:%.2e", COmole[i]->label, COmole[i]->hevmol ); 
     846                        fprintf( ioQQQ, " %-4.4s:%.2e", mole.list[i]->label, mole.list[i]->hevmol ); 
    850847                } 
    851848                fprintf( ioQQQ, " \n" ); 
     
    904901                { 
    905902                        if (nelem != ipHYDROGEN && nelem != ipHELIUM)                            
    906                                 sum_first_ions += COmole[element_list[nelem]->ipMl[1]]->hevmol; 
     903                                sum_first_ions += mole.list[element_list[nelem]->ipMl[1]]->hevmol; 
    907904                } 
    908905 
     
    917914                                                 hmi.HMinus_photo_rate, mole_findrk("H-,Li+=>H,Li")*sum_first_ions,  
    918915                                                 mole_findrk("H-,e-=>H-,e-,e-")*findspecies("e-")->hevmol,  
    919                                                  COmole[element_list[ipHYDROGEN]->ipMl[0]]->hevmol*(mole_findrk("H,H-=>H2,e-")+mole_findrk("H,H-=>H2*,e-")), iso.gamnc[ipH_LIKE][ipHYDROGEN][ipH1s],  
    920                                                  COmole[element_list[ipHYDROGEN]->ipMl[1]]->hevmol*mole_findrk("H-,H+=>H,H") ); 
     916                                                 mole.list[element_list[ipHYDROGEN]->ipMl[0]]->hevmol*(mole_findrk("H,H-=>H2,e-")+mole_findrk("H,H-=>H2*,e-")), iso.gamnc[ipH_LIKE][ipHYDROGEN][ipH1s],  
     917                                                 mole.list[element_list[ipHYDROGEN]->ipMl[1]]->hevmol*mole_findrk("H-,H+=>H,H") ); 
    921918                fprintf( ioQQQ, "     H- heating:%10.3e Ind cooling%10.2e Spon cooling%10.2e\n",  
    922919                                                 hmi.hmihet, hmi.HMinus_induc_rec_cooling, hmi.hmicol ); 
     
    993990                /*@-redef@*/ 
    994991                /* often the H- route is the most efficient formation mechanism for H2, 
    995                  * will be through rate called COmole[element_list[ipHYDROGEN]->ipMl]->hevmol*hmi.assoc_detach 
     992                 * will be through rate called mole.list[element_list[ipHYDROGEN]->ipMl]->hevmol*hmi.assoc_detach 
    996993                 * this debug print statement is to trace h2 oscillations */ 
    997994                enum {DEBUG_LOC=false}; 
     
    10111008                                                        mole_findrk("H,e-=>H-,PHOTON")*findspecies("e-")->hevmol, 
    10121009                                                        hmi.HMinus_induc_rec_rate, 
    1013                                                         COmole[element_list[ipHYDROGEN]->ipMl[0]]->hevmol, 
    1014                                                         COmole[element_list[ipHYDROGEN]->ipMl[1]]->hevmol, 
     1010                                                        mole.list[element_list[ipHYDROGEN]->ipMl[0]]->hevmol, 
     1011                                                        mole.list[element_list[ipHYDROGEN]->ipMl[1]]->hevmol, 
    10151012                                                        findspecies("H-")->hevmol, 
    10161013                                                        hmi.H2_total, 
     
    10561053                                fprintf(ioQQQ,"Temperature %g\n",phycon.te); 
    10571054                                fprintf(ioQQQ," Net mol ion rate [%g %g] %g\n",mole.source[ipHYDROGEN][1],mole.sink[ipHYDROGEN][1], 
    1058                                                                 mole.source[ipHYDROGEN][1]-mole.sink[ipHYDROGEN][1]*COmole[element_list[ipHYDROGEN]->ipMl[1]]->hevmol); 
     1055                                                                mole.source[ipHYDROGEN][1]-mole.sink[ipHYDROGEN][1]*mole.list[element_list[ipHYDROGEN]->ipMl[1]]->hevmol); 
    10591056                        } 
    10601057                } 
  • branches/newmole/source/mole_eval_balance.cpp

    r1712 r1740  
    170170                                for (j=0;j<mole.num_calc;j++)  
    171171                                { 
    172                                         test += c[i][j]*COmole[j]->nElem[nelem]; 
    173                                         tot += fabs(c[i][j])*COmole[j]->nElem[nelem]; 
     172                                        test += c[i][j]*mole.list[j]->nElem[nelem]; 
     173                                        tot += fabs(c[i][j])*mole.list[j]->nElem[nelem]; 
    174174                                } 
    175175                                if (fabs(test) > 1e-10*tot) 
    176176                                { 
    177177                                        fprintf(stdout,"Network conservation error %s %s %g %g %g %g\n", 
    178                                                                         COmole[element_list[nelem]->ipMl[0]]->label,COmole[i]->label, 
    179                                                                         test,test/tot,COmole[element_list[nelem]->ipMl[0]]->hevmol,COmole[element_list[nelem]->ipMl[1]]->hevmol); 
     178                                                                        mole.list[element_list[nelem]->ipMl[0]]->label,mole.list[i]->label, 
     179                                                                        test,test/tot,mole.list[element_list[nelem]->ipMl[0]]->hevmol,mole.list[element_list[nelem]->ipMl[1]]->hevmol); 
    180180                                        //fprintf(stdout,"Problem at %s\n",rate->label); 
    181181                                        exit(-1); 
     
    188188        for (i=0;i<num_total;i++) 
    189189        { 
    190                 b[i] = mole.src[i]-mole.snk[i]*COmole[i]->hevmol; 
     190                b[i] = mole.src[i]-mole.snk[i]*mole.list[i]->hevmol; 
    191191        } 
    192192         
  • branches/newmole/source/mole_newton_step.cpp

    r1714 r1740  
    118118        for(i=0;i<mole.num_total;i++)  
    119119        { 
    120                 calcv[i] = COmole[i]->hevmol; 
     120                calcv[i] = mole.list[i]->hevmol; 
    121121        } 
    122122         
     
    210210                                        for(i=0;i<mole.num_calc;i++)  
    211211                                        { 
    212                                                 ASSERT(COmole[i]->index == i); 
     212                                                ASSERT(mole.list[i]->index == i); 
    213213                                                sum = 0.; 
    214214                                                for (ion=0;ion<N_MOLE_ION;ion++)  
     
    276276                                                for(i=0;i<mole.num_calc;i++) 
    277277                                                { 
    278                                                         c[i][element_list[nelem]->ipMl[0]] = COmole[i]->nElem[nelem]*scale; 
     278                                                        c[i][element_list[nelem]->ipMl[0]] = mole.list[i]->nElem[nelem]*scale; 
    279279                                                } 
    280280                                        } 
     
    316316                        for( i=0; i < mole.num_calc; i++ ) 
    317317                        { 
    318                                 fprintf( ioQQQ, "      %-4.4s", COmole[i]->label ); 
     318                                fprintf( ioQQQ, "      %-4.4s", mole.list[i]->label ); 
    319319                        } 
    320320                        fprintf( ioQQQ, " \n" ); 
     
    322322                        fprintf(ioQQQ,"       MOLE old abundances\t%.2f",fnzone); 
    323323                        for( i=0; i<mole.num_calc; i++ ) 
    324                                 fprintf(ioQQQ,"\t%.2e", COmole[i]->hevmol ); 
     324                                fprintf(ioQQQ,"\t%.2e", mole.list[i]->hevmol ); 
    325325                        fprintf(ioQQQ,"\n" ); 
    326326                         
    327327                        for( i=0; i < mole.num_calc; i++ ) 
    328328                        {