cloudy  trunk
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
rfield.h
Go to the documentation of this file.
1 /* This file is part of Cloudy and is copyright (C)1978-2017 by Gary J. Ferland and
2  * others. For conditions of distribution and use see copyright notice in license.txt */
3 
4 #ifndef RFIELD_H_
5 #define RFIELD_H_
6 
7 /* rfield.h */
8 #include "energy.h"
9 #include "module.h"
10 #include "mesh.h"
11 
13 const double WL_V_FILT = 5500.;
14 
16 const double WL_B_FILT = 4400.;
17 
20 const int LIMSPC = 100;
21 
23 void rfield_opac_zero( long lo , long ihi );
24 
26 extern bool lgRfieldMalloced;
27 
28 namespace Illuminate {
29  typedef enum { FORWARD , REVERSE , ISOTROPIC } IlluminationType ;
30 }
31 
32 struct t_rfield : public module, public t_mesh {
33  const char *chName() const
34  {
35  return "rfield";
36  }
37 
38  void zero();
39  void comment(t_warnings&) {}
48  long int nflux;
49 
51  long int nflux_with_check;
52 
55  long int nPositive;
56 
58  double FluxFaint;
59 
61  long int *line_count;
62 
65 
71 
74 
77 
80 
90 
95 
96  /* this is set true if H-ionizing radiation is blocked with extinguish
97  * command */
99 
102 
106 
108  bool lgCMB_set;
109 
113 
116 
120 
123 
126  double *ContBoltz;
127 
129  double *ContBoltzHelp1;
130  double *ContBoltzHelp2;
131 
133  double *vexp_arg;
134 
137  double *ContBoltzAvg;
138 
141  realnum **ConEmitLocal/* [depth][energy]*/;
142 
144  realnum **ConSourceFcnLocal/* [depth][energy]*/;
145 
148 
154 
157 
160 
163  double *SummedCon;
167 
173 
177 
180 
183  realnum
185  *otslin/*[rfield.nflux_with_check]*/,
187  *otscon/*[rfield.nflux_with_check]*/,
188  **otssav/*[rfield.nflux_with_check][2]*/;
189 
192  *outlin_noplot;
193 
196 
198  realnum **reflin/*[rfield.nflux_with_check]*/;
199 
203 
206 
210 
212  vector<string> chLineLabel/*[rfield.nflux_with_check][5]*/;
213 
215  vector<string> chContLabel/*[rfield.nflux_with_check][5]*/;
216 
219  char chDffTrns[4];
220 
224  bool lgOutOnly;
225 
230 
232  long int ipMaxBolt;
233 
236 
238  double *comup,
239  *comdn;
240 
242  long int ipB_filter , ipV_filter;
243 
247 
251 
254 
256  long int ip1000A;
257 
261 
265 
268 
272  *csigc;
273 
276 
277  double comtot,
278  cmheat,
279  cmcool,
280  cinrat;
282 
284  bool lgComUndr;
285 
286  double totpow[LIMSPC],
287  slope[LIMSPC],
288  cutoff[LIMSPC][3],
289  spfac[LIMSPC];
290 
293 
294  /* beamed or isotropic continuum? if isotropic then does not vary
295  * with time */
297 
301 
303 
308  long int nShape,
309  ipSpec;
310 
316  vector<Energy> tNu[LIMSPC];
317  vector<realnum> tslop[LIMSPC];
319  vector<realnum> tFluxLog[LIMSPC];
320 
321  long ncont[LIMSPC];
322 
325  double RSFCheck[LIMSPC];
326 
329  double range[LIMSPC][2];
330 
333  char chSpNorm[LIMSPC][5],
334  chRSpec[LIMSPC][5],
335  chSpType[LIMSPC][6],
336  chCumuType[5];
337 
340  qhe,
341  qheii,
342  qbal,
343  qrad,
344  qtot;
345 
348 
351 
353  bool lgUSphON;
356 
359  bool lgHabing;
360 
363  long int fine_opac_nelem;
364 
367 
370 
371 private:
374 
375 public:
377 
381 
385  long nfine;
387  double fine_resol;
394 
400 
405 
408  bool lgLyaOTS;
409 
412  bool lgHeIIOTS;
413 
416 
419 
422 
426  bool lgPlasNu;
430  plsfrqmax;
431  // the zone where the plasma frequency is evaluated
432  long int nZonePlsFrqEval;
434  long int ipPlasma,
436  ipPlasmax;
437 
440  bool lgMMok,
441  lgHPhtOK,
442  lgXRayOK,
443  lgGamrOK;
444 
447  long int ipEnerGammaRay;
448 
450  bool lgHionRad;
451 
454  occmnu,
455  tbrmax,
456  tbrmnu,
457  tbr4nu,
458  occ1nu;
459 
461  bool lgOcc1Hi;
462 
467 
468  // constructor
470  {
471  nZonePlsFrqEval = -1;
472 
473  // the constant that multiplies the column density to get optical depth at 1 Ryd
475  // the power on the energy for the extinction
477  }
478 
479  const realnum *getCoarseTransCoef();
480 
482  {
483  trans_coef_total = ptr;
484  }
486  {
487  for (long i=0; i<nflux_with_check; ++i)
488  trans_coef_total[i] = 1.0;
489  trans_coef_total_stale = true;
490  }
491  void setTrimming();
492 };
493 extern t_rfield rfield;
494 
506 double flux_correct_isotropic( const bool lgSaveIsotrp, const int nEmType, const int j );
507 
516 double flux_correct_isotropic( const int nEmType, const int j );
517 
518 #endif /* RFIELD_H_ */
realnum ** ConSourceFcnLocal
Definition: rfield.h:144
realnum * fine_opt_depth
Definition: rfield.h:391
realnum * fine_anu
Definition: rfield.h:393
realnum * csigh
Definition: rfield.h:271
long int * line_count
Definition: rfield.h:61
realnum * ConOTS_local_OTS_rate
Definition: rfield.h:170
bool lgBeamed[LIMSPC]
Definition: rfield.h:296
realnum * flux_isotropic
Definition: rfield.h:73
bool lgGamrOK
Definition: rfield.h:440
bool lgSaveOpacityFine
Definition: rfield.h:404
long int ipG0_spec_hi
Definition: rfield.h:253
long int fine_opac_nresolv
Definition: rfield.h:366
const char * chName() const
Definition: rfield.h:33
double comtot
Definition: rfield.h:277
double opac_mag_B_extended
Definition: rfield.h:267
realnum qtot
Definition: rfield.h:339
realnum EnerGammaRay
Definition: rfield.h:446
long int ipG0_DB96_hi
Definition: rfield.h:250
bool lgKillOutLine
Definition: rfield.h:415
long int ipEnergyBremsThin
Definition: rfield.h:228
void setTrimming()
Definition: rfield.cpp:92
realnum qbal
Definition: rfield.h:339
realnum * flux_beam_const_save
Definition: rfield.h:202
double * ContBoltzAvg
Definition: rfield.h:137
realnum ** flux
Definition: rfield.h:70
realnum * DiffuseLineEmission
Definition: rfield.h:195
const double WL_V_FILT
Definition: rfield.h:13
realnum occ1nu
Definition: rfield.h:453
vector< string > chContLabel
Definition: rfield.h:215
realnum * DiffuseEscape
Definition: rfield.h:176
realnum EnergyBremsThin
Definition: rfield.h:229
double opac_mag_V_point
Definition: rfield.h:267
double totpow[LIMSPC]
Definition: rfield.h:286
realnum * outlin_noplot
Definition: rfield.h:191
char chDffTrns[4]
Definition: rfield.h:219
char chRSpec[LIMSPC][5]
Definition: rfield.h:333
void rfield_opac_zero(long lo, long ihi)
realnum ** flux_total_incident
Definition: rfield.h:201
bool lgOcc1Hi
Definition: rfield.h:461
realnum fine_opac_velocity_width
Definition: rfield.h:369
long int ipG0_spec_lo
Definition: rfield.h:253
long int ipMaxBolt
Definition: rfield.h:232
realnum * OccNumbContEmitOut
Definition: rfield.h:64
bool lgOpacityFine
Definition: rfield.h:402
realnum qhe
Definition: rfield.h:339
long int ipG0_TH85_hi
Definition: rfield.h:246
double * SummedCon
Definition: rfield.h:163
long int nZonePlsFrqEval
Definition: rfield.h:432
bool lgKillOutCont
Definition: rfield.h:418
double RSFCheck[LIMSPC]
Definition: rfield.h:325
realnum * SummedOcc
Definition: rfield.h:165
bool lgIonizReevaluate
Definition: rfield.h:112
vector< Energy > tNu[LIMSPC]
Definition: rfield.h:316
vector< realnum > tFluxLog[LIMSPC]
Definition: rfield.h:319
bool lgKillOTSLine
Definition: rfield.h:421
void comment(t_warnings &)
Definition: rfield.h:39
long int ipEnerGammaRay
Definition: rfield.h:447
realnum ** outlin
Definition: rfield.h:191
long ncont[LIMSPC]
Definition: rfield.h:321
long int ipG0_TH85_lo
Definition: rfield.h:246
double spfac[LIMSPC]
Definition: rfield.h:286
vector< realnum > tslop[LIMSPC]
Definition: rfield.h:317
realnum * ConOTS_local_photons
Definition: rfield.h:170
realnum time_continuum_scale
Definition: rfield.h:205
realnum * flux_accum
Definition: rfield.h:79
bool lgHeIIOTS
Definition: rfield.h:412
IlluminationType
Definition: rfield.h:29
realnum ExtinguishEnergyPowerLow
Definition: rfield.h:83
double cutoff[LIMSPC][3]
Definition: rfield.h:286
bool lgTimeVary[LIMSPC]
Definition: rfield.h:292
void resetCoarseTransCoef()
Definition: rfield.h:485
double * comup
Definition: rfield.h:238
double range[LIMSPC][2]
Definition: rfield.h:329
bool lgHabing
Definition: rfield.h:359
const int LIMSPC
Definition: rfield.h:20
long int nflux_with_check
Definition: rfield.h:51
realnum ExtinguishConvertColDen2OptDepth
Definition: rfield.h:83
realnum EnergyIncidCont
Definition: rfield.h:465
const realnum * getCoarseTransCoef()
Definition: rfield.cpp:56
long int fine_opac_nelem
Definition: rfield.h:363
realnum * otslin
Definition: rfield.h:185
realnum ExtinguishLeakage
Definition: rfield.h:83
long int ipG0_DB96_lo
Definition: rfield.h:250
realnum ** ConEmitLocal
Definition: rfield.h:141
double fine_resol
Definition: rfield.h:387
bool lgOutOnly
Definition: rfield.h:224
double slope[LIMSPC]
Definition: rfield.h:286
realnum tbrmax
Definition: rfield.h:453
bool lgHPhtOK
Definition: rfield.h:440
long int ipPlasma
Definition: rfield.h:434
bool lgCMB_set
Definition: rfield.h:108
Definition: mesh.h:10
bool trans_coef_total_stale
Definition: rfield.h:376
bool lgLyaOTS
Definition: rfield.h:408
realnum qhtot
Definition: rfield.h:339
double cmcool
Definition: rfield.h:277
t_rfield rfield
Definition: rfield.cpp:9
realnum * flux_time_beam_save
Definition: rfield.h:202
realnum * convoc
Definition: rfield.h:115
realnum * ConInterOut
Definition: rfield.h:156
float realnum
Definition: cddefines.h:124
realnum uh
Definition: rfield.h:347
Illuminate::IlluminationType Illumination[LIMSPC]
Definition: rfield.h:302
double opac_mag_B_point
Definition: rfield.h:267
realnum uheii
Definition: rfield.h:350
long int ipFineConVelShift
Definition: rfield.h:399
double FluxFaint
Definition: rfield.h:58
realnum * otscon
Definition: rfield.h:185
double cmheat
Definition: rfield.h:277
double * ContBoltz
Definition: rfield.h:126
bool lgMustBlockHIon
Definition: rfield.h:94
realnum * OccNumbIncidCont
Definition: rfield.h:119
realnum rstrom
Definition: rfield.h:355
realnum * eeBremsDif
Definition: rfield.h:275
bool lgXRayOK
Definition: rfield.h:440
vector< string > chLineLabel
Definition: rfield.h:212
char chSpNorm[LIMSPC][5]
Definition: rfield.h:333
realnum ** reflin
Definition: rfield.h:198
realnum ** ConEmitOut
Definition: rfield.h:153
bool lgDoLineTrans
Definition: rfield.h:101
realnum * fine_opac_zone
Definition: rfield.h:389
double extin_mag_V_point
Definition: rfield.h:260
realnum fine_ener_lo
Definition: rfield.h:383
long int ipV_filter
Definition: rfield.h:242
realnum ** otssav
Definition: rfield.h:185
void zero()
Definition: rfield.cpp:11
realnum fine_ener_hi
Definition: rfield.h:383
bool lgOpacityReevaluate
Definition: rfield.h:105
realnum * SummedDifSave
Definition: rfield.h:166
double * ContBoltzHelp1
Definition: rfield.h:129
double extin_mag_B_point
Definition: rfield.h:260
double extin_mag_V_extended
Definition: rfield.h:264
const double WL_B_FILT
Definition: rfield.h:16
bool lgRfieldMalloced
Definition: cdinit.cpp:39
long nfine
Definition: rfield.h:385
double opac_mag_V_extended
Definition: rfield.h:267
realnum * flux_isotropic_save
Definition: rfield.h:202
realnum ExtinguishColumnDensity
Definition: rfield.h:83
realnum * OccNumbDiffCont
Definition: rfield.h:122
realnum qheii
Definition: rfield.h:339
double * comdn
Definition: rfield.h:238
realnum * csigc
Definition: rfield.h:271
bool lgHionRad
Definition: rfield.h:450
long int * ipnt_coarse_2_fine
Definition: rfield.h:380
bool lgMMok
Definition: rfield.h:440
long int ip1000A
Definition: rfield.h:256
double * ContBoltzHelp2
Definition: rfield.h:130
realnum EnergyDiffCont
Definition: rfield.h:465
double extin_mag_B_extended
Definition: rfield.h:264
void setCoarseTransCoefPtr(realnum *ptr)
Definition: rfield.h:481
realnum * ExtinguishFactor
Definition: rfield.h:82
bool lgInducProcess
Definition: rfield.h:235
realnum * SummedDif
Definition: rfield.h:164
realnum OpticalDepthScaleFactor[LIMSPC]
Definition: rfield.h:300
long int ipB_filter
Definition: rfield.h:242
long int ipPlasmax
Definition: rfield.h:434
realnum * trans_coef_total
Definition: rfield.h:373
realnum * TotDiff2Pht
Definition: rfield.h:179
long int nShape
Definition: rfield.h:308
long int ipSpec
Definition: rfield.h:308
t_rfield()
Definition: rfield.h:469
realnum occmnu
Definition: rfield.h:453
realnum DiffPumpOn
Definition: rfield.h:209
realnum ** ConEmitReflec
Definition: rfield.h:147
realnum * flux_beam_time
Definition: rfield.h:76
bool lgUSphON
Definition: rfield.h:353
double * vexp_arg
Definition: rfield.h:133
realnum * flux_beam_const
Definition: rfield.h:76
char chCumuType[5]
Definition: rfield.h:333
realnum plsfrqmax
Definition: rfield.h:428
realnum qrad
Definition: rfield.h:339
bool lgComUndr
Definition: rfield.h:284
realnum plsfrq
Definition: rfield.h:428
long int nflux
Definition: rfield.h:48
double flux_correct_isotropic(const bool lgSaveIsotr, const int nEmType, const int iflux)
Definition: rfield.cpp:112
Definition: module.h:26
bool lgPlasNu
Definition: rfield.h:426
bool lgBlockHIon
Definition: rfield.h:98
realnum ** ConRefIncid
Definition: rfield.h:159
long int nPositive
Definition: rfield.h:55
realnum tbr4nu
Definition: rfield.h:453
char chSpType[LIMSPC][6]
Definition: rfield.h:333
bool lgComptonOn
Definition: rfield.h:281
realnum ExtinguishLowEnergyLimit
Definition: rfield.h:83
realnum occmax
Definition: rfield.h:453
double cinrat
Definition: rfield.h:277
realnum tbrmnu
Definition: rfield.h:453