Show
Ignore:
Timestamp:
12/21/07 12:00:45 (11 months ago)
Author:
rjrw
Message:

Note some implementation oddities in grain surface reactions -- mostly
not in presently active code.

Files:
1 modified

Legend:

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

    r1706 r1708  
    932932         * activ_barrier provides information on how well two atoms on the surface of a grain  
    933933         * can actually interact to form a new molecule. The formalism below is taken from 
    934          * the Hasegawa, Herbst, and Leune paper from 1992 (referenced above)*/ 
     934         * the Hasegawa, Herbst, and Leung paper from 1992 (referenced above)*/ 
    935935 
    936936        double E_i, E_j, quant_barrier,  
    937         vib_freq_i, vib_freq_j, surface_density_of_sites, activ_barrier, 
    938         diff_i, diff_j, Exp_i, Exp_j,dust_density,total_sites; 
     937                vib_freq_i, vib_freq_j, surface_density_of_sites, activ_barrier, 
     938                diff_i, diff_j, Exp_i, Exp_j,dust_density, scale, total_sites; 
    939939         
    940940        int nd; 
     
    945945        surface_density_of_sites = 1.5e15; /* number of sites available for adsorption */ 
    946946        total_sites = 1.0e6; /* total number of sites */ 
     947        fixit(); // rate->a is _always_ overall scaling factor 
    947948        E_i = rate->a; /* adsorption energy barrier (w/ grain) for first reactant */ 
    948949        E_j = rate->b; /* adsorption energy barrier (w/ grain)for second reactant */ 
     
    950951 
    951952        /* Each species has a vibrational frequency, dependent on its adsorption energy barrier */ 
    952         fixit(); /* Ordering of reactants may have switched, is rate->reduced_mass better?? */ 
     953        fixit(); /* Ordering of reactants may have switched */ 
    953954        vib_freq_i = sqrt(2*surface_density_of_sites*(0.3*BOLTZMANN)*E_i/(PI*PI*rate->reactants[0]->mole_mass)); 
    954         vib_freq_j = sqrt(2*surface_density_of_sites*(0.3*BOLTZMANN)*E_j/(PI*PI*rate->reactants[0]->mole_mass)); 
     955        vib_freq_j = sqrt(2*surface_density_of_sites*(0.3*BOLTZMANN)*E_j/(PI*PI*rate->reactants[1]->mole_mass)); 
    955956  
    956957        Exp_i = 0.0; 
     
    959960 
    960961        /* Compute thermal evaporation terms along with total dust number density */ 
     962        fixit(); // should there be an area weighting to exponential terms? 
    961963        if( conv.nTotalIoniz > 1 || iteration > 1 ) 
    962964        { 
     
    975977        /* Exponential term models the likelyhood that two species, once they meet on the surface, will interact.  Larger the barrier, the smaller 
    976978         * the chance of a new molecule */ 
    977         activ_barrier = exp(-2*(quant_barrier/(HBAReV*EN1EV))*sqrt(2*rate->reduced_mass*0.3*BOLTZMANN*activ_barrier)); 
     979        scale = exp(-2*(quant_barrier/(HBAReV*EN1EV))*sqrt(2*rate->reduced_mass*0.3*BOLTZMANN*activ_barrier)); 
    978980 
    979981        /* Total Rate */ 
    980         return activ_barrier*(diff_i + diff_j)/SDIV(dust_density); 
     982        return scale*(diff_i + diff_j)/SDIV(dust_density); 
    981983} 
    982984 
     
    988990         * The following treatment uses their equation 3 */ 
    989991 
    990         double yield, grain_area; 
     992        double grain_area; 
    991993        int nd; 
    992994 
     
    995997        grain_area = 0.; 
    996998        for( nd=0; nd < gv.nBin; nd++ ) 
    997                 { 
    998                         grain_area += gv.bin[nd]->AvArea; 
    999                 } 
     999        { 
     1000                grain_area += gv.bin[nd]->AvArea; 
     1001        } 
    10001002 
    10011003        /* This is the number of molecules removed from the grain per incident photon 
    10021004         * use same value of 1e-4 as used in Bergin */ 
    10031005 
    1004         yield = rate->a; 
    1005  
    1006         return yield*grain_area* hmi.UV_Cont_rel2_Draine_DB96_depth; 
     1006        return grain_area* hmi.UV_Cont_rel2_Draine_DB96_depth; 
    10071007} 
    10081008 
     
    19231923        { 
    19241924                rate = p->second; 
    1925                 if(rate->fun != NULL) { 
    1926                         rate->rk = rate->a*rate->fun(rate); 
    1927                 } 
     1925                ASSERT(rate->fun != NULL); 
     1926                rate->rk = rate->a*rate->fun(rate); 
    19281927        }        
    19291928}