00001
00002
00003
00004 #ifndef MOLE_H_
00005 #define MOLE_H_
00006
00007
00008
00010 extern void CO_drive(void);
00011
00013 extern void CO_zero(void);
00014
00016 extern void CO_create_react(void);
00017
00019 extern void CO_Init(void);
00021 extern void CO_update_rks( void );
00022
00023 extern void CO_update_species_cache(void);
00024
00025 extern double CO_sink_rate(const char chSpecies[]);
00026
00027 extern double CO_source_rate(const char chSpecies[]);
00028
00029 extern double CO_dissoc_rate(const char chSpecies[]);
00030
00031 struct COmole_rate_s *CO_findrate_s(const char buf[]);
00032
00033 extern double CO_findrk(const char buf[]);
00034
00035 extern double CO_findrate(const char buf[]);
00036
00069 extern struct molecule null_mole;
00070
00071 EXTERN struct t_co {
00072
00074 realnum CODissHeat,
00076 codfrc,
00078 codtot;
00079
00081 bool lgNoCOMole;
00082
00084 bool lgCODoCalc;
00085
00090 realnum
00093 hydro_sink[8],
00094 hydro_source[8];
00095
00101 double hmole_mass[N_H_MOLEC+1];
00102
00105 realnum C12_C13_isotope_ratio;
00106
00108 bool lgH2Ozer;
00109
00111 bool lgUMISTrates;
00112
00113 bool lgFederman;
00114
00118 bool lgNonEquilChem;
00119
00123 bool lgProtElim;
00124
00128 bool lgNeutrals;
00129
00130 double h2lim;
00131
00132 long co_nzone , iteration_co;
00133
00135 double comole_eden;
00136
00137 # if 0
00138
00139 bool lgElem_in_CO_chem[LIMELM];
00140 # endif
00141
00142
00143 realnum nitro_dissoc_rate;
00144
00147 double H_CH_C_H_H;
00148 double H_OH_O_H_H ;
00149 double H_H2O_OH_H_H;
00150 double H_COP_CO_HP;
00151 double H_CH_C_H2;
00152 double H_CHP_CP_H2;
00153 double H_CH2_CH_H2;
00154 double H_CH3P_CH2P_H2;
00155 double H_OH_O_H2;
00156 double H_H2O_OH_H2;
00157 double Hminus_HCOP_CO_H2;
00158 double Hminus_H3OP_H2O_H2;
00159 double Hminus_H3OP_OH_H2_H;
00160 double HP_CH_CHP_H;
00161 double HP_CH2_CH2P_H;
00162 double HP_H2O_H2OP_H;
00163 double HP_O2_O2P_H;
00164 double HP_OH_OHP_H;
00165 double HP_SiO_SiOP_H;
00166 double HP_CH2_CHP_H2;
00167 double HP_SiH_SiP_H2;
00168 double H2_CHP_CH2P_H;
00169 double H2_CH2P_CH3P_H;
00170 double H2_OHP_H2OP_H;
00171 double H2_H2OP_H3OP_H;
00172 double H2_COP_HCOP_H;
00173 double H2_OP_OHP_H;
00174 double H2_SiOP_SiOHP_H;
00175 double H2_C_CH_H;
00176 double H2_CP_CHP_H;
00177 double H2_CH_CH2_H;
00178 double H2_OH_H2O_H;
00179 double H2_O_OH_H;
00180 double H2_CH_C_H2_H;
00181 double H2_OH_O_H2_H;
00182 double H2_H2O_OH_H2_H;
00183 double H2_O2_O_O_H2;
00184 double H2_O2_OH_OH;
00185 double H2s_CH_C_H2_H;
00186 double H2s_OH_O_H2_H;
00187 double H2s_H2O_OH_H2_H;
00188 double H2s_O2_O_O_H2;
00189 double H2P_C_CHP_H;
00190 double H2P_CH_CH2P_H;
00191 double H2P_CH2_CH3P_H;
00192 double H2P_OH_H2OP_H;
00193 double H2P_H2O_H3OP_H;
00194 double H2P_CO_HCOP_H;
00195 double H2P_O_OHP_H;
00196 double H2P_CH_CHP_H2;
00197 double H2P_CH2_CH2P_H2;
00198 double H2P_CO_COP_H2;
00199 double H2P_H2O_H2OP_H2;
00200 double H2P_O2_O2P_H2;
00201 double H2P_OH_OHP_H2;
00202 double H3P_C_CHP_H2;
00203 double H3P_CH_CH2P_H2;
00204 double H3P_CH2_CH3P_H2;
00205 double H3P_OH_H2OP_H2;
00206 double H3P_H2O_H3OP_H2;
00207 double H3P_CO_HCOP_H2;
00208 double H3P_O_OHP_H2;
00209 double H3P_SiH_SiH2P_H2;
00210 double H3P_SiO_SiOHP_H2;
00211 double H2s_CH_CH2_H;
00212 double H2s_O_OH_H;
00213 double H2s_OH_H2O_H;
00214 double H2s_C_CH_H;
00215 double H2s_CP_CHP_H;
00216 double H_CH3_CH2_H2;
00217 double H_CH4P_CH3P_H2;
00218 double H_CH5P_CH4P_H2;
00219 double H2_CH2_CH3_H;
00220 double H2_CH3_CH4_H;
00221 double H2_CH4P_CH5P_H;
00222 double H2s_CH2_CH3_H;
00223 double H2s_CH3_CH4_H;
00224 double H2P_CH4_CH3P_H2;
00225 double H2P_CH4_CH4P_H2;
00226 double H2P_CH4_CH5P_H;
00227 double H3P_CH3_CH4P_H2;
00228 double H3P_CH4_CH5P_H2;
00229 double HP_CH3_CH3P_H;
00230 double HP_CH4_CH3P_H2;
00231 double HP_CH4_CH4P_H;
00232 double HP_HNC_HCN_HP;
00233 double H_HNC_HCN_H;
00234 double H2_HCNP_HCNHP_H;
00235 double H3P_HCN_HCNHP_H2;
00236 double H2s_OP_OHP_H;
00237
00238 double C_H3OP_HCOP_H2_1,
00239 C_OH_CO_H_1,
00240 CP_OH_CO_HP_1,
00241 CP_H2O_HCOP_H_1,
00242 CP_OH_COP_H_1,
00243 O_CH_CO_H_1,
00244 O_CHP_COP_H_1,
00245 O_CH2_CO_H_H_1,
00246 O_CH2_CO_H2_1,
00247 O_CH2P_HCOP_H_1,
00248 O_CH3P_HCOP_H2_1,
00249 O_H2OP_O2P_H2_1,
00250 O_OH_O2_H_1,
00251 O_OHP_O2P_H_1,
00252 O_SiH_SiO_H_1,
00253 O_SiH2P_SiOHP_H_1,
00254 OP_CH_COP_H_1,
00255 OP_OH_O2P_H_1,
00256 Si_OH_SiO_H_1,
00257 SiP_H2O_SiOHP_H_1,
00258 SiP_OH_SiOP_H_1,
00259 CHP_H2O_HCOP_H2_1,
00260 CHP_OH_COP_H2_1,
00261 H_C_CH_nu,
00262 H_CP_CHP_nu,
00263 H_OH_H2O_nu,
00264 Hminus_CH_CH2_e,
00265 Hminus_C_CH_e,
00266 Hminus_OH_H2O_e,
00267 Hminus_O_OH_e,
00268 H2_C_CH2_nu,
00269 H2_CP_CH2P_nu,
00270 H2_SiP_SiH2P_nu,
00271 HeP_CH_CP_He_H,
00272 HeP_CH2_CHP_He_H,
00273 HeP_OH_OP_He_H,
00274 HeP_H2O_OHP_He_H,
00275 HeP_SiH_SiP_He_H,
00276 HeP_H2O_OH_He_HP,
00277 HeP_CH2_CP_He_H2,
00278 crnu_CH_C_H,
00279 crnu_CHP_CP_H,
00280 crnu_H2O_OH_H,
00281 crnu_OH_O_H,
00282 crnu_SiH_Si_H,
00283 nu_CH_C_H,
00284 nu_CHP_CP_H,
00285 nu_CH2_CH_H,
00286 nu_CH2P_CHP_H,
00287 nu_CH3P_CH2P_H,
00288 nu_CH3P_CHP_H2,
00289 nu_H2O_OH_H,
00290 nu_OH_O_H,
00291 nu_OHP_O_HP,
00292 nu_SiH_Si_H,
00293 e_CHP_C_H,
00294 e_CH2P_CH_H,
00295 e_CH2P_C_H_H,
00296 e_CH2P_C_H2,
00297 e_CH3P_C_H2_H,
00298 e_CH3P_CH2_H,
00299 e_CH3P_CH_H_H,
00300 e_CH3P_CH_H2,
00301 e_H2OP_OH_H,
00302 e_H2OP_O_H_H,
00303 e_H2OP_O_H2,
00304 e_H3OP_H2O_H,
00305 e_H3OP_OH_H_H,
00306 e_H3OP_OH_H2,
00307 e_H3OP_O_H2_H,
00308 e_HCOP_CO_H,
00309 e_OHP_O_H,
00310 e_SiH2P_SiH_H,
00311 e_SiH2P_Si_H_H,
00312 e_SiH2P_Si_H2,
00313 e_SiOHP_SiO_H,
00314 H2_CH_CH3_nu,
00315 H2_CH3P_CH5P_nu,
00316 H2s_CH_CH3_nu,
00317 Hminus_CH2_CH3_e,
00318 Hminus_CH3_CH4_e,
00319 nu_CH3_CH2_H,
00320 nu_CH3_CH_H2,
00321 nu_CH4_CH3_H,
00322 nu_CH4_CH2_H2,
00323 nu_CH4_CH_H2,
00324 crnu_CH3_CH2_H,
00325 crnu_CH3_CH_H2,
00326 crnu_CH4_CH2_H2,
00327 e_CH5P_CH3_H2,
00328 e_CH5P_CH4_H,
00329 e_CH4P_CH3_H,
00330 e_CH4P_CH2_H_H,
00331 H2_N_NH_H ,
00332 H2_NH_NH2_H ,
00333 H2_NH2_NH3_H ,
00334 H2_CN_HCN_H ,
00335 HP_HNO_NOP_H2,
00336 HP_HS_SP_H2,
00337 H_HSP_SP_H2 ,
00338 H2P_N_NHP_H ,
00339 H2_NP_NHP_H ,
00340 H2_NHP_N_H3P ,
00341 H2P_NH_NH2P_H ,
00342 H2_NHP_NH2P_H ,
00343 H2_NH2P_NH3P_H ,
00344 H2_NH3P_NH4P_H ,
00345 H2P_CN_HCNP_H ,
00346 H2_CNP_HCNP_H ,
00347 H2P_NO_HNOP_H ,
00348 H2_SP_HSP_H ,
00349 H2_CSP_HCSP_H ,
00350 H3P_NH_NH2P_H2 ,
00351 H3P_NH2_NH3P_H2 ,
00352 H3P_NH3_NH4P_H2 ,
00353 H3P_CN_HCNP_H2 ,
00354 H3P_NO_HNOP_H2 ,
00355 H3P_S_HSP_H2 ,
00356 H3P_CS_HCSP_H2 ,
00357 H3P_NO2_NOP_OH_H2 ,
00358 HP_NH_NHP_H ,
00359 HP_NH2_NH2P_H ,
00360 HP_NH3_NH3P_H ,
00361 H_CNP_CN_HP ,
00362 HP_HCN_HCNP_H ,
00363 H_HCNP_HCN_HP ,
00364 H_N2P_N2_HP ,
00365 HP_NO_NOP_H ,
00366 HP_HS_HSP_H ,
00367 HP_SiN_SiNP_H ,
00368 HP_CS_CSP_H ,
00369 HP_NS_NSP_H ,
00370 HP_SO_SOP_H ,
00371 HP_OCS_OCSP_H ,
00372 HP_S2_S2P_H ,
00373 H2P_NH_NHP_H2 ,
00374 H2P_NH2_NH2P_H2 ,
00375 H2P_NH3_NH3P_H2 ,
00376 H2P_CN_CNP_H2 ,
00377 H2P_HCN_HCNP_H2 ,
00378 H2P_NO_NOP_H2 ,
00379 H2_ClP_HClP_H ,
00380 H2_HClP_H2ClP_H ,
00381 H3P_Cl_HClP_H2,
00382 H3P_HCl_H2ClP_H2,
00383 HP_HCl_HClP_H,
00384 HP_C2_C2P_H,
00385 H2_S_HS_H,
00386 H2P_C2_C2P_H2,
00387 Hminus_NH4P_NH3_H2,
00388 Hminus_NP_N_H,
00389 HP_C2H2_C2H2P_H,
00390 HP_C2H2_C2HP_H2 ,
00391 HP_C3H_C3HP_H ,
00392 HP_C3H_C3P_H2 ,
00393 H2P_C2H_C2H2P_H,
00394 H2P_C2H2_C2H2P_H2,
00395 H3P_C2H_C2H2P_H2 ,
00396 H3P_C3_C3HP_H2 ,
00397 H2_C2HP_C2H2P_H ,
00398 H2_C3P_C3HP_H,
00399 H_C2H3P_C2H2P_H2 ,
00400 H3P_C2H2_C2H3P_H2 ,
00401 H2P_C2H2_C2H3P_H ,
00402 HP_C3_C3P_H ,
00403 HP_C2H_C2HP_H,
00404 H2P_C2_C2HP_H ,
00405 H2P_C2H_C2HP_H2,
00406 H3P_C2_C2HP_H2 ,
00407 H2_C2P_C2HP_H ,
00408 HP_C2H_C2P_H2,
00409 N2_H3P_N2HP_H2;
00410 } co;
00411
00412 EXTERN struct t_mole {
00413
00414
00416 double H2_to_H_limit;
00417
00420 long int n_h2_elec_states;
00421
00424 bool lgColl_gbar;
00425
00427 bool lgColl_deexec_Calc;
00428
00430 bool lgColl_dissoc_coll;
00431
00434 bool lgH2_grain_deexcitation;
00435
00437 bool lgH2_LTE;
00438
00440 bool lgH2_ortho_para_coll_on;
00441
00444 bool lgH2_He_ORNL;
00445
00446
00447
00448 bool lgH2_ORH2_ORNL;
00449 bool lgH2_PAH2_ORNL;
00450
00452 int nH2_TRACE;
00453
00455 bool lgH2_NOISE ,
00457 lgH2_NOISECOSMIC;
00458
00460 int nH2_trace_final ,
00461 nH2_trace_iterations ,
00462 nH2_trace_full,
00463 nH2_trace_matrix;
00464
00467 bool lgGrain_mole_deplete;
00468
00470 double xMeanNoise , xSTDNoise;
00471
00473 bool lgElem_in_chemistry[LIMELM];
00474 int num_comole_calc, num_comole_tot, num_elements;
00475
00478 double **source , **sink;
00479
00481 realnum ***xMoleChTrRate;
00482 double **amat,
00483 *b,
00484 **c;
00485 } mole;
00486
00487 enum {CHARS_SPECIES=7};
00488
00489 EXTERN struct molecule {
00490 int nElem[LIMELM];
00491 int nelem_hevmol;
00492 char label[CHARS_SPECIES];
00493 int nElec;
00494 int Excit;
00495 bool lgGas_Phase;
00496 int n_nuclei;
00497 realnum hevmol;
00498 realnum hev_reinit;
00499 realnum *location;
00500 realnum hevcol;
00501 realnum hevcol_old;
00502 realnum pdr_mole_co;
00503
00504
00505 realnum xMoleFracMax;
00506 realnum mole_mass;
00507 realnum co_save;
00508 realnum comole_save;
00509 realnum hevmol_save;
00510 int active;
00511 int index;
00512 } **COmole;
00513
00514
00515 extern struct molecule *findspecies(const char buf[]);
00516
00517 extern void CO_punch_mol(FILE *punit, const char chSpecies[],
00518 char header[], double depth);
00519
00520 #endif