00001
00002
00003
00004
00005 #include "cddefines.h"
00006 #include "atmdat.h"
00007
00008 void atmdat_outer_shell(long int iz,
00009 long int in,
00010 long int *imax,
00011 long int *ig0,
00012 long int *ig1)
00013 {
00014 long int kg;
00015
00016 static long iss[30]={1,1,2,2,3,3,3,3,3,3,4,4,5,5,5,5,5,5,6,6,6,
00017 6,6,6,6,6,6,6,7,7};
00018
00019 static long igl[30]={2,1,2,1,2,1,4,5,4,1,2,1,2,1,4,5,4,1,4,5,4,
00020 1,6,9,10,9,6,1,2,1};
00021
00022 static long iga[12]={2,1,4,5,4,7,6,9,10,9,2,1};
00023
00024 DEBUG_ENTRY( "atmdat_outer_shell()" );
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034 if( iz < 1 || iz > 30 )
00035 {
00036 fprintf( ioQQQ, " ***ERROR: wrong atomic number\n" );
00037
00038 DEBUG_EXIT( "atmdat_outer_shell()" );
00039 return;
00040 }
00041
00042 if( in < 1 || in > iz )
00043 {
00044 fprintf( ioQQQ, " ***ERROR: wrong number of electrons\n" );
00045
00046 DEBUG_EXIT( "atmdat_outer_shell()" );
00047 return;
00048 }
00049
00050
00051 *imax = iss[in-1];
00052 *ig0 = igl[in-1];
00053
00054
00055 if( in == 1 )
00056 {
00057 *ig1 = 1;
00058 }
00059
00060 else if( in > 1 )
00061 {
00062 *ig1 = igl[in-2];
00063 }
00064
00065 else
00066 {
00067
00068 fprintf( ioQQQ, " ***ERROR: in insaniy in atmdat_outer_shell\n" );
00069
00070 DEBUG_EXIT( "atmdat_outer_shell()" );
00071 return;
00072 }
00073
00074 if( in > 18 && iz == in )
00075 {
00076 *imax = 7;
00077 kg = iz - 18;
00078 *ig0 = iga[kg-1];
00079 if( iz == 20 )
00080 *ig1 = 2;
00081 if( iz == 21 )
00082 *ig1 = 3;
00083 if( iz == 22 )
00084 *ig1 = 4;
00085 if( iz == 25 )
00086 *ig1 = 7;
00087 if( iz == 26 )
00088 *ig1 = 10;
00089 if( iz == 30 )
00090 *ig1 = 2;
00091 }
00092
00093 if( in > 18 && (iz - in) == 1 )
00094 {
00095 if( iz == 20 )
00096 {
00097 *imax = 7;
00098 *ig0 = 2;
00099 }
00100
00101 if( iz == 21 )
00102 {
00103 *imax = 7;
00104 *ig0 = 3;
00105 }
00106
00107 if( iz == 22 )
00108 {
00109 *imax = 7;
00110 *ig0 = 4;
00111 }
00112
00113 if( iz == 25 )
00114 {
00115 *imax = 7;
00116 *ig0 = 7;
00117 }
00118
00119 if( iz == 26 )
00120 {
00121 *imax = 7;
00122 *ig0 = 10;
00123 }
00124
00125 if( iz == 30 )
00126 {
00127 *imax = 7;
00128 *ig0 = 2;
00129 }
00130
00131 }
00132
00133
00134 DEBUG_EXIT( "atmdat_outer_shell()" );
00135 return;
00136 }
00137