24 int32 ipiv[4], nerror;
86 AbunxIon =
dense.xIonDense[(*t.
Hi()).nelem() -1][(*t.
Hi()).IonStg()-1];
99 if( AbunxIon <= 1e-20 || boltz > 30. )
102 (*t.
Lo()).Pop() = AbunxIon;
104 (*t.
Hi()).Pop() = 0.;
113 atoms.PopLevels[0] = AbunxIon;
114 atoms.PopLevels[1] = 0.;
115 atoms.PopLevels[2] = 0.;
116 atoms.PopLevels[3] = 0.;
117 atoms.DepLTELevels[0] = 1.;
118 atoms.DepLTELevels[1] = 0.;
119 atoms.DepLTELevels[2] = 0.;
120 atoms.DepLTELevels[3] = 0.;
145 c10 = cs1u*
dense.cdsqte/9.;
161 c21 = cs12*
dense.cdsqte/3.;
166 c31 = cs13*
dense.cdsqte/5.;
171 c32 = cs23*
dense.cdsqte/5.;
177 for( i=0; i <= 3; i++ )
190 zz[1][1] = r10 + r12 + r13;
197 zz[2][2] = r20 + r21 + r23;
204 zz[3][3] = r30 + r31 + r32;
207 for( j=0; j <= 3; j++ )
209 for( i=0; i <= 3; i++ )
211 amat[i][j] = zz[i][j];
213 bvec[j] = zz[3+1][j];
223 fprintf(
ioQQQ,
" AtomSeqBeryllium: dgetrs finds singular or ill-conditioned matrix\n" );
228 for( i=0; i <= 3; i++ )
230 zz[3+1][i] = bvec[i];
234 for( i=0; i <= 3; i++ )
236 atoms.PopLevels[i] = zz[4][i]*AbunxIon;
237 if(
atoms.PopLevels[i] < 0. )
244 fprintf(
ioQQQ,
" AtomSeqBeryllium finds non-positive pop,=" );
245 for( i=0; i <= 3; i++ )
249 fprintf(
ioQQQ,
"%s \n", chLab );
250 fprintf(
ioQQQ,
" te=%g total abund=%g boltz=%g \n",
251 phycon.te, AbunxIon, boltz );
256 atoms.DepLTELevels[0] = 1.;
267 (*t.
Lo()).Pop() = AbunxIon;
270 (*t.
Hi()).Pop() =
atoms.PopLevels[2];
287 Enr10 = (
atoms.PopLevels[1]*c10 +
atoms.PopLevels[2]*c20 +
void AtomSeqBeryllium(double cs12, double cs13, double cs23, const TransitionProxy &t, double a30)
#define DEBUG_ENTRY(funcname)
realnum & col_str() const
double & ColOvTot() const
double & xIntensity() const
realnum & Pelec_esc() const
CollisionProxy Coll() const
realnum EnergyErg() const
qList::iterator Lo() const
qList::iterator Hi() const
EmissionList::reference Emis() const
void CoolAdd(const char *chLabel, realnum lambda, double cool)
void getrs_wrapper(char trans, long N, long nrhs, double *A, long lda, int32 *ipiv, double *B, long ldb, int32 *info)
void getrf_wrapper(long M, long N, double *A, long lda, int32 *ipiv, int32 *info)
void chIonLbl(char *chIonLbl_v, const TransitionProxy &t)