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