cloudy
trunk
|
00001 /* This file is part of Cloudy and is copyright (C)1978-2008 by Gary J. Ferland and 00002 * others. For conditions of distribution and use see copyright notice in license.txt */ 00003 00004 #ifndef _MOLE_H_ 00005 #define _MOLE_H_ 00006 00007 /* mole.h */ 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;/***[LIMELM][LIMELM+1][LIMELM+1];*/ 00483 double **amat, /* [NUM_COMOLE_CALC][NUM_COMOLE_CALC], */ 00484 *b, /* [NUM_COMOLE_CALC], */ 00485 **c; /* [NUM_COMOLE_TOT][NUM_COMOLE_CALC + 1]; */ 00486 } mole; 00487 00488 enum {CHARS_SPECIES=7}; 00489 /* Structure containing molecule data, initially only CO */ 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; /* this save first valid solution from previous iteration */ 00500 realnum *location; 00501 realnum hevcol; 00502 realnum hevcol_old; 00503 realnum pdr_mole_co; 00504 /* realnum HevMolSav; ** the particle densities in first zone where CO computed, 00505 * in last iteration */ 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 /* _MOLE_H_ */