cloudy trunk
Loading...
Searching...
No Matches
emission.h
Go to the documentation of this file.
1/* This file is part of Cloudy and is copyright (C)1978-2013 by Gary J. Ferland and
2 * others. For conditions of distribution and use see copyright notice in license.txt */
3
4#ifndef EMISSION_H_
5#define EMISSION_H_
6
7#include "proxy_iterator.h"
8
10class TransitionProxy;
12class EmissionList;
15{
16public:
20private:
24public:
25 explicit EmissionProxy() : m_list(NULL), m_index(-1) {}
26 explicit EmissionProxy(EmissionList *list, int index) :
27 m_list(list), m_index(index) {}
28 void copy(const EmissionProxy& other);
29
30 void check() const
31 {
32 ASSERT(ipTran() >= 0);
33 }
34
36
43 int &iRedisFun() const;
44
46 long int &ipFine() const;
47
51
61 realnum &TauIn() const;
62
73 realnum &TauTot() const;
74
80
86 realnum &TauCon() const;
87
89 realnum &FracInwd() const;
90
93 double &pump() const;
94
96 double &xIntensity() const;
97
99 double &phots() const;
100
102 realnum &gf() const;
103
105 realnum &Pesc() const;
106
108 realnum &Pelec_esc() const;
109
111 realnum &Pdest() const;
112
114 realnum Pesc_total() const { return Pesc() + Pelec_esc(); }
115
119 realnum &dampXvel() const;
120
122 realnum &damp() const;
123
125 double &ColOvTot() const;
126
128 realnum &AutoIonizFrac() const;
129
135 realnum &opacity() const;
136
138 double &PopOpc() const;
139
141 realnum &Aul() const;
142
144 double &ots() const;
145
146 int &ipTran() const;
147
148 TransitionProxy Tran() const;
149};
151{
152public:
153 typedef const EmissionList list_type;
156private:
160public:
161 explicit EmissionConstProxy() : m_list(NULL), m_index(-1) {}
162 explicit EmissionConstProxy(const EmissionList *list, int index) :
163 m_list(list), m_index(index) {}
164 void copy(const EmissionConstProxy& other);
165
166 void check() const
167 {
168 ASSERT(ipTran() >= 0);
169 }
170
172
179 int iRedisFun() const;
180
182 long int ipFine() const;
183
187
197 realnum TauIn() const;
198
209 realnum TauTot() const;
210
215 const iter_track_basic<realnum>& TauTrack() const;
216
222 realnum TauCon() const;
223
225 realnum FracInwd() const;
226
229 double pump() const;
230
232 double xIntensity() const;
233
235 double phots() const;
236
238 realnum gf() const;
239
241 realnum Pesc() const;
242
244 realnum Pelec_esc() const;
245
247 realnum Pdest() const;
248
250 realnum Pesc_total() const { return Pesc() + Pelec_esc(); }
251
255 realnum dampXvel() const;
256
258 realnum damp() const;
259
261 double ColOvTot() const;
262
264 realnum AutoIonizFrac() const;
265
271 realnum opacity() const;
272
274 double PopOpc() const;
275
277 realnum Aul() const;
278
280 double ots() const;
281
282 int ipTran() const;
283
285};
286
288{
290 vector<realnum> m_Aul;
291 vector<realnum> m_AutoIonizFrac;
292 vector<double> m_ColOvTot;
293 vector<realnum> m_damp;
294 vector<realnum> m_dampXvel;
295 vector<realnum> m_FracInwd;
296 vector<realnum> m_gf;
297 vector<int> m_iRedisFun;
298 vector<long> m_ipFine;
299 vector<realnum> m_opacity;
300 vector<double> m_ots;
301 vector<realnum> m_Pdest;
302 vector<realnum> m_Pesc;
303 vector<realnum> m_Pelec_esc;
304 vector<double> m_phots;
305 vector<double> m_PopOpc;
306 vector<double> m_pump;
307 vector<realnum> m_TauCon;
308 vector<realnum> m_TauIn;
309 vector<realnum> m_TauTot;
310 vector<iter_track_basic<realnum> > m_TauTrack;
311 vector<double> m_xIntensity;
312 vector<int> m_ipTran;
313 friend class EmissionProxy;
314 friend class EmissionConstProxy;
315public:
319 explicit EmissionList(TransitionListImpl *tlist, size_t i) : m_tlist(tlist)
320 {
321 resize(i);
322 }
323 explicit EmissionList(TransitionListImpl *tlist) : m_tlist(tlist) {}
325 {
326 return EmissionProxy(this,i);
327 }
328 size_t size(void) const
329 {
330 return m_Aul.size();
331 }
332 void resize(size_t i);
334 {
335 return iterator(this,0);
336 }
338 {
339 return const_iterator(this,0);
340 }
342 {
343 return iterator(this,size());
344 }
346 {
347 return const_iterator(this,size());
348 }
349};
350
364
365inline void EmissionList::resize(size_t i)
366{
367 size_t oldsize = m_Aul.size();
368 m_Aul.resize(i);
369 m_AutoIonizFrac.resize(i);
370 m_ColOvTot.resize(i);
371 m_damp.resize(i);
372 m_dampXvel.resize(i);
373 m_gf.resize(i);
374 m_FracInwd.resize(i);
375 m_ipFine.resize(i);
376 m_iRedisFun.resize(i);
377 m_ots.resize(i);
378 m_opacity.resize(i);
379 m_Pdest.resize(i);
380 m_Pelec_esc.resize(i);
381 m_Pesc.resize(i);
382 m_phots.resize(i);
383 m_PopOpc.resize(i);
384 m_TauCon.resize(i);
385 m_TauIn.resize(i);
386 m_TauTot.resize(i);
387 m_TauTrack.resize(i);
388 m_pump.resize(i);
389 m_xIntensity.resize(i);
390 m_ipTran.resize(i,-1);
391 for (size_t newelem=oldsize; newelem < size(); ++newelem)
392 {
393 EmLineJunk((*this)[newelem]);
394 /*
395 \todo 2 Does doing EmLineZero here defeat the purpose of EmLineJunk?
396 * maybe we should pass full set of Emis components, fill everything in
397 * here, and THEN use EmLineZero? */
398 EmLineZero((*this)[newelem]);
399 TauZero((*this)[newelem]);
400 }
401}
402
403inline int &EmissionProxy::iRedisFun() const
404{
405 return m_list->m_iRedisFun[m_index];
406}
407
409{
410 return m_list->m_iRedisFun[m_index];
411}
412
413inline long int &EmissionProxy::ipFine() const
414{
415 return m_list->m_ipFine[m_index];
416}
417
418inline long int EmissionConstProxy::ipFine() const
419{
420 return m_list->m_ipFine[m_index];
421}
422
424{
425 return m_list->m_TauIn[m_index];
426}
427
429{
430 return m_list->m_TauIn[m_index];
431}
432
434{
435 return m_list->m_TauTot[m_index];
436}
437
439{
440 return m_list->m_TauTot[m_index];
441}
442
444{
445 return m_list->m_TauTrack[m_index];
446}
447
449{
450 return m_list->m_TauTrack[m_index];
451}
452
454{
455 return m_list->m_TauCon[m_index];
456}
457
459{
460 return m_list->m_TauCon[m_index];
461}
462
464{
465 return m_list->m_FracInwd[m_index];
466}
467
469{
470 return m_list->m_FracInwd[m_index];
471}
472
473inline double &EmissionProxy::pump() const
474{
475 return m_list->m_pump[m_index];
476}
477
478inline double EmissionConstProxy::pump() const
479{
480 return m_list->m_pump[m_index];
481}
482
483inline double &EmissionProxy::xIntensity() const
484{
485 return m_list->m_xIntensity[m_index];
486}
487
489{
490 return m_list->m_xIntensity[m_index];
491}
492
493inline int &EmissionProxy::ipTran() const
494{
495 return m_list->m_ipTran[m_index];
496}
497
499{
500 return m_list->m_ipTran[m_index];
501}
502
503inline double &EmissionProxy::phots() const
504{
505 return m_list->m_phots[m_index];
506}
507
508inline double EmissionConstProxy::phots() const
509{
510 return m_list->m_phots[m_index];
511}
512
514{
515 return m_list->m_gf[m_index];
516}
517
519{
520 return m_list->m_gf[m_index];
521}
522
524{
525 return m_list->m_Pesc[m_index];
526}
527
529{
530 return m_list->m_Pesc[m_index];
531}
532
534{
535 return m_list->m_Pelec_esc[m_index];
536}
537
539{
540 return m_list->m_Pelec_esc[m_index];
541}
542
544{
545 return m_list->m_Pdest[m_index];
546}
547
549{
550 return m_list->m_Pdest[m_index];
551}
552
554{
555 return m_list->m_dampXvel[m_index];
556}
557
559{
560 return m_list->m_dampXvel[m_index];
561}
562
564{
565 return m_list->m_damp[m_index];
566}
567
569{
570 return m_list->m_damp[m_index];
571}
572
573inline double &EmissionProxy::ColOvTot() const
574{
575 return m_list->m_ColOvTot[m_index];
576}
577
578inline double EmissionConstProxy::ColOvTot() const
579{
580 return m_list->m_ColOvTot[m_index];
581}
582
584{
585 return m_list->m_AutoIonizFrac[m_index];
586}
587
589{
590 return m_list->m_AutoIonizFrac[m_index];
591}
592
594{
595 return m_list->m_opacity[m_index];
596}
597
599{
600 return m_list->m_opacity[m_index];
601}
602
603inline double &EmissionProxy::PopOpc() const
604{
605 return m_list->m_PopOpc[m_index];
606}
607
608inline double EmissionConstProxy::PopOpc() const
609{
610 return m_list->m_PopOpc[m_index];
611}
612
614{
615 return m_list->m_Aul[m_index];
616}
617
619{
620 return m_list->m_Aul[m_index];
621}
622
623inline double &EmissionProxy::ots() const
624{
625 return m_list->m_ots[m_index];
626}
627
628inline double EmissionConstProxy::ots() const
629{
630 return m_list->m_ots[m_index];
631}
632
633inline void EmissionProxy::copy(const EmissionProxy& other)
634{
635 iRedisFun() = other.iRedisFun();
636 ipFine() = other.ipFine();
637 TauIn() = other.TauIn();
638 TauTot() = other.TauTot();
639 TauCon() = other.TauCon();
640 FracInwd() = other.FracInwd();
641 gf() = other.gf();
642 Pesc() = other.Pesc();
643 Pelec_esc() = other.Pelec_esc();
644 Pdest() = other.Pdest();
645 dampXvel() = other.dampXvel();
646 damp() = other.damp();
647 AutoIonizFrac() = other.AutoIonizFrac();
648 opacity() = other.opacity();
649 Aul() = other.Aul();
650 TauTrack() = other.TauTrack();
651 pump() = other.pump();
652 xIntensity() = other.xIntensity();
653 phots() = other.phots();
654 ColOvTot() = other.ColOvTot();
655 PopOpc() = other.PopOpc();
656 ots() = other.ots();
657 ipTran() = other.ipTran();
658}
659
660#endif // EMISSION_H_
#define ASSERT(exp)
Definition cddefines.h:578
float realnum
Definition cddefines.h:103
realnum gf() const
Definition emission.h:518
realnum Pesc_total() const
Definition emission.h:250
const iter_track_basic< realnum > & TauTrack() const
Definition emission.h:448
realnum TauIn() const
Definition emission.h:428
realnum TauTot() const
Definition emission.h:438
double phots() const
Definition emission.h:508
const EmissionList * m_list
Definition emission.h:158
long int ipFine() const
Definition emission.h:418
realnum Pesc() const
Definition emission.h:528
realnum FracInwd() const
Definition emission.h:468
double pump() const
Definition emission.h:478
int ipTran() const
Definition emission.h:498
void check() const
Definition emission.h:166
double xIntensity() const
Definition emission.h:488
ProxyIterator< EmissionConstProxy, EmissionConstProxy > const_iterator
Definition emission.h:155
realnum AutoIonizFrac() const
Definition emission.h:588
realnum Aul() const
Definition emission.h:618
realnum Pdest() const
Definition emission.h:548
void copy(const EmissionConstProxy &other)
double PopOpc() const
Definition emission.h:608
realnum Pelec_esc() const
Definition emission.h:538
ProxyIterator< EmissionConstProxy, EmissionConstProxy > iterator
Definition emission.h:154
EmissionConstProxy(const EmissionList *list, int index)
Definition emission.h:162
TransitionConstProxy Tran() const
Definition transition.h:481
realnum dampXvel() const
Definition emission.h:558
realnum opacity() const
Definition emission.h:598
double ots() const
Definition emission.h:628
int iRedisFun() const
Definition emission.h:408
realnum TauCon() const
Definition emission.h:458
double ColOvTot() const
Definition emission.h:578
realnum damp() const
Definition emission.h:568
const EmissionList list_type
Definition emission.h:153
EmissionList(TransitionListImpl *tlist, size_t i)
Definition emission.h:319
EmissionList(TransitionListImpl *tlist)
Definition emission.h:323
vector< realnum > m_Aul
Definition emission.h:290
vector< realnum > m_TauIn
Definition emission.h:308
vector< int > m_ipTran
Definition emission.h:312
size_t size(void) const
Definition emission.h:328
vector< realnum > m_damp
Definition emission.h:293
vector< realnum > m_dampXvel
Definition emission.h:294
vector< realnum > m_TauTot
Definition emission.h:309
const_iterator end() const
Definition emission.h:345
vector< int > m_iRedisFun
Definition emission.h:297
vector< realnum > m_AutoIonizFrac
Definition emission.h:291
EmissionProxy::iterator iterator
Definition emission.h:317
iterator begin()
Definition emission.h:333
vector< double > m_ots
Definition emission.h:300
EmissionConstProxy::iterator const_iterator
Definition emission.h:318
vector< double > m_PopOpc
Definition emission.h:305
TransitionListImpl * m_tlist
Definition emission.h:289
vector< double > m_xIntensity
Definition emission.h:311
iterator end()
Definition emission.h:341
reference operator[](size_t i)
Definition emission.h:324
friend class EmissionProxy
Definition emission.h:313
vector< double > m_phots
Definition emission.h:304
friend class EmissionConstProxy
Definition emission.h:314
EmissionProxy reference
Definition emission.h:316
vector< realnum > m_Pesc
Definition emission.h:302
vector< double > m_ColOvTot
Definition emission.h:292
vector< realnum > m_FracInwd
Definition emission.h:295
vector< realnum > m_Pdest
Definition emission.h:301
vector< long > m_ipFine
Definition emission.h:298
vector< realnum > m_TauCon
Definition emission.h:307
vector< realnum > m_gf
Definition emission.h:296
vector< realnum > m_opacity
Definition emission.h:299
vector< realnum > m_Pelec_esc
Definition emission.h:303
void resize(size_t i)
Definition emission.h:365
const_iterator begin() const
Definition emission.h:337
vector< iter_track_basic< realnum > > m_TauTrack
Definition emission.h:310
vector< double > m_pump
Definition emission.h:306
void copy(const EmissionProxy &other)
Definition emission.h:633
double & ColOvTot() const
Definition emission.h:573
realnum & damp() const
Definition emission.h:563
long int & ipFine() const
Definition emission.h:413
double & PopOpc() const
Definition emission.h:603
EmissionProxy(EmissionList *list, int index)
Definition emission.h:26
EmissionList list_type
Definition emission.h:17
realnum & TauCon() const
Definition emission.h:453
int & iRedisFun() const
Definition emission.h:403
TransitionProxy Tran() const
Definition transition.h:475
realnum & gf() const
Definition emission.h:513
realnum & AutoIonizFrac() const
Definition emission.h:583
double & ots() const
Definition emission.h:623
double & xIntensity() const
Definition emission.h:483
realnum & Pesc() const
Definition emission.h:523
realnum & Pelec_esc() const
Definition emission.h:533
realnum & Aul() const
Definition emission.h:613
void check() const
Definition emission.h:30
iter_track_basic< realnum > & TauTrack() const
Definition emission.h:443
realnum & TauIn() const
Definition emission.h:423
realnum & opacity() const
Definition emission.h:593
double & pump() const
Definition emission.h:473
ProxyIterator< EmissionProxy, EmissionConstProxy > iterator
Definition emission.h:18
realnum & FracInwd() const
Definition emission.h:463
ProxyIterator< EmissionConstProxy, EmissionConstProxy > const_iterator
Definition emission.h:19
EmissionList * m_list
Definition emission.h:22
realnum & Pdest() const
Definition emission.h:543
double & phots() const
Definition emission.h:503
realnum & TauTot() const
Definition emission.h:433
realnum & dampXvel() const
Definition emission.h:553
realnum Pesc_total() const
Definition emission.h:114
int & ipTran() const
Definition emission.h:493
void EmLineJunk(EmissionList::reference t)
Definition emission.cpp:12
void EmLineZero(EmissionList::reference t)
Definition emission.cpp:92
void TauZero(EmissionList::reference t)
Definition emission.cpp:73