00001
00002
00003
00004 #include "cddefines.h"
00005 #include "physconst.h"
00006 #include "iso.h"
00007 #include "dense.h"
00008 #include "taulines.h"
00009 #include "h2.h"
00010 #include "atomfeii.h"
00011 #include "rt.h"
00012
00013 double RT_line_driving(void)
00014 {
00015 long int i,
00016 ipHi,
00017 nelem,
00018 ipLo,
00019 ipISO;
00020
00021 double AllHeavy,
00022 AllRest,
00023 OneLine,
00024 fe2drive,
00025 forlin_v,
00026 h2drive,
00027 accel_iso[NISO];
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038 DEBUG_ENTRY( "RT_line_driving()" );
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052 for( ipISO=ipH_LIKE; ipISO<NISO; ++ipISO )
00053 {
00054 accel_iso[ipISO] = 0;
00055 for( nelem=ipISO; nelem < LIMELM; nelem++ )
00056 {
00057 if( (dense.IonHigh[nelem] >= nelem + 1-ipISO) )
00058 {
00059
00060
00061 for( ipLo=0; ipLo < (iso.numLevels_local[ipISO][nelem] - 2); ipLo++ )
00062 {
00063
00064
00065 for( ipHi=ipLo+1; ipHi < iso.numLevels_local[ipISO][nelem]; ipHi++ )
00066 {
00067
00068 if( EmisLines[ipISO][nelem][ipHi][ipLo].ipCont > 0 )
00069 {
00070 OneLine = EmisLines[ipISO][nelem][ipHi][ipLo].pump*
00071 EmisLines[ipISO][nelem][ipHi][ipLo].EnergyErg*
00072 EmisLines[ipISO][nelem][ipHi][ipLo].PopOpc*
00073 dense.xIonDense[nelem][nelem+1-ipISO];
00074
00075 accel_iso[ipISO] += OneLine;
00076 }
00077 }
00078 }
00079 }
00080 }
00081 accel_iso[ipISO] *= EN1RYD;
00082 }
00083
00084
00085
00086 AllHeavy = 0.;
00087 for( i=1; i <= nLevel1; i++ )
00088 {
00089 OneLine =
00090 TauLines[i].pump*
00091 TauLines[i].EnergyErg*
00092 TauLines[i].PopOpc;
00093 AllHeavy += OneLine;
00094 }
00095
00096
00097
00098 AllRest = 0.;
00099 for( i=0; i < nWindLine; i++ )
00100 {
00101 OneLine =
00102 TauLine2[i].pump*
00103 TauLine2[i].EnergyErg*
00104 TauLine2[i].PopOpc;
00105 AllRest += OneLine;
00106 }
00107 for( i=0; i < nUTA; i++ )
00108 {
00109 if( UTALines[i].Aul > 0. )
00110 {
00111 OneLine =
00112 UTALines[i].pump*
00113 UTALines[i].EnergyErg*
00114 UTALines[i].PopOpc;
00115 AllRest += OneLine;
00116 }
00117 }
00118 for( i=0; i < nHFLines; i++ )
00119 {
00120 OneLine =
00121 HFLines[i].pump*
00122 HFLines[i].EnergyErg*
00123 HFLines[i].PopOpc;
00124 AllRest += OneLine;
00125 }
00126 for( i=0; i < nCORotate; i++ )
00127 {
00128 OneLine =
00129 C12O16Rotate[i].pump*
00130 C12O16Rotate[i].EnergyErg*
00131 C12O16Rotate[i].PopOpc;
00132 AllRest += OneLine;
00133 OneLine =
00134 C13O16Rotate[i].pump*
00135 C13O16Rotate[i].EnergyErg*
00136 C13O16Rotate[i].PopOpc;
00137 AllRest += OneLine;
00138 }
00139
00140
00141 h2drive = H2_Accel();
00142
00143
00144 fe2drive = 0.;
00145 FeIIAccel(&fe2drive);
00146
00147
00148 forlin_v = AllHeavy + accel_iso[ipH_LIKE] + accel_iso[ipHE_LIKE] +
00149 fe2drive + h2drive + AllRest;
00150
00151
00152
00153
00154
00155 DEBUG_EXIT( "RT_line_driving()" );
00156 return( forlin_v );
00157 }
00158