1c $Id$ 2c 3c taken from hondo. 4c 5 subroutine hnd_dderij2(ddxdii,ddydii,ddzdii,ddxdij,ddydij,ddzdij, 6 1 ddxdjj,ddydjj,ddzdjj, 7 2 dxdi,dydi,dzdi,dxdj,dydj,dzdj, 8 3 x,y,z,lit,ljt,ai,aj,nder) 9 implicit none 10 double precision x, y, z, dxdi, dydi, dzdi, dxdj, dydj, dzdj 11 double precision ddxdii, ddydii, ddzdii 12 double precision ddxdjj, ddydjj, ddzdjj 13 double precision ddxdij, ddydij, ddzdij 14 double precision ai, aj 15 integer lit, ljt, j, i, nder 16 dimension x(lit+nder,ljt+nder) 17 dimension y(lit+nder,ljt+nder) 18 dimension z(lit+nder,ljt+nder) 19 dimension dxdi(lit,ljt), dydi(lit,ljt), dzdi(lit,ljt) 20 dimension dxdj(lit,ljt), dydj(lit,ljt), dzdj(lit,ljt) 21 dimension ddxdii(lit,ljt),ddydii(lit,ljt),ddzdii(lit,ljt) 22 dimension ddxdjj(lit,ljt),ddydjj(lit,ljt),ddzdjj(lit,ljt) 23 dimension ddxdij(lit,ljt),ddydij(lit,ljt),ddzdij(lit,ljt) 24c 25c ----- dxdi ... ----- 26c 27 do 110 j=1,ljt 28 dxdi(1,j)=x(2,j)*(ai+ai) 29 dydi(1,j)=y(2,j)*(ai+ai) 30 dzdi(1,j)=z(2,j)*(ai+ai) 31 110 continue 32c 33 if(lit.eq.1) go to 130 34c 35 do 120 i=2,lit 36 do 120 j=1,ljt 37 dxdi(i,j)=x(i+1,j)*(ai+ai)-x(i-1,j)*dble(i-1) 38 dydi(i,j)=y(i+1,j)*(ai+ai)-y(i-1,j)*dble(i-1) 39 dzdi(i,j)=z(i+1,j)*(ai+ai)-z(i-1,j)*dble(i-1) 40 120 continue 41c 42 130 continue 43c 44c ----- dxdj ... ----- 45c 46 do 140 i=1,lit 47 dxdj(i,1)=x(i,2)*(aj+aj) 48 dydj(i,1)=y(i,2)*(aj+aj) 49 dzdj(i,1)=z(i,2)*(aj+aj) 50 140 continue 51c 52 if(ljt.eq.1) go to 200 53c 54 do 150 j=2,ljt 55 do 150 i=1,lit 56 dxdj(i,j)=x(i,j+1)*(aj+aj)-x(i,j-1)*dble(j-1) 57 dydj(i,j)=y(i,j+1)*(aj+aj)-y(i,j-1)*dble(j-1) 58 dzdj(i,j)=z(i,j+1)*(aj+aj)-z(i,j-1)*dble(j-1) 59 150 continue 60c 61 200 continue 62 if (nder.lt.2) return 63c 64c ----- ddxdii ... ----- 65c 66 do 210 j=1,ljt 67 ddxdii(1,j)=(x(3,j)*(ai+ai)-x(1,j))*(ai+ai) 68 ddydii(1,j)=(y(3,j)*(ai+ai)-y(1,j))*(ai+ai) 69 ddzdii(1,j)=(z(3,j)*(ai+ai)-z(1,j))*(ai+ai) 70 210 continue 71c 72 if(lit.eq.1) go to 300 73c 74 do 220 j=1,ljt 75 ddxdii(2,j)=(x(4,j)*(ai+ai)-x(2,j)*dble(2+2-1))*(ai+ai) 76 ddydii(2,j)=(y(4,j)*(ai+ai)-y(2,j)*dble(2+2-1))*(ai+ai) 77 ddzdii(2,j)=(z(4,j)*(ai+ai)-z(2,j)*dble(2+2-1))*(ai+ai) 78 220 continue 79c 80 if(lit.eq.2) go to 300 81c 82 do 230 i=3,lit 83 do 230 j=1,ljt 84 ddxdii(i,j)=(x(i+2,j)*(ai+ai)-x(i,j)*dble(i+i-1))*(ai+ai) 85 1 +x(i-2,j)*dble((i-1)*(i-2)) 86 ddydii(i,j)=(y(i+2,j)*(ai+ai)-y(i,j)*dble(i+i-1))*(ai+ai) 87 1 +y(i-2,j)*dble((i-1)*(i-2)) 88 ddzdii(i,j)=(z(i+2,j)*(ai+ai)-z(i,j)*dble(i+i-1))*(ai+ai) 89 1 +z(i-2,j)*dble((i-1)*(i-2)) 90 230 continue 91c 92 300 continue 93c 94c ----- ddxdij ... ----- 95c 96 ddxdij(1,1)= x(2,2)*((aj+aj)*(ai+ai)) 97 ddydij(1,1)= y(2,2)*((aj+aj)*(ai+ai)) 98 ddzdij(1,1)= z(2,2)*((aj+aj)*(ai+ai)) 99c 100 if(ljt.eq.1) go to 330 101 do 320 j=2,ljt 102 ddxdij(1,j)=(x(2,j+1)*(aj+aj)-x(2,j-1)*dble(j-1))*(ai+ai) 103 ddydij(1,j)=(y(2,j+1)*(aj+aj)-y(2,j-1)*dble(j-1))*(ai+ai) 104 ddzdij(1,j)=(z(2,j+1)*(aj+aj)-z(2,j-1)*dble(j-1))*(ai+ai) 105 320 continue 106 330 if(lit.eq.1) go to 400 107 do 340 i=2,lit 108 ddxdij(i,1)=(x(i+1,2)*(ai+ai)-x(i-1,2)*dble(i-1))*(aj+aj) 109 ddydij(i,1)=(y(i+1,2)*(ai+ai)-y(i-1,2)*dble(i-1))*(aj+aj) 110 ddzdij(i,1)=(z(i+1,2)*(ai+ai)-z(i-1,2)*dble(i-1))*(aj+aj) 111 340 continue 112 if(ljt.eq.1) go to 400 113 do 350 i=2,lit 114 do 350 j=2,ljt 115 ddxdij(i,j)= 116 1 (x(i+1,j+1)*(aj+aj)-x(i+1,j-1)*dble(j-1))*(ai+ai) 117 2 -(x(i-1,j+1)*(aj+aj)-x(i-1,j-1)*dble(j-1))*dble(i-1) 118 ddydij(i,j)= 119 1 (y(i+1,j+1)*(aj+aj)-y(i+1,j-1)*dble(j-1))*(ai+ai) 120 2 -(y(i-1,j+1)*(aj+aj)-y(i-1,j-1)*dble(j-1))*dble(i-1) 121 ddzdij(i,j)= 122 1 (z(i+1,j+1)*(aj+aj)-z(i+1,j-1)*dble(j-1))*(ai+ai) 123 2 -(z(i-1,j+1)*(aj+aj)-z(i-1,j-1)*dble(j-1))*dble(i-1) 124 350 continue 125c 126 400 continue 127c 128c ----- ddxdjj ... ----- 129c 130 do 410 i=1,lit 131 ddxdjj(i,1)=(x(i,3)*(aj+aj)-x(i,1))*(aj+aj) 132 ddydjj(i,1)=(y(i,3)*(aj+aj)-y(i,1))*(aj+aj) 133 ddzdjj(i,1)=(z(i,3)*(aj+aj)-z(i,1))*(aj+aj) 134 410 continue 135c 136 if(ljt.eq.1) return 137c 138 do 420 i=1,lit 139 ddxdjj(i,2)=(x(i,4)*(aj+aj)-x(i,2)*dble(2+2-1))*(aj+aj) 140 ddydjj(i,2)=(y(i,4)*(aj+aj)-y(i,2)*dble(2+2-1))*(aj+aj) 141 ddzdjj(i,2)=(z(i,4)*(aj+aj)-z(i,2)*dble(2+2-1))*(aj+aj) 142 420 continue 143c 144 if(ljt.eq.2) return 145c 146 do 430 i=1,lit 147 do 430 j=3,ljt 148 ddxdjj(i,j)=(x(i,j+2)*(aj+aj)-x(i,j)*dble(j+j-1))*(aj+aj) 149 1 +x(i,j-2)*dble((j-1)*(j-2)) 150 ddydjj(i,j)=(y(i,j+2)*(aj+aj)-y(i,j)*dble(j+j-1))*(aj+aj) 151 1 +y(i,j-2)*dble((j-1)*(j-2)) 152 ddzdjj(i,j)=(z(i,j+2)*(aj+aj)-z(i,j)*dble(j+j-1))*(aj+aj) 153 1 +z(i,j-2)*dble((j-1)*(j-2)) 154 430 continue 155 return 156 end 157