1 Subroutine defNxyz(lambda) 2c $Id$ 3 implicit none 4 5 integer lambda 6 7#include "sh_order.fh" 8 9 integer l0, l1, l2, lr, nc 10 external bdIxyz 11c 12c Initialize the "Ixyz" data structure up through 4 times the given angular 13c momentum. This is necessary to calculate a 4-center ERI comprising four 14c shells of this maximum angular momentum. 15c 16c The order of components in shells of increasing angular momentum is defined 17c as follows: 18c 19c Data s/ 0,0,0 / 20c 21c Data p/ 1,0,0, 22c & 0,1,0, 23c & 0,0,1 / 24c 25c Data d/ 2,0,0, 26c & 1,1,0, 27c & 1,0,1, 28c & 0,2,0, 29c & 0,1,1, 30c & 0,0,2 / 31c 32c Data f/ 3,0,0, 33c & 2,1,0, 34c & 2,0,1, 35c & 1,2,0, 36c & 1,1,1, 37c & 1,0,2, 38c & 0,3,0, 39c & 0,2,1, 40c & 0,1,2, 41c & 0,0,3 / 42c 43c etc. 44c 45c****************************************************************************** 46 47c Multiply by a factor of 4 to intialize for 4-ctr ERIs. 48 49 if (lambda.eq.0) then 50 lR = 4 ! minimum specification for s (s functions multi-pole=4) 51 else 52 lR = 4*lambda 53 endif 54 55c Determine whether initialization up through the specified angular momentum 56c has already occurred. 57 58 if( lR.le.linit ) return 59 60 if( lR.gt.lRmax )then 61 write(*,*) 62 write(*,*) 'DEFNXYZ: ''lRmax'' must be increased to define the' 63 write(*,*) ' shell component ordering of higher angular' 64 write(*,*) ' momentum basis functions.' 65 write(*,*) 66 write(*,*) ' For integral evaluation only:' 67 write(*,*) 68 write(*,*) ' lRmax = 4*(highest ang. mom. in basis) ' 69 write(*,*) 70 stop 71 end if 72 73 nc = 0 74 75 do 20 l0 = 0,lR 76 77 do 10 l1 = l0,0,-1 78 do 10 l2 = l0-l1,0,-1 79 80 nc = nc + 1 81 82 Ixyz(1,nc) = l1 83 Ixyz(2,nc) = l2 84 Ixyz(3,nc) = l0 - (l1 + l2) 85 86 10 continue 87 88 20 continue 89 90 linit = lR 91 92 end 93 94c%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 95 96 Block data bdIxyz 97 implicit none 98 99#include "sh_order.fh" 100 101 Data Ixyz, linit / lRmax3*0, lRmax3*0, lRmax3*0, -375 / 102 103 end 104