587 const int NLFE4 = 12;
608 static const double Fe4A[NLFE4][NLFE4] = {
609 {0.,0.,0.,1.e-5,0.,1.368,.89,0.,1.3e-3,1.8e-4,.056,.028},
610 {0.,0.,2.6e-8,0.,0.,0.,0.,0.,1.7e-7,0.,0.,0.},
611 {0.,0.,0.,0.,3.5e-7,6.4e-10,0.,0.,6.315e-4,0.,6.7e-7,0.},
612 {0.,0.,0.,0.,1.1e-6,6.8e-5,8.6e-6,3.4e-10,7.6e-5,1.e-7,5.8e-4,2.8e-4},
613 {0.,0.,0.,0.,0.,1.5e-5,1.3e-9,0.,7.6e-4,0.,1.1e-6,6.0e-7},
614 {0.,0.,0.,0.,0.,0.,1.1e-5,1.2e-13,.038,9.9e-7,.022,.018},
615 {0.,0.,0.,0.,0.,0.,0.,3.7e-5,2.9e-6,.034,3.5e-3,.039},
616 {0.,0.,0.,0.,0.,0.,0.,0.,0.,.058,3.1e-6,1.4e-3},
617 {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,1.3e-4,3.1e-14},
618 {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,1.9e-19,1.0e-5},
619 {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,1.3e-7},
620 {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.}
623 static const double gfe4[NLFE4]={6.,12.,10.,6.,8.,6.,4.,2.,8.,2.,6.,4.};
630 static const double excit_wn[NLFE4]={0.,32245.5,32292.8,32301.2,32305.7,35253.8,
631 35333.3,35406.6,38779.4,38896.7,38935.1,38938.2};
646 for( i=0; i < NLFE4; ++i )
675 for( i=0; i < NLFE4; i++ )
677 atoms.PopLevels[i] = 0.;
678 atoms.DepLTELevels[i] = 1.;
699 for( i=0; i < NLFE4; i++ )
703 for( j=0; j < NLFE4; j++ )
713 for(
long ipHi=1; ipHi < NLFE4; ipHi++ )
715 for(
long ipLo=0; ipLo < ipHi; ipLo++ )
717 AulEscp[ipHi][ipLo] = Fe4A[ipLo][ipHi];
751 for( i=0; i < NLFE4; ++i )
759 fprintf(
ioQQQ,
" fe4levl2 found negative populations\n" );
770 fe.fe40401 = (
pops[3]*Fe4A[0][3]*(excit_wn[3] - excit_wn[0]) +
777 fe.fe42567 = (
pops[10]*Fe4A[0][10]*(excit_wn[10] - excit_wn[0]) +
816 static double gfe3[
NLFE3]={9.,7.,5.,3.,1.,5.,13.,11.,9.,3.,1.,9.,7.,5.};
822 static double excit_wn[
NLFE3]={
823 0.0 , 436.2, 738.9, 932.4, 1027.3,
824 19404.8, 20051.1, 20300.8, 20481.9, 20688.4,
825 21208.5, 21462.2, 21699.9, 21857.2 };
837 destroy = ((
double *)
MALLOC((
NLFE3)*
sizeof(
double)));
838 create = ((
double *)
MALLOC((
NLFE3)*
sizeof(
double)));
841 fe.Fe3_emiss = ((
double **)
MALLOC((
NLFE3)*
sizeof(
double *)));
842 AulNet = ((
double **)
MALLOC((
NLFE3)*
sizeof(
double *)));
847 for( i=0; i <
NLFE3; ++i )
850 fe.Fe3_emiss[i] = ((
double *)
MALLOC((
NLFE3)*
sizeof(
double )));
851 AulNet[i] = ((
double *)
MALLOC((
NLFE3)*
sizeof(
double )));
859 for( i=0; i <
NLFE3; ++i )
863 for( j=0; j <
NLFE3; ++j )
870 fe.Fe3_wl[i][j] = 0.;
871 fe.Fe3_emiss[i][j] = 0.;
876 for( ihi=1; ihi <
NLFE3; ++ihi )
878 for( ilo=0; ilo < ihi; ++ilo )
880 fe.Fe3_wl[ihi][ilo] = 1e8/(excit_wn[ihi]-excit_wn[ilo]) /
881 RefIndex( (excit_wn[ihi]-excit_wn[ilo]) );
887 AulNet[1][0] = 2.8e-3;
888 AulNet[7][0] = 4.9e-6;
889 AulNet[8][0] = 5.7e-3;
890 AulNet[11][0] = 4.5e-1;
891 AulNet[12][0] = 4.2e-2;
893 AulNet[2][1] = 1.8e-3;
894 AulNet[5][1] = 4.2e-1;
895 AulNet[8][1] = 1.0e-3;
896 AulNet[11][1] = 8.4e-2;
897 AulNet[12][1] = 2.5e-1;
898 AulNet[13][1] = 2.7e-2;
900 AulNet[3][2] = 7.0e-4;
901 AulNet[5][2] = 5.1e-5;
902 AulNet[9][2] = 5.4e-1;
903 AulNet[12][2] = 8.5e-2;
904 AulNet[13][2] = 9.8e-2;
906 AulNet[4][3] = 1.4e-4;
907 AulNet[5][3] = 3.9e-2;
908 AulNet[9][3] = 4.1e-5;
909 AulNet[10][3] = 7.0e-1;
910 AulNet[13][3] = 4.7e-2;
912 AulNet[9][4] = 9.3e-2;
914 AulNet[9][5] = 4.7e-2;
915 AulNet[12][5] = 2.5e-6;
916 AulNet[13][5] = 1.7e-5;
918 AulNet[7][6] = 2.7e-4;
920 AulNet[8][7] = 1.2e-4;
921 AulNet[11][7] = 6.6e-4;
923 AulNet[11][8] = 1.6e-3;
924 AulNet[12][8] = 7.8e-4;
926 AulNet[10][9] = 8.4e-3;
927 AulNet[13][9] = 2.8e-7;
929 AulNet[12][11] = 3.0e-4;
931 AulNet[13][12] = 1.4e-4;
933 for(
int ipHi = 1; ipHi <
NLFE3; ipHi++)
935 for(
int ipLo = 0; ipLo < ipHi; ipLo++)
948 for( ihi=1; ihi <
NLFE3; ++ihi )
950 for( ilo=0; ilo < ihi; ++ilo )
952 fe.Fe3_emiss[ihi][ilo] = 0.;
958 for( i=0; i <
NLFE3; i++ )
960 atoms.PopLevels[i] = 0.;
961 atoms.DepLTELevels[i] = 1.;
1006 for( i=0; i <
NLFE3; ++i )
1014 fprintf(
ioQQQ,
" Fe3Lev14 found negative populations\n" );
1025 for( ihi=1; ihi <
NLFE3; ++ihi )
1027 for( ilo=0; ilo < ihi; ++ilo )
1030 fe.Fe3_emiss[ihi][ilo] =
pops[ihi]*AulNet[ihi][ilo]*(excit_wn[ihi] - excit_wn[ilo])*
T1CM*
BOLTZMANN;
1165 static const double Fe4CS[NLFE4][NLFE4] = {
1166 {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.},
1167 {0.98,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.},
1168 {0.8167,3.72,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.},
1169 {0.49,0.0475,0.330,0.,0.,0.,0.,0.,0.,0.,0.,0.},
1170 {0.6533,0.473,2.26,1.64,0.,0.,0.,0.,0.,0.,0.,0.},
1171 {0.45,0.686,0.446,0.106,0.254,0.,0.,0.,0.,0.,0.,0.},
1172 {0.30,0.392,0.152,0.269,0.199,0.605,0.,0.,0.,0.,0.,0.},
1173 {0.15,0.0207,0.190,0.0857,0.166,0.195,0.327,0.,0.,0.,0.,0.},
1174 {0.512,1.23,0.733,0.174,0.398,0.623,0.335,0.102,0.,0.,0.,0.},
1175 {0.128,0.0583,0.185,0.200,0.188,0.0835,0.127,0.0498,0.0787,0.,0.,0.},
1176 {0.384,0.578,0.534,0.363,0.417,0.396,0.210,0.171,0.810,0.101,0.,0.},
1177 {0.256,0.234,0.306,0.318,0.403,0.209,0.195,0.112,0.195,0.458,0.727,0.}
1181 double CollisionStrength = Fe4CS[ipHi][ipLo];
1182 ASSERT( CollisionStrength >0. );
1184 return( CollisionStrength );
void atom_levelN(long int nLevelCalled, realnum abund, const double g[], const double ex[], char chExUnits, double pops[], double depart[], double ***AulEscp, double ***col_str, double ***AulDest, double ***AulPump, double ***CollRate, const double source[], const double sink[], bool lgCollRateDone, double *cooltl, double *coolder, const char *chLabel, int *nNegPop, bool *lgZeroPop, bool lgDeBug, bool lgLTE, multi_arr< double, 2 > *Cool, multi_arr< double, 2 > *dCooldT)