/home66/gary/public_html/cloudy/c08_branch/source/iso.h

Go to the documentation of this file.
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 _ISO_H_
00005 #define _ISO_H_
00006 
00009 EXTERN multi_arr<quantumState,3> StatesElem;
00010 
00011 EXTERN long int max_num_levels;
00012 
00014 #define HE1CSARRAY 10
00015 
00018 #define KILL_BELOW_PLASMA(E_)           ( (rfield.lgPlasNu && ((E_)<rfield.plsfrq) ) ? 0.:1. )
00019 
00020 #define NUM_DR_TEMPS    19
00021 
00023 #define N_(A_)  (StatesElem[ipISO][nelem][A_].n)
00024 #define L_(A_)  (StatesElem[ipISO][nelem][A_].l)
00025 #define S_(A_)  (StatesElem[ipISO][nelem][A_].S)
00026 #define J_(A_)  (StatesElem[ipISO][nelem][A_].j)
00027 
00028 #define IPRAD   0
00029 #define IPCOLLIS        1
00030 /*define IPENERGY       2*/
00031 
00032 /* following two macros used to define recombination coef arrays */
00033 /* Max n desired in RRCoef file.        */
00036 /* Hydrogen and helium atoms will have precompiled recombination coefficients up to these maximum n.    */
00037 #define RREC_MAXN       40
00038 
00040 #define LIKE_RREC_MAXN( A_ )            ( A_ == ipHELIUM ? 40 : 20 )
00041 
00042 #define N_ISO_TE_RECOMB         41
00043 
00046 #define SumUpToThisN    1000
00047 
00048 #define RECOMBMAGIC             (80405)
00049 
00054 void iso_cascade( long ipISO, long nelem );
00055 
00060 void iso_collapsed_bnl_print( long ipISO, long nelem );
00061 
00066 void iso_collapsed_bnl_set( long ipISO, long nelem );
00067 
00072 void iso_collapsed_Aul_update( long ipISO, long nelem );
00073 
00078 void iso_collapsed_lifetimes_update( long ipISO, long nelem );
00079 
00084 void iso_collide( long ipISO, long nelem );
00085 
00090 void iso_collisional_ionization( long ipISO, long nelem );
00091 
00096 void iso_continuum_lower( long ipISO , long nelem );
00097 
00102 void iso_cool( long ipISO , long nelem );
00103 
00106 void iso_create( void );
00107 
00113 double iso_dielec_recomb_rate( long ipISO, long nelem, long ipLo );
00114 
00119 void iso_error_generation( long ipISO, long nelem );
00120 
00126 long iso_get_total_num_levels( long ipISO, long nmaxResolved, long numCollapsed );
00127 
00132 void iso_ionize_recombine( long ipISO , long nelem );
00133 
00138 void iso_level( const long ipISO, const long nelem);
00139 
00144 void iso_photo( long ipISO , long nelem );
00145 
00151 void iso_prt_pops( long ipISO, long nelem, bool lgPrtDeparCoef );
00152 
00161 void iso_put_error( long ipISO, long nelem, long ipHi, long ipLo, long whichData, realnum errorToPut );
00162 
00167 void iso_radiative_recomb( long ipISO, long nelem );
00168 
00169 
00174 void iso_radiative_recomb_effective( long ipISO, long nelem );
00175 
00183 double iso_recomb_check( long ipISO, long nelem, long level, double temperature );
00184 
00187 void iso_recomb_auxiliary_free( void );
00188 
00191 void iso_recomb_malloc( void );
00192 
00196 void iso_recomb_setup( long ipISO );
00197 
00203 double iso_RRCoef_Te( long ipISO, long nelem , long n );
00204 
00207 void iso_satellite_update( void );
00208 
00212 void iso_solve( long ipISO );
00213 
00218 void iso_suprathermal( long ipISO, long nelem );
00219 
00224 void iso_update_num_levels( long ipISO, long nelem );
00225 
00226 EXTERN struct t_iso 
00227 {
00228         bool lgPrintNumberOfLevels;
00229 
00230         const char *chISO[NISO];
00231 
00233         multi_arr<realnum,4> strkar;
00234         multi_arr<double,4> pestrk;
00235 
00241         multi_arr<long,5> QuantumNumbers2Index;
00242 
00245         long int nLyman[NISO],
00247                 nLyman_malloc[NISO];
00248 
00251         multi_arr<long int,3> ipIsoLevNIonCon;
00252 
00254         multi_arr<double,3> xIsoLevNIonRyd;
00255 
00258         double xIonSimple[NISO][LIMELM];
00259 
00261         bool lgColl_l_mixing[NISO];
00262 
00264         bool lgColl_excite[NISO];
00265 
00267         bool lgColl_ionize[NISO];
00268 
00270         bool lgPrtDepartCoef[NISO][LIMELM];
00271 
00273         bool lgPrtLevelPops[NISO][LIMELM];
00274 
00277         bool lgCollStrenThermAver;
00278 
00281         bool lgInd2nu_On;
00282 
00285         bool lgLevelsLowered[NISO][LIMELM];
00286 
00289         bool lgLevelsEverLowered[NISO][LIMELM];
00290 
00292         long int nCollapsed_max[NISO][LIMELM];
00293         long int nCollapsed_local[NISO][LIMELM];
00294 
00298         long int numLevels_max[NISO][LIMELM];
00299 
00303         long int numLevels_local[NISO][LIMELM];
00304 
00307         long int numLevels_malloc[NISO][LIMELM];
00308 
00310         long int n_HighestResolved_max[NISO][LIMELM];
00312         long int n_HighestResolved_local[NISO][LIMELM];
00313 
00315         long int numPrintLevels[NISO][LIMELM];
00316 
00319         realnum stat_ion[NISO];
00320 
00322         double TwoNu_induc_up[NISO][LIMELM];
00323 
00325         double TwoNu_induc_dn[NISO][LIMELM];
00326 
00328         double TwoNu_induc_dn_max[NISO][LIMELM];
00329 
00335         multi_arr<double,4> RadRecomb;
00336 
00338         bool lgDielRecom[NISO];
00339 
00342         multi_arr<double,3> DielecRecomb;
00343 
00346         multi_arr<double,4> DielecRecombVsTemp;
00347 
00349         realnum CaseBCheck[NISO][LIMELM];
00350 
00352         double RadRec_caseB[NISO][LIMELM];
00353 
00356         double RadRec_effec[NISO][LIMELM];
00357 
00359         multi_arr<double,3> RateLevel2Cont; 
00360 
00362         multi_arr<double,3> RateCont2Level; 
00363 
00365         double RecomCollisFrac[NISO][LIMELM];
00366 
00369         multi_arr<long int,3> ipOpac;
00370 
00372         multi_arr<realnum,3> ConOpacRatio;
00373 
00375         multi_arr<double,3> DepartCoef;
00376 
00378         bool lgPopLTE_OK[NISO][LIMELM];
00379 
00381         multi_arr<double,3> PopLTE;
00382 
00384         multi_arr<double,3> ColIoniz;
00385 
00388         double pop_ion_ov_neut[NISO][LIMELM];
00389 
00391         double FreeBnd_net_Cool_Rate[NISO][LIMELM];
00392 
00394         double coll_ion[NISO][LIMELM];
00395 
00397         double cRest_cool[NISO][LIMELM];
00398 
00400         double xLineTotCool[NISO][LIMELM];
00401 
00403         double dLTot[NISO][LIMELM];
00404 
00406         double RadRecCool[NISO][LIMELM];
00407 
00409         double cBal_cool[NISO][LIMELM];
00410 
00412         double cLyrest_cool[NISO][LIMELM];
00413 
00415         double cLya_cool[NISO][LIMELM];
00416 
00418         multi_arr<double,3> gamnc;
00419 
00425         multi_arr<double,3> RecomInducRate;
00426 
00431         multi_arr<double,3> RecomInducCool_Coef;
00432 
00434         double RecomInducCool_Rate[NISO][LIMELM];
00435 
00437         multi_arr<double,4> Boltzmann;
00438 
00440         multi_arr<double,3> PhotoHeat;
00441 
00446         realnum SmallA;
00447 
00451         multi_arr<long int,3> ipSym2nu;
00452 
00454         multi_arr<realnum,3> As2nu;
00455 
00458         long ipTwoPhoE[NISO][LIMELM];
00459         long ipHalfTwoPhoE[NISO][LIMELM];
00460 
00462         int ipLyaRedist[NISO] , ipResoRedist[NISO] , ipSubRedist[NISO];
00463 
00465         int nLyaLevel[NISO];
00466 
00468         char chTypeAtomSet[NISO][10];
00470         char chTypeAtomUsed[NISO][LIMELM][10];
00471 
00472         /***********************************************/
00473         /***********************************************/
00474 
00475         /*   everything below here was originally part */
00476         /*   of the former helike structure, now       */
00477         /*   generalized for iso                                           */
00480         /***********************************************/
00481         /***********************************************/
00482 
00484         long int nCS[NISO];
00485 
00487         bool lgCompileRecomb[NISO];
00488 
00492         bool lgNoRecombInterp[NISO];
00493 
00495         bool lgCS_Vriens[NISO] ,
00496                 lgCS_None[NISO] ,
00497                 lgCS_Vrinceanu[NISO],
00498                 lgCS_therm_ave[NISO];
00499         int nCS_new[NISO];//vals are 0, 1, and 2
00500 
00502         bool lgCritDensLMix[NISO];
00503 
00506         bool lgFSM[NISO];
00507 
00509         multi_arr<double,3> SigmaAtot;
00510         
00512         multi_arr<realnum,5> HeCS;
00513         
00515         double CSTemp[NISO][HE1CSARRAY];
00516 
00519         bool lgRandErrGen[NISO];
00520 
00523         bool lgErrGenDone[NISO][LIMELM];
00524 
00525         bool lgTopoff[NISO];
00526 
00528         int modelRank[NISO];
00529 
00531         /* first dimension is iso,
00532          * second is nelem,
00533          * third is upper level,
00534          * fourth is lower level,
00535          * fifth is for radiative, collisional, or energy errors.
00536          * MACROS are used for the last dimension: IPRAD, IPCOLLIS, and IPENERGY. */
00537         multi_arr<realnum,5> Error;
00538 
00541         multi_arr<realnum,5> ErrorFactor;
00542 
00544         double qTot2S[NISO][LIMELM];
00545 
00547         multi_arr<double,4> BranchRatio, CascadeProb, SigmaCascadeProb;
00548 
00550         multi_arr<double,3> RadEffec, SigmaRadEffec;
00551 
00552         multi_arr<realnum,5> CachedAs;
00553         /* the departure coefficients of collapsed levels */
00554         multi_arr<double,5> bnl_effective;
00555 
00556 } iso;
00557 
00558 #endif /* _ISO_H_ */

Generated on Mon Feb 16 12:01:18 2009 for cloudy by  doxygen 1.4.7