/home66/gary/public_html/cloudy/c08_branch/source/grainvar.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 _GRAINVAR_H_
00005 #define _GRAINVAR_H_
00006 
00007 /* grainvar.h */
00008 
00011 #define IGNORE_QUANTUM_HEATING 1
00012 
00014 const int NDEMS = 200;
00015 
00017 const double GRAIN_TMIN = 1.e-3;
00018 const double GRAIN_TMID = 5.e3;
00019 const double GRAIN_TMAX = 1.2e9;
00020 
00022 const int NDUST = 500;
00023 
00025 const unsigned int NSHL = 50U;
00027 const int NCHS = 30;
00029 const int NCHRG_DEFAULT= 2;
00030 
00034 const int NQGRID = 10000;
00035 
00037 const double CONSERV_TOL = 1.e-3;
00038 
00040 typedef enum {
00041         ENTH_CAR,   
00042         ENTH_CAR2,  
00043         ENTH_SIL,   
00044         ENTH_SIL2,  
00045         ENTH_PAH,   
00046         ENTH_PAH2   
00047 } enth_type;
00048 
00050 typedef enum {
00051         ZMIN_CAR,   
00052         ZMIN_SIL,   
00053         ZMIN_BAKES  
00054 } zmin_type;
00055 
00057 typedef enum {
00058         POT_CAR,    
00059         POT_SIL     
00060 } pot_type;
00061 
00063 typedef enum {
00064         IAL_CAR,    
00065         IAL_SIL     
00066 } ial_type;
00067 
00069 typedef enum {
00070         PE_CAR,     
00071         PE_SIL      
00072 } pe_type;
00073 
00075 typedef enum {
00076         STRG_CAR,   
00077         STRG_SIL    
00078 } strg_type;
00079 
00081 typedef enum {
00082         H2_ICE,     
00083         H2_SIL,     
00084         H2_CAR,     
00089         H2_TOP      
00090 } H2_type;
00091 
00095 typedef enum {
00096         MAT_USR=0,  
00097         MAT_CAR,    
00098         MAT_SIL,    
00099         MAT_PAH,    
00100         MAT_CAR2,   
00101         MAT_SIL2,   
00102         MAT_PAH2,   
00106         MAT_TOP     
00107 } mat_type;
00108 
00109 typedef struct
00110 {
00111         long nelem;             
00112         long ns;                
00113         double ionPot;          
00114         long ipLo;              
00115         flex_arr<realnum> p;    
00116         flex_arr<realnum> y01;  
00117         long nData;             
00118         double *AvNr;           
00119         double *Ener;           
00120         valarray< flex_arr<realnum> > y01A;
00121 } ShellData;
00122 
00127 typedef struct
00128 {
00129         unsigned long nSubShell; 
00130         unsigned long *nData;    
00131         double *IonThres;        
00132         double **AvNumber;       
00133         double **Energy;         
00134 } AEInfo;
00135 
00137 const int MAX_READ_RECORDS = 50;
00139 const int READ_RECORD_LENGTH = 200;
00140 
00141 /* >>chng 04 jan 17, introduced the ChargeBin structure, PvH */
00142 /* >>chng 04 jan 20, moved cache data from grains.c into gv data structure, PvH */
00143 
00158 typedef struct
00159 {
00161         long DustZ,             
00162           ipThresInf,           
00163           ipThresInfVal,        
00164           nfill;                
00165         double FracPop,         
00166           Emin,                 
00167           EminInc,              
00168           PotSurf,              
00169           PotSurfInc,           
00170           ThresInf,             
00171           ThresInfInc,          
00172           ThresInfVal,          
00173           ThresSurf,            
00174           ThresSurfInc,         
00175           ThresSurfVal,         
00176           ThermRate;            
00177         flex_arr<realnum> yhat; 
00178         flex_arr<realnum> yhat_primary;
00179         flex_arr<realnum> ehat; 
00180         flex_arr<double> cs_pdt;
00182         long RecomZ0[LIMELM][LIMELM+1];  
00184         double eta[LIMELM+2],   
00185           xi[LIMELM+2];         
00187         double RSum1;           
00188         double RSum2;           
00189         double ESum1a;          
00190         double ESum1b;          
00191         double ESum2;           
00194         realnum tedust;         
00195         double hcon1;           
00196         double hots1;           
00197         double bolflux1;        
00198         double pe1;             
00199         flex_arr<double> fac1;  
00200         flex_arr<double> fac2;  
00202         realnum RecomEn[LIMELM][LIMELM+1];
00203         realnum ChemEn[LIMELM][LIMELM+1];
00206         double BolFlux,         
00207           GrainHeat,            
00208           GrainHeatColl,        
00209           GasHeatPhotoEl,       
00210           GasHeatTherm,         
00211           GrainCoolTherm,       
00212           ChemEnIon,            
00213           ChemEnH2;             
00216         double HeatingRate2;    
00218 }        ChargeBin;
00219 
00234 typedef struct
00235 {
00237         bool lgDustFunc;        
00238         bool lgPAHsInIonizedRegion;
00241         char chDstLab[13];      
00242         double eec;             
00243         double eyc;            
00244         realnum dustp[5],       
00246           AvRadius,             
00247           AvArea,               
00248           AvVol,                
00249           IntRadius,            
00250           IntArea,              
00251           IntVol,               
00252           elmAbund[LIMELM],     
00253           atomWeight,           
00254           Tsublimat,            
00255           DustWorkFcn,          
00256           BandGap,              
00257           ThermEff,             
00258           avDGRatio;            
00259         mat_type matType;       
00269         realnum dstfactor,      
00270           dstAbund,             
00271           GrnVryDpth;           
00273         double cnv_H_pGR,       
00274           cnv_H_pCM3,           
00275           cnv_CM3_pGR,          
00276           cnv_CM3_pH,           
00277           cnv_GR_pH,            
00278           cnv_GR_pCM3;          
00281         realnum EnergyCheck;    
00282         long int NFPCheck;      
00286         double *dstab1, 
00287           *pure_sc1,    
00288           *asym;        
00291         double dstems[NDEMS],   
00292           dstslp[NDEMS],        
00293           dstslp2[NDEMS];       
00295         bool lgTdustConverged;  
00296         realnum tedust,         
00297           TeGrainMax,           
00298           avdust;               
00306         bool lgChrgConverged;   
00307         long LowestZg;          
00308         unsigned long nShells;  
00309         long nfill;             
00310         ShellData *sd[NSHL];    
00311         realnum *y0b06;         
00312         double AveDustZ,        
00313           Capacity,             
00314           dstpot,               
00315           dstpotsav,            
00316           LowestPot,            
00317           RateUp,               
00318           RateDn,               
00319           StickElecNeg,         
00320           StickElecPos;         
00321         realnum avdpot,         
00322           le_thres,             
00323           *inv_att_len;         
00324         double AccomCoef[LIMELM]; 
00327         double BolFlux,         
00328           GrainCoolTherm,       
00329           GasHeatPhotoEl,       
00330           GrainHeat,            
00331           GrainHeatColl,        
00332           GrainGasCool,         
00333           ChemEn,               
00334           ChemEnH2,             
00335           thermionic;           
00338         bool lgQHeat,           
00339           lgUseQHeat,           
00340           lgEverQHeat,          
00341           lgQHTooWide;          
00342         long QHeatFailures,     
00343           qnflux,               
00344           qnflux2;              
00345         double
00346           qtmin,                
00347           qtmin_zone1,          
00348           HeatingRate1;         
00349         double DustEnth[NDEMS], 
00350           EnthSlp[NDEMS],       
00351           EnthSlp2[NDEMS];      
00354         double rate_h2_form_grains_HM79; 
00355         double rate_h2_form_grains_CT02; 
00356         double rate_h2_form_grains_used; 
00360         realnum DustDftVel,     
00361           avdft;                
00363         long nChrgOrg;          
00364         long nChrg;             
00365         ChargeBin *chrg[NCHS];  
00367 }        GrainBin;
00368 
00379 EXTERN struct t_gv
00380 {
00382         bool lgDustOn,                 
00383           lgBakes,                     
00384           lgWD01,                      
00385           lgReevaluate,                
00387           lgGrainPhysicsOn,            
00389           lgAnyDustVary,               
00390           lgAnyNegCharge,              
00391           lgBakesPAH_heat;             
00392         bool lgNegGrnDrg;              
00395         bool lgDHetOn,                 
00396           lgQHeatOn;                   
00400         bool lgDColOn;                 
00404         bool lgGrainElectrons;
00405 
00406         char ReadRecord[MAX_READ_RECORDS][READ_RECORD_LENGTH];
00408         long ReadPtr;                  
00413         char chPAH_abundance_fcn[5];
00414 
00421         realnum GrainMetal,            
00422           elmSumAbund[LIMELM];         
00426         enth_type which_enth[MAT_TOP]; 
00427         zmin_type which_zmin[MAT_TOP]; 
00428         pot_type which_pot[MAT_TOP];   
00429         ial_type which_ial[MAT_TOP];   
00430         pe_type which_pe[MAT_TOP];     
00431         strg_type which_strg[MAT_TOP]; 
00432         H2_type which_H2distr[MAT_TOP];
00434         realnum *anumin, 
00435           *anumax;       
00438         long nfill,                    
00439           nzone;                       
00440         double *dstab,   
00441           *dstsc;        
00446         double TotalEden;              
00448         realnum GrnElecDonateMax,      
00449           GrnElecHoldMax;              
00450         realnum GrnRecomTe;            
00451         long HighestIon,               
00452           nChrgRequested;              
00454         AEInfo *AugerData[LIMELM];     
00459         realnum GrainChTrRate[LIMELM][LIMELM+1][LIMELM+1];
00460         
00462         double GasCoolColl,            
00463           GasHeatPhotoEl,              
00464           GasHeatTherm,                
00465           GasHeatNet,                  
00466           GrainHeatSum,                
00467           GrainHeatLya,                
00468           GrainHeatDif,                
00469           GrainHeatInc,                
00470           GrainHeatCollSum,            
00471           GrainHeatChem;               
00473         double dHeatdT;                
00475         realnum GrainHeatScaleFactor;  
00477         realnum TotalDustHeat,         
00478           dphmax,                      
00479           dclmax;                      
00482         double dsttmp[NDEMS];          
00485         realnum dstAbundThresholdNear; 
00486         realnum dstAbundThresholdFar;  
00487         bool lgQHeatAll,               
00488           lgQHPunLast;                 
00489         FILE *QHPunchFile;             
00492         double rate_h2_form_grains_used_total; 
00496         realnum *GrainEmission,
00497           *GraphiteEmission,
00498           *SilicateEmission;
00501         long int nBin;                 
00502         GrainBin *bin[NDUST];          
00504 }       gv;
00505 
00506 
00507 #endif /* _GRAINVAR_H_ */

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