cloudy  trunk
rt_line_one_tau_reset.cpp
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 /*RT_line_one_tau_reset computes average of old and new optical depths for new scale at end of iter,
4  * called by update, also FeIILevelPops */
5 #include "cddefines.h"
6 #include "opacity.h"
7 #include "geometry.h"
8 #include "transition.h"
9 #include "prt.h"
10 #include "rt.h"
11 
13 {
14  char chSave[11];
15 
16  DEBUG_ENTRY( "RT_line_one_tau_reset()" );
17 
18  if( t.ipCont() <= 0 )
19  {
20  return;
21  }
22 
23  /* option to print masing lines, set with print maser */
24  if( prt.lgPrtMaser &&
25  ( t.Emis().TauTot() < -0.01 || t.Emis().TauIn() < -0.01 ) )
26  {
27  strcpy( chSave, chLineLbl(t) );
28  fprintf( ioQQQ, " Masing line:%10.10s t(in, out)=%10.2e%10.2e\n",
29  chSave, t.Emis().TauIn(), t.Emis().TauTot() );
30  }
31 
32  realnum TauNext;
33 
34  /* lgStatic is false by default, set true with command sphere SPHERE STATIC */
36  {
37  /* static sphere, both sides interact */
38  TauNext = 2.f*t.Emis().TauIn();
39  }
40  else
41  {
42  /* end of iteration, the next estimate of total optical depth
43  * is now the inward optical depth - set T(ipLnTauTot) to T(1)
44  * DoubleTau normally 1, set to 2 by DoubleTau command in order
45  * to simulate two-sided photoionization */
46  TauNext = rt.DoubleTau*t.Emis().TauIn();
47  }
48 
49  /* iteration is 1 when this routine is called at end of first iteration
50  * estimate is bad when starting first iteration, so don't track that one */
51  if( iteration > 1 )
52  TauNext = t.Emis().TauTrack().next_val( t.Emis().TauTot(), TauNext );
53 
55  t.Emis().TauIn() = TauNext/2.f;
56  else
57  t.Emis().TauIn() = min(opac.taumin,TauNext/2.f);
58 
59  t.Emis().TauTot() = TauNext;
60 
61  /* this is escape prob */
62  t.Emis().Pesc() = 0.5f*(1.f + 1.f/MAX2(1.f,t.Emis().TauTot()));
63 
64  /* this is fraction inward */
65  t.Emis().FracInwd() = MIN2(1.f,1.5f-t.Emis().Pesc());
66 
67  /* destruction probability */
68  t.Emis().Pdest() = 0.;
69  t.Emis().Pelec_esc() = 0.;
70 
71  /* optical depth to the continuum source */
72  t.Emis().TauCon() = opac.taumin;
73 
74  /* >>chng 01 sep 01, zero out some pops and energies */
75  (*t.Lo()).Pop() = 0.;
76  /* >>chng 97 jul 21, added following zero
77  * population of upper level */
78  (*t.Hi()).Pop() = 0.;
79  /* population of lower level with correction for stim emission */
80  t.Emis().PopOpc() = 0.;
81  /* following two heat exchange excitation, deexcitation */
82  t.Coll().cool() = 0.;
83  t.Coll().heat() = 0.;
84  /* intensity of line */
85  t.Emis().xIntensity() = 0.;
86  /* number of photons emitted in line */
87  t.Emis().phots() = 0.;
88  return;
89 }
EmissionProxy::TauCon
realnum & TauCon() const
Definition: emission.h:453
chLineLbl
char * chLineLbl(const TransitionProxy &t)
Definition: transition.cpp:237
CollisionProxy::cool
double & cool() const
Definition: collision.h:190
ioQQQ
FILE * ioQQQ
Definition: cddefines.cpp:7
geometry.h
EmissionProxy::xIntensity
double & xIntensity() const
Definition: emission.h:483
realnum
float realnum
Definition: cddefines.h:103
EmissionProxy::PopOpc
double & PopOpc() const
Definition: emission.h:603
EmissionProxy::Pdest
realnum & Pdest() const
Definition: emission.h:543
TransitionProxy::ipCont
long & ipCont() const
Definition: transition.h:450
t_geometry::lgStatic
bool lgStatic
Definition: geometry.h:54
TransitionProxy::Coll
CollisionProxy Coll() const
Definition: transition.h:424
opac
t_opac opac
Definition: opacity.cpp:5
EmissionProxy::TauIn
realnum & TauIn() const
Definition: emission.h:423
MIN2
#define MIN2
Definition: cddefines.h:761
TransitionProxy
Definition: transition.h:23
CollisionProxy::heat
double & heat() const
Definition: collision.h:194
transition.h
t_rt::DoubleTau
realnum DoubleTau
Definition: rt.h:247
TransitionProxy::Emis
EmissionList::reference Emis() const
Definition: transition.h:408
t_prt::lgPrtMaser
bool lgPrtMaser
Definition: prt.h:127
TransitionProxy::Lo
qList::iterator Lo() const
Definition: transition.h:392
EmissionProxy::phots
double & phots() const
Definition: emission.h:503
prt
t_prt prt
Definition: prt.cpp:10
cddefines.h
TransitionProxy::Hi
qList::iterator Hi() const
Definition: transition.h:396
t_geometry::lgSphere
bool lgSphere
Definition: geometry.h:24
EmissionProxy::TauTrack
iter_track_basic< realnum > & TauTrack() const
Definition: emission.h:443
MAX2
#define MAX2
Definition: cddefines.h:782
iteration
long int iteration
Definition: cddefines.cpp:16
prt.h
EmissionProxy::Pelec_esc
realnum & Pelec_esc() const
Definition: emission.h:533
rt.h
min
long min(int a, long b)
Definition: cddefines.h:723
EmissionProxy::Pesc
realnum & Pesc() const
Definition: emission.h:523
rt
t_rt rt
Definition: rt.cpp:5
RT_line_one_tau_reset
void RT_line_one_tau_reset(const TransitionProxy &t)
Definition: rt_line_one_tau_reset.cpp:12
geometry
t_geometry geometry
Definition: geometry.cpp:5
EmissionProxy::TauTot
realnum & TauTot() const
Definition: emission.h:433
opacity.h
EmissionProxy::FracInwd
realnum & FracInwd() const
Definition: emission.h:463
t_opac::taumin
realnum taumin
Definition: opacity.h:154
DEBUG_ENTRY
#define DEBUG_ENTRY(funcname)
Definition: cddefines.h:684