00001
00002
00003
00006 void ion_recom_calculate( void );
00007
00011 void ion_trim(
00012 long int nelem );
00013
00015 void ion_zero(long int nelem);
00016
00020 void ion_collis(
00021 long nelem);
00022
00027 void ion_solver(long int nelem,
00028 bool lgPrintIt);
00029
00034 void ion_photo(
00035 long int nelem ,
00036 bool lgPrintIt );
00037
00039 void ion_recomb(bool,const double*,const double*,const double[],const double[],
00040 const double[],const double[],const double[],const double[],long);
00041
00043 void ion_recombAGN( FILE * io );
00044
00048 void Badnell_rec_init( void );
00049
00062 double Badnell_DR_rate_eval(
00063 int z_val,
00064 int n_val );
00069 double Badnell_RR_rate_eval(
00070 int z_val,
00071 int n_val );
00072
00073
00074 void IonAlumi(void);
00075 void IonArgon(void);
00076 void IonBeryl(void);
00077 void IonBoron(void);
00078 void IonCalci(void);
00079 void IonCarbo(void);
00080 void IonChlor(void);
00081 void IonChrom(void);
00082 void IonCobal(void);
00083 void IonCoppe(void);
00084 void IonFluor(void);
00085 void IonHelium(void);
00086 void IonIron(void);
00087 void IonLithi(void);
00088 void IonMagne(void);
00089 void IonManga(void);
00090 void IonNeon(void);
00091 void IonNicke(void);
00092 void IonNitro(void);
00093 void IonOxyge(void);
00094 void IonPhosi(void);
00095 void IonPotas(void);
00096 void IonScand(void);
00097 void IonSilic(void);
00098 void IonSodiu(void);
00099 void IonSulph(void);
00100 void IonTitan(void);
00101 void IonVanad(void);
00102 void IonZinc(void);
00103
00105 #define NSHELLS 7
00106
00108 EXTERN struct t_ionbal {
00109
00111 bool lgNoDec;
00112
00120 double trimhi,
00121
00124 trimlo;
00125
00127 bool lgTrimhiOn;
00128
00129
00130
00131
00143 double ****PhotoRate_Shell;
00144
00148 bool lgPhotoIoniz_On;
00149
00152 bool lgHO_ct_chem;
00153
00156 double ***CollIonRate_Ground;
00157
00159 double CosRayIonRate;
00160
00162 double CosRayHeatRate;
00163
00165 double ExtraHeatRate;
00166
00168 double xNeutronHeatRate;
00169
00171 double PairProducPhotoRate[3];
00172
00173
00174
00175
00179 bool lgCompRecoil;
00180
00182 double CompRecoilHeatLocal;
00183
00185 long int **ipCompRecoil;
00186
00188 double **CompRecoilIonRate;
00189
00191 double **CompRecoilIonRateSave;
00192
00194 double **CompRecoilHeatRate;
00195
00197 double **CompRecoilHeatRateSave;
00198
00200 double **UTA_ionize_rate;
00202 double **UTA_heat_rate;
00203
00205 bool lgInnerShellLine_on;
00207 bool lgInnerShell_Kisielius;
00210 bool lgInnerShell_Gu06;
00211
00213 double **RateIonizTot;
00214
00217 long int nCompRecoilElec[LIMELM];
00218
00219 double CompHeating_Max;
00220
00221
00222
00223
00224
00225
00227 double **RateRecomTot;
00228
00230 double **RR_Badnell_rate_coef ,
00231 **DR_Badnell_rate_coef,
00232 *DR_Badnell_rate_coef_mean_ion;
00233
00235 int **lgDR_Badnell_rate_coef_exist ,
00236 **lgRR_Badnell_rate_coef_exist;
00237
00239 bool lg_use_DR_Badnell_rate_coef_mean_ion;
00240
00242 bool lgDR_recom_Badnell_use,
00243 lgRR_recom_Badnell_use,
00245 lgRecom_Badnell_print;
00246
00248 double **DR_old_rate_coef;
00249
00251 double **RR_rate_coef_used,
00252 **DR_rate_coef_used;
00253
00255 double **RR_Verner_rate_coef;
00256
00261 int nDR_S_guess;
00262 float DR_S_scale[5];
00263
00265 float **GrainCreat,
00266 **GrainDestr;
00267
00268 int
00270 lgGrainIonRecom;
00271
00274 float DielSupprs[2][LIMELM];
00275
00277 float lg_guess_coef;
00279 float guess_noise;
00280
00283 bool lgSupDie[2];
00284
00287 float GuessDiel[4];
00288
00291 bool lgNoCota;
00292
00294 float CotaRate[LIMELM];
00295
00297 long int ilt,
00298 iltln,
00299 ilthn,
00300 ihthn,
00301 ifail;
00302
00303 } ionbal;
00304