00001
00002
00003
00004 #include "cddefines.h"
00005 #include "taulines.h"
00006 #include "iso.h"
00007 #include "dense.h"
00008 #include "hydrogenic.h"
00009 #include "phycon.h"
00010 #include "rt.h"
00011
00012 void RT_stark(void)
00013 {
00014 long int ipLo,
00015 ipHi;
00016 double aa , ah,
00017 stark,
00018 strkla;
00019
00020 DEBUG_ENTRY( "RT_stark()" );
00021
00022 if( !rt.lgStarkON || dense.eden < 1e8 )
00023 {
00024 for( ipHi=0; ipHi < iso.numLevels_max[ipH_LIKE][ipHYDROGEN]; ipHi++ )
00025 {
00026 for( ipLo=0; ipLo < iso.numLevels_max[ipH_LIKE][ipHYDROGEN]; ipLo++ )
00027 {
00028 hydro.pestrk[ipHi][ipLo] = 0.;
00029 hydro.pestrk[ipLo][ipHi] = 0.;
00030 }
00031 }
00032
00033 DEBUG_EXIT( "RT_stark()" );
00034 return;
00035 }
00036
00037
00038
00039
00040
00041
00042 ah = 6.9e-6*1000./1e12/(phycon.sqrte*phycon.te10*phycon.te10*
00043 phycon.te03*phycon.te01*phycon.te01)*dense.eden;
00044
00045
00046 stark = 0.264*pow(ah,0.4);
00047
00048
00049 strkla = 0.538*ah*4.*9.875*(phycon.sqrte/phycon.te10/phycon.te03);
00050
00051
00052
00053
00054
00055
00056 aa = (float)SDIV(EmisLines[ipH_LIKE][ipHYDROGEN][ipH2p][ipH1s].TauIn);
00057 aa = pow( aa ,-0.75);
00058 hydro.pestrk[ipH1s][ipH2p] = strkla/2.*MAX2(1.,aa);
00059
00064 hydro.pestrk[ipH1s][ipH2p] = MIN2(.01,hydro.pestrk[ipH1s][ipH2p]);
00065 hydro.pestrk[ipH1s][ipH2p] = 0.;
00066 hydro.pestrk[ipH2p][ipH1s] =
00067 hydro.pestrk[ipH1s][ipH2p]*EmisLines[ipH_LIKE][ipHYDROGEN][ipH2p][ipH1s].Aul;
00068
00069
00070
00071 for( ipHi=3; ipHi < iso.numLevels_local[ipH_LIKE][ipHYDROGEN]; ipHi++ )
00072 {
00073 hydro.pestrk[0][ipHi] = stark*hydro.strkar[0][ipHi]/2.*pow(MAX2(1.,
00074 EmisLines[ipH_LIKE][ipHYDROGEN][ipHi][ipH1s].TauIn),-0.75);
00075
00076 hydro.pestrk[0][ipHi] = MIN2(.01,hydro.pestrk[0][ipHi]);
00077 hydro.pestrk[ipHi][0] = EmisLines[ipH_LIKE][ipHYDROGEN][ipHi][ipH1s].Aul*
00078 hydro.pestrk[0][ipHi];
00079 }
00080
00081
00082 for( ipHi=iso.numLevels_local[ipH_LIKE][ipHYDROGEN]; ipHi < iso.numLevels_max[ipH_LIKE][ipHYDROGEN]; ipHi++ )
00083 {
00084 hydro.pestrk[0][ipHi] = 0.;
00085 hydro.pestrk[ipHi][0] = 0.;
00086 }
00087
00088
00089
00090 for( ipLo=ipH2s; ipLo < (iso.numLevels_local[ipH_LIKE][ipHYDROGEN] - 1); ipLo++ )
00091 {
00092 for( ipHi=ipLo + 1; ipHi < iso.numLevels_local[ipH_LIKE][ipHYDROGEN]; ipHi++ )
00093 {
00094 aa = stark*hydro.strkar[ipLo][ipHi]*
00095 pow(MAX2(1.,EmisLines[ipH_LIKE][ipHYDROGEN][ipHi][ipLo].TauIn),-0.75);
00096 hydro.pestrk[ipLo][ipHi] =
00097 (float)MIN2(.01,aa);
00098
00099 hydro.pestrk[ipHi][ipLo] = EmisLines[ipH_LIKE][ipHYDROGEN][ipHi][ipLo].Aul*
00100 hydro.pestrk[ipLo][ipHi];
00101 }
00102 }
00103
00104
00105 for( ipLo=(iso.numLevels_local[ipH_LIKE][ipHYDROGEN] - 1); ipLo<(iso.numLevels_max[ipH_LIKE][ipHYDROGEN] - 1); ipLo++ )
00106 {
00107 for( ipHi=ipLo + 1; ipHi < iso.numLevels_max[ipH_LIKE][ipHYDROGEN]; ipHi++ )
00108 {
00109 hydro.pestrk[ipLo][ipHi] = 0.;
00110 hydro.pestrk[ipHi][ipLo] = 0.;
00111 }
00112 }
00113
00114 DEBUG_EXIT( "RT_stark()" );
00115 return;
00116 }
00117