| 1 | |
|---|
| 2 | |
|---|
| 3 | |
|---|
| 4 | |
|---|
| 5 | #include "cddefines.h" |
|---|
| 6 | #include "atmdat.h" |
|---|
| 7 | |
|---|
| 8 | void atmdat_outer_shell(long int iz, |
|---|
| 9 | long int in, |
|---|
| 10 | long int *imax, |
|---|
| 11 | long int *ig0, |
|---|
| 12 | long int *ig1) |
|---|
| 13 | { |
|---|
| 14 | long int kg; |
|---|
| 15 | |
|---|
| 16 | 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, |
|---|
| 17 | 6,6,6,6,6,6,6,7,7}; |
|---|
| 18 | |
|---|
| 19 | 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, |
|---|
| 20 | 1,6,9,10,9,6,1,2,1}; |
|---|
| 21 | |
|---|
| 22 | static long iga[12]={2,1,4,5,4,7,6,9,10,9,2,1}; |
|---|
| 23 | |
|---|
| 24 | DEBUG_ENTRY( "atmdat_outer_shell()" ); |
|---|
| 25 | |
|---|
| 26 | |
|---|
| 27 | |
|---|
| 28 | |
|---|
| 29 | |
|---|
| 30 | |
|---|
| 31 | |
|---|
| 32 | |
|---|
| 33 | |
|---|
| 34 | if( iz < 1 || iz > 30 ) |
|---|
| 35 | { |
|---|
| 36 | fprintf( ioQQQ, " ***ERROR: wrong atomic number\n" ); |
|---|
| 37 | return; |
|---|
| 38 | } |
|---|
| 39 | |
|---|
| 40 | if( in < 1 || in > iz ) |
|---|
| 41 | { |
|---|
| 42 | fprintf( ioQQQ, " ***ERROR: wrong number of electrons\n" ); |
|---|
| 43 | return; |
|---|
| 44 | } |
|---|
| 45 | |
|---|
| 46 | |
|---|
| 47 | *imax = iss[in-1]; |
|---|
| 48 | *ig0 = igl[in-1]; |
|---|
| 49 | |
|---|
| 50 | |
|---|
| 51 | if( in == 1 ) |
|---|
| 52 | { |
|---|
| 53 | *ig1 = 1; |
|---|
| 54 | } |
|---|
| 55 | |
|---|
| 56 | else if( in > 1 ) |
|---|
| 57 | { |
|---|
| 58 | *ig1 = igl[in-2]; |
|---|
| 59 | } |
|---|
| 60 | |
|---|
| 61 | else |
|---|
| 62 | { |
|---|
| 63 | |
|---|
| 64 | fprintf( ioQQQ, " ***ERROR: in insaniy in atmdat_outer_shell\n" ); |
|---|
| 65 | return; |
|---|
| 66 | } |
|---|
| 67 | |
|---|
| 68 | if( in > 18 && iz == in ) |
|---|
| 69 | { |
|---|
| 70 | *imax = 7; |
|---|
| 71 | kg = iz - 18; |
|---|
| 72 | *ig0 = iga[kg-1]; |
|---|
| 73 | if( iz == 20 ) |
|---|
| 74 | *ig1 = 2; |
|---|
| 75 | if( iz == 21 ) |
|---|
| 76 | *ig1 = 3; |
|---|
| 77 | if( iz == 22 ) |
|---|
| 78 | *ig1 = 4; |
|---|
| 79 | if( iz == 25 ) |
|---|
| 80 | *ig1 = 7; |
|---|
| 81 | if( iz == 26 ) |
|---|
| 82 | *ig1 = 10; |
|---|
| 83 | if( iz == 30 ) |
|---|
| 84 | *ig1 = 2; |
|---|
| 85 | } |
|---|
| 86 | |
|---|
| 87 | if( in > 18 && (iz - in) == 1 ) |
|---|
| 88 | { |
|---|
| 89 | if( iz == 20 ) |
|---|
| 90 | { |
|---|
| 91 | *imax = 7; |
|---|
| 92 | *ig0 = 2; |
|---|
| 93 | } |
|---|
| 94 | |
|---|
| 95 | if( iz == 21 ) |
|---|
| 96 | { |
|---|
| 97 | *imax = 7; |
|---|
| 98 | *ig0 = 3; |
|---|
| 99 | } |
|---|
| 100 | |
|---|
| 101 | if( iz == 22 ) |
|---|
| 102 | { |
|---|
| 103 | *imax = 7; |
|---|
| 104 | *ig0 = 4; |
|---|
| 105 | } |
|---|
| 106 | |
|---|
| 107 | if( iz == 25 ) |
|---|
| 108 | { |
|---|
| 109 | *imax = 7; |
|---|
| 110 | *ig0 = 7; |
|---|
| 111 | } |
|---|
| 112 | |
|---|
| 113 | if( iz == 26 ) |
|---|
| 114 | { |
|---|
| 115 | *imax = 7; |
|---|
| 116 | *ig0 = 10; |
|---|
| 117 | } |
|---|
| 118 | |
|---|
| 119 | if( iz == 30 ) |
|---|
| 120 | { |
|---|
| 121 | *imax = 7; |
|---|
| 122 | *ig0 = 2; |
|---|
| 123 | } |
|---|
| 124 | |
|---|
| 125 | } |
|---|
| 126 | |
|---|
| 127 | return; |
|---|
| 128 | } |
|---|