Advertisement
Guest User

Untitled

a guest
Oct 17th, 2017
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. module sph_int
  2. CONTAINS
  3. function sph_igr(l1,m1,l2,m2,l3,m3,n1,n2) result(igr)
  4.   integer, private :: l1,m1,l2,m2,l3,m3,n1,n2
  5.   real(kind=8) :: igr
  6.   logical :: b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16,b17,b18
  7.   b1 = (l1 .eq. 0.AND. m1 .eq.0)
  8.   b2 = (l2 .eq. 0.AND. m1 .eq.0)
  9.   b3 = (l3 .eq. 1.AND. m3 .eq.0)
  10.   b4 = (l1 .eq. 0.AND. m3 .eq.0)
  11.   b5 = (l3 .eq. 0.AND. m3 .eq.0)
  12.   b6 = (l2 .eq. 1.AND. m2 .eq.0)
  13.   b7 = (l2 .eq. 0.AND. m2 .eq.0)
  14.   b8 = (l1 .eq. 0.AND. m1 .eq.0)
  15.   b9 = (l3 .eq. 1.AND. m3 .eq.0)
  16.   b10 = (l2 .eq. 0.AND. m2 .eq.0)
  17.   b11 = (l3 .eq. 0.AND. m3 .eq.0)
  18.   b12 = (l1 .eq. 1.AND. m1 .eq.0)
  19.   b13 = (l3 .eq. 0.AND. m3 .eq.0)
  20.   b14 = (l1 .eq. 0.AND. m1 .eq.0)
  21.   b15 = (l2 .eq. 1.AND. m2 .eq.0)
  22.   b16 = (l3 .eq. 0.AND. m3 .eq.0)
  23.   b17 = (l2 .eq. 0.AND. m2 .eq.0)
  24.   b18 = (l1 .eq. 1.AND. m1 .eq.0)
  25.   if( (b1+b2+b3) .or. (b4+b5+b6) .or (b7+b8+b9) .or. (b10+b11+b12) .or. (b13+b14+b15) .or. (b16+b17+b18) .and. (n1 .eq.1) .and. (n2 .eq.2) ) then
  26.         igr =0.2666666666666666d0
  27.         return
  28.     end if
  29.     igr = 0.0d0
  30.     return
  31.   b1 = (l1 .eq. 0.AND. m1 .eq.0)
  32.   b2 = (l2 .eq. 1.AND. m1 .eq.-1)
  33.   b3 = (l3 .eq. 1.AND. m3 .eq.0)
  34.   b4 = (l1 .eq. 0.AND. m3 .eq.0)
  35.   b5 = (l3 .eq. 1.AND. m3 .eq.-1)
  36.   b6 = (l2 .eq. 1.AND. m2 .eq.0)
  37.   b7 = (l2 .eq. 0.AND. m2 .eq.0)
  38.   b8 = (l1 .eq. 1.AND. m1 .eq.-1)
  39.   b9 = (l3 .eq. 1.AND. m3 .eq.0)
  40.   b10 = (l2 .eq. 0.AND. m2 .eq.0)
  41.   b11 = (l3 .eq. 1.AND. m3 .eq.-1)
  42.   b12 = (l1 .eq. 1.AND. m1 .eq.0)
  43.   b13 = (l3 .eq. 0.AND. m3 .eq.0)
  44.   b14 = (l1 .eq. 1.AND. m1 .eq.-1)
  45.   b15 = (l2 .eq. 1.AND. m2 .eq.0)
  46.   b16 = (l3 .eq. 0.AND. m3 .eq.0)
  47.   b17 = (l2 .eq. 1.AND. m2 .eq.-1)
  48.   b18 = (l1 .eq. 1.AND. m1 .eq.0)
  49.   if( (b1+b2+b3) .or. (b4+b5+b6) .or (b7+b8+b9) .or. (b10+b11+b12) .or. (b13+b14+b15) .or. (b16+b17+b18) .and. (n1 .eq.1) .and. (n2 .eq.2) ) then
  50.         igr =0.09817477041685034d0
  51.         return
  52.     end if
  53.     igr = 0.0d0
  54.     return
  55.   b1 = (l1 .eq. 0.AND. m1 .eq.0)
  56.   b2 = (l2 .eq. 1.AND. m1 .eq.0)
  57.   b3 = (l3 .eq. 1.AND. m3 .eq.1)
  58.   b4 = (l1 .eq. 0.AND. m3 .eq.0)
  59.   b5 = (l3 .eq. 1.AND. m3 .eq.0)
  60.   b6 = (l2 .eq. 1.AND. m2 .eq.1)
  61.   b7 = (l2 .eq. 0.AND. m2 .eq.0)
  62.   b8 = (l1 .eq. 1.AND. m1 .eq.0)
  63.   b9 = (l3 .eq. 1.AND. m3 .eq.1)
  64.   b10 = (l2 .eq. 0.AND. m2 .eq.0)
  65.   b11 = (l3 .eq. 1.AND. m3 .eq.0)
  66.   b12 = (l1 .eq. 1.AND. m1 .eq.1)
  67.   b13 = (l3 .eq. 0.AND. m3 .eq.0)
  68.   b14 = (l1 .eq. 1.AND. m1 .eq.0)
  69.   b15 = (l2 .eq. 1.AND. m2 .eq.1)
  70.   b16 = (l3 .eq. 0.AND. m3 .eq.0)
  71.   b17 = (l2 .eq. 1.AND. m2 .eq.0)
  72.   b18 = (l1 .eq. 1.AND. m1 .eq.1)
  73.   if( (b1+b2+b3) .or. (b4+b5+b6) .or (b7+b8+b9) .or. (b10+b11+b12) .or. (b13+b14+b15) .or. (b16+b17+b18) .and. (n1 .eq.1) .and. (n2 .eq.2) ) then
  74.         igr =-0.1963495408493623d0
  75.         return
  76.     end if
  77.     igr = 0.0d0
  78.     return
  79.   b1 = (l1 .eq. 1.AND. m1 .eq.-1)
  80.   b2 = (l2 .eq. 1.AND. m1 .eq.-1)
  81.   b3 = (l3 .eq. 1.AND. m3 .eq.0)
  82.   b4 = (l1 .eq. 1.AND. m3 .eq.-1)
  83.   b5 = (l3 .eq. 1.AND. m3 .eq.-1)
  84.   b6 = (l2 .eq. 1.AND. m2 .eq.0)
  85.   b7 = (l2 .eq. 1.AND. m2 .eq.-1)
  86.   b8 = (l1 .eq. 1.AND. m1 .eq.-1)
  87.   b9 = (l3 .eq. 1.AND. m3 .eq.0)
  88.   b10 = (l2 .eq. 1.AND. m2 .eq.-1)
  89.   b11 = (l3 .eq. 1.AND. m3 .eq.-1)
  90.   b12 = (l1 .eq. 1.AND. m1 .eq.0)
  91.   b13 = (l3 .eq. 1.AND. m3 .eq.-1)
  92.   b14 = (l1 .eq. 1.AND. m1 .eq.-1)
  93.   b15 = (l2 .eq. 1.AND. m2 .eq.0)
  94.   b16 = (l3 .eq. 1.AND. m3 .eq.-1)
  95.   b17 = (l2 .eq. 1.AND. m2 .eq.-1)
  96.   b18 = (l1 .eq. 1.AND. m1 .eq.0)
  97.   if( (b1+b2+b3) .or. (b4+b5+b6) .or (b7+b8+b9) .or. (b10+b11+b12) .or. (b13+b14+b15) .or. (b16+b17+b18) .and. (n1 .eq.1) .and. (n2 .eq.2) ) then
  98.         igr =0.0380952380952381d0
  99.         return
  100.     end if
  101.     igr = 0.0d0
  102.     return
  103.   b1 = (l1 .eq. 1.AND. m1 .eq.-1)
  104.   b2 = (l2 .eq. 1.AND. m1 .eq.0)
  105.   b3 = (l3 .eq. 1.AND. m3 .eq.1)
  106.   b4 = (l1 .eq. 1.AND. m3 .eq.-1)
  107.   b5 = (l3 .eq. 1.AND. m3 .eq.0)
  108.   b6 = (l2 .eq. 1.AND. m2 .eq.1)
  109.   b7 = (l2 .eq. 1.AND. m2 .eq.-1)
  110.   b8 = (l1 .eq. 1.AND. m1 .eq.0)
  111.   b9 = (l3 .eq. 1.AND. m3 .eq.1)
  112.   b10 = (l2 .eq. 1.AND. m2 .eq.-1)
  113.   b11 = (l3 .eq. 1.AND. m3 .eq.0)
  114.   b12 = (l1 .eq. 1.AND. m1 .eq.1)
  115.   b13 = (l3 .eq. 1.AND. m3 .eq.-1)
  116.   b14 = (l1 .eq. 1.AND. m1 .eq.0)
  117.   b15 = (l2 .eq. 1.AND. m2 .eq.1)
  118.   b16 = (l3 .eq. 1.AND. m3 .eq.-1)
  119.   b17 = (l2 .eq. 1.AND. m2 .eq.0)
  120.   b18 = (l1 .eq. 1.AND. m1 .eq.1)
  121.   if( (b1+b2+b3) .or. (b4+b5+b6) .or (b7+b8+b9) .or. (b10+b11+b12) .or. (b13+b14+b15) .or. (b16+b17+b18) .and. (n1 .eq.1) .and. (n2 .eq.2) ) then
  122.         igr =-0.0761904761904762d0
  123.         return
  124.     end if
  125.     igr = 0.0d0
  126.     return
  127.   b1 = (l1 .eq. 1.AND. m1 .eq.0)
  128.   b2 = (l2 .eq. 1.AND. m1 .eq.0)
  129.   b3 = (l3 .eq. 1.AND. m3 .eq.0)
  130.   b4 = (l1 .eq. 1.AND. m3 .eq.0)
  131.   b5 = (l3 .eq. 1.AND. m3 .eq.0)
  132.   b6 = (l2 .eq. 1.AND. m2 .eq.0)
  133.   b7 = (l2 .eq. 1.AND. m2 .eq.0)
  134.   b8 = (l1 .eq. 1.AND. m1 .eq.0)
  135.   b9 = (l3 .eq. 1.AND. m3 .eq.0)
  136.   b10 = (l2 .eq. 1.AND. m2 .eq.0)
  137.   b11 = (l3 .eq. 1.AND. m3 .eq.0)
  138.   b12 = (l1 .eq. 1.AND. m1 .eq.0)
  139.   b13 = (l3 .eq. 1.AND. m3 .eq.0)
  140.   b14 = (l1 .eq. 1.AND. m1 .eq.0)
  141.   b15 = (l2 .eq. 1.AND. m2 .eq.0)
  142.   b16 = (l3 .eq. 1.AND. m3 .eq.0)
  143.   b17 = (l2 .eq. 1.AND. m2 .eq.0)
  144.   b18 = (l1 .eq. 1.AND. m1 .eq.0)
  145.   if( (b1+b2+b3) .or. (b4+b5+b6) .or (b7+b8+b9) .or. (b10+b11+b12) .or. (b13+b14+b15) .or. (b16+b17+b18) .and. (n1 .eq.1) .and. (n2 .eq.2) ) then
  146.         igr =0.11428571428571428d0
  147.         return
  148.     end if
  149.     igr = 0.0d0
  150.     return
  151.   b1 = (l1 .eq. 1.AND. m1 .eq.0)
  152.   b2 = (l2 .eq. 1.AND. m1 .eq.1)
  153.   b3 = (l3 .eq. 1.AND. m3 .eq.1)
  154.   b4 = (l1 .eq. 1.AND. m3 .eq.0)
  155.   b5 = (l3 .eq. 1.AND. m3 .eq.1)
  156.   b6 = (l2 .eq. 1.AND. m2 .eq.1)
  157.   b7 = (l2 .eq. 1.AND. m2 .eq.0)
  158.   b8 = (l1 .eq. 1.AND. m1 .eq.1)
  159.   b9 = (l3 .eq. 1.AND. m3 .eq.1)
  160.   b10 = (l2 .eq. 1.AND. m2 .eq.0)
  161.   b11 = (l3 .eq. 1.AND. m3 .eq.1)
  162.   b12 = (l1 .eq. 1.AND. m1 .eq.1)
  163.   b13 = (l3 .eq. 1.AND. m3 .eq.0)
  164.   b14 = (l1 .eq. 1.AND. m1 .eq.1)
  165.   b15 = (l2 .eq. 1.AND. m2 .eq.1)
  166.   b16 = (l3 .eq. 1.AND. m3 .eq.0)
  167.   b17 = (l2 .eq. 1.AND. m2 .eq.1)
  168.   b18 = (l1 .eq. 1.AND. m1 .eq.1)
  169.   if( (b1+b2+b3) .or. (b4+b5+b6) .or (b7+b8+b9) .or. (b10+b11+b12) .or. (b13+b14+b15) .or. (b16+b17+b18) .and. (n1 .eq.1) .and. (n2 .eq.2) ) then
  170.         igr =0.1523809523809524d0
  171.         return
  172.     end if
  173.     igr = 0.0d0
  174.     return
  175. end function sph_igr
  176. end module sph_int
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement