00001
00002
00003
00004 #ifndef RFIELD_H_
00005 #define RFIELD_H_
00006
00007
00008 #include "energy.h"
00009
00011 const double WL_V_FILT = 5500.;
00012
00014 const double WL_B_FILT = 4400.;
00015
00018 const int LIMSPC = 100;
00019
00021 const int NCELL = 130000;
00022
00024 void rfield_opac_zero( long lo , long ihi );
00025
00027 extern bool lgRfieldMalloced;
00028
00029 namespace Illuminate {
00030 typedef enum { FORWARD , REVERSE , SYMMETRIC } IlluminationType ;
00031 }
00032
00033 EXTERN struct t_rfield {
00034
00043 long int nflux;
00044
00046 long int nupper;
00047
00049 realnum emm;
00050
00052 realnum egamry;
00053
00055 realnum FluxFaint;
00056
00058 realnum *anu;
00059
00062 realnum *AnuOrg;
00063
00065 realnum *widflx;
00066
00068 long int *line_count;
00069
00071 realnum *OccNumbBremsCont;
00072
00074 realnum *OccNumbContEmitOut;
00075
00077 realnum *anulog,
00078 *anusqr,
00079 *anu2,
00080 *anu3;
00081
00086 realnum **flux;
00087
00089 realnum *flux_isotropic;
00090
00092 realnum *flux_beam_time , *flux_beam_const;
00093
00095 realnum *flux_accum;
00096
00098 realnum *ExtinguishFactor;
00099 realnum ExtinguishLeakage,
00100 ExtinguishColumnDensity,
00101 ExtinguishLowEnergyLimit,
00103 ExtinguishConvertColDen2OptDepth ,
00105 ExtinguishEnergyPowerLow;
00106
00110 bool lgMustBlockHIon;
00111
00112
00113
00114 bool lgBlockHIon;
00115
00117 bool lgDoLineTrans;
00118
00121 bool lgOpacityReevaluate;
00122
00124 bool lgCMB_set;
00125
00128 bool lgIonizReevaluate;
00129
00131 realnum *convoc;
00132
00135 realnum *OccNumbIncidCont;
00136
00138 realnum *OccNumbDiffCont;
00139
00142 double *ContBoltz;
00143
00146 realnum **ConEmitLocal;
00147
00149 realnum **ConSourceFcnLocal;
00150
00152 realnum **ConEmitReflec;
00153
00158 realnum **ConEmitOut;
00159
00161 realnum *ConInterOut;
00162
00164 realnum **ConRefIncid;
00165
00168 realnum *SummedCon;
00169 realnum *SummedDif;
00170 realnum *SummedOcc;
00171 realnum *SummedDifSave;
00172
00175 realnum *ConOTS_local_photons,
00177 *ConOTS_local_OTS_rate;
00178
00181 realnum *DiffuseEscape;
00182
00184 realnum *TotDiff2Pht;
00185
00188 realnum
00190 *otslin,
00192 *otscon,
00193 **otssav;
00194
00196 realnum **outlin,
00197 *outlin_noplot;
00198
00200 realnum *DiffuseLineEmission;
00201
00203 realnum **reflin;
00204
00206 realnum **flux_total_incident;
00207 realnum *flux_beam_const_save , *flux_time_beam_save , *flux_isotropic_save;
00208
00210 realnum time_continuum_scale;
00211
00214 realnum DiffPumpOn;
00215
00217 char **chLineLabel;
00218
00220 char **chContLabel;
00221
00224 realnum **gff;
00225
00229 bool lgCompileGauntFF;
00230
00233 char chDffTrns[4];
00234
00238 bool lgOutOnly;
00239
00242 long int ipEnergyBremsThin;
00243 realnum EnergyBremsThin;
00244
00246 long int ipMaxBolt;
00247
00249 bool lgInducProcess;
00250
00252 double *comup,
00253 *comdn;
00254
00256 long int ipB_filter , ipV_filter;
00257
00260 long int ipG0_TH85_lo , ipG0_TH85_hi;
00261
00264 long int ipG0_DB96_lo , ipG0_DB96_hi;
00265
00267 long int ipG0_spec_lo , ipG0_spec_hi;
00268
00270 long int ip1000A;
00271
00274 double extin_mag_B_point , extin_mag_V_point;
00275
00278 double extin_mag_B_extended , extin_mag_V_extended;
00279
00281 double opac_mag_B_point, opac_mag_V_point, opac_mag_B_extended , opac_mag_V_extended;
00282
00285 realnum *csigh,
00286 *csigc;
00287
00288 double comtot,
00289 cmheat,
00290 cmcool,
00291 comoff,
00292 cinrat;
00293
00295 bool lgComUndr;
00296
00297 double totpow[LIMSPC],
00298 slope[LIMSPC],
00299 cutoff[LIMSPC][3],
00300 spfac[LIMSPC];
00301
00303 bool lgTimeVary[LIMSPC];
00304
00305
00306
00307 bool lgBeamed[LIMSPC];
00308
00311 realnum OpticalDepthScaleFactor[LIMSPC];
00312
00313 Illuminate::IlluminationType Illumination[LIMSPC];
00314
00319 long int nShape,
00320 ipSpec;
00321
00327 vector<Energy> tNu[LIMSPC];
00328 vector<realnum> tslop[LIMSPC];
00330 vector<realnum> tFluxLog[LIMSPC];
00331
00332 long ncont[LIMSPC];
00333
00336 double RSFCheck[LIMSPC];
00337
00340 bool lgContMalloc[LIMSPC];
00341
00344 double range[LIMSPC][2];
00345
00348 char chSpNorm[LIMSPC][5],
00349 chRSpec[LIMSPC][5],
00350 chSpType[LIMSPC][6];
00351
00353 realnum qhtot,
00354 qhe,
00355 qheii,
00356 qbal,
00357 qrad,
00358 qtot;
00359
00361 realnum uh;
00362
00364 realnum uheii;
00365
00367 bool lgUSphON;
00369 realnum rstrom;
00370
00373 bool lgHabing;
00374
00377 long int fine_opac_nelem;
00378
00380 long int fine_opac_nresolv;
00381
00383 realnum fine_opac_velocity_width;
00384
00387 realnum *trans_coef_zone;
00389 realnum *trans_coef_total;
00390
00393 long int *ipnt_coarse_2_fine;
00394
00396 realnum fine_ener_lo, fine_ener_hi;
00398 long nfine;
00400 long nfine_malloc;
00402 double fine_resol;
00404 realnum *fine_opac_zone;
00406 realnum *fine_opt_depth;
00408 realnum *fine_anu;
00409
00414 long int ipFineConVelShift;
00415
00417 bool lgOpacityFine;
00419 bool lgSaveOpacityFine;
00420
00423 bool lgLyaOTS;
00424
00427 bool lgHeIIOTS;
00428
00430 bool lgKillOutLine;
00431
00433 bool lgKillOutCont;
00434
00436 bool lgKillOTSLine;
00437
00441 bool lgPlasNu;
00443 realnum plsfrq,
00445 plsfrqmax;
00446
00447 long int nZonePlsFrqEval;
00449 long int ipPlasma,
00451 ipPlasmax;
00452
00455 bool lgMMok,
00456 lgHPhtOK,
00457 lgXRayOK,
00458 lgGamrOK;
00459
00461 realnum EnerGammaRay;
00462 long int ipEnerGammaRay;
00463
00465 bool lgHionRad;
00466
00468 realnum occmax,
00469 occmnu,
00470 tbrmax,
00471 tbrmnu,
00472 tbr4nu,
00473 occ1nu;
00474
00476 bool lgOcc1Hi;
00477
00480 realnum EnergyIncidCont ,
00481 EnergyDiffCont;
00482
00483
00484 t_rfield( )
00485 {
00486 nZonePlsFrqEval = -1;
00487
00488
00489 ExtinguishConvertColDen2OptDepth = (realnum)6.22e-18;
00490
00491 ExtinguishEnergyPowerLow = (realnum)-2.43;
00492
00493
00494 emm = 1.001e-8f;
00495 egamry = 7.354e6f;
00496
00497
00498 for( long i=0; i < LIMSPC; i++ )
00499 lgContMalloc[i] = false;
00500 }
00501
00502 } rfield;
00503
00504
00505 #endif