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