31
32
33
35
36
37
38#include "implicit_f.inc"
39
40
41
42#include "mvsiz_p.inc"
43
44
45
46#include "com01_c.inc"
47#include "vect01_c.inc"
48#include "tabsiz_c.inc"
49
50
51
52
53
54
55
56
57
58
59
60 INTEGER,INTENT(IN) :: IXQ(7,SIXQ/NIXQ)
62 my_real,
INTENT(INOUT) :: grad(4,*)
63 TYPE(t_ale_connectivity), INTENT(IN) :: ALE_CONNECT
64
65
66
67 INTEGER I, II, IE, IV1, IV2, IV3, IV4, IAD2
69 . x1(mvsiz), x2(mvsiz), x3(mvsiz), x4(mvsiz), y1(mvsiz), y2(mvsiz), y3(mvsiz), y4(mvsiz),
70 . z1(mvsiz), z2(mvsiz), z3(mvsiz), z4(mvsiz), yc(mvsiz), zc(mvsiz),
71 . n1y(mvsiz), n2y(mvsiz), n3y(mvsiz), n4y(mvsiz), n1z(mvsiz),
72 . n2z(mvsiz), n3z(mvsiz), n4z(mvsiz), dd1(mvsiz), dd2(mvsiz), dd3(mvsiz), dd4(mvsiz),
73 . d1y(mvsiz), d2y(mvsiz), d3y(mvsiz), d4y(mvsiz), d1z(mvsiz),
74 . d2z(mvsiz), d3z(mvsiz), d4z(mvsiz)
75
76 DO i=lft,llt
77 ii=i+nft
78 x1(i)=x(1,ixq(2,ii))
79 y1(i)=x(2,ixq(2,ii))
80 z1(i)=x(3,ixq(2,ii))
81
82 x2(i)=x(1,ixq(3,ii))
83 y2(i)=x(2,ixq(3,ii))
84 z2(i)=x(3,ixq(3,ii))
85
86 x3(i)=x(1,ixq(4,ii))
87 y3(i)=x(2,ixq(4,ii))
88 z3(i)=x(3,ixq(4,ii))
89
90 x4(i)=x(1,ixq(5,ii))
91 y4(i)=x(2,ixq(5,ii))
92 z4(i)=x(3,ixq(5,ii))
93 ENDDO
94
95
96
97 DO i=lft,llt
98 n1y(i)= (z2(i)-z1(i))
99 n1z(i)=-(y2(i)-y1(i))
100
101 n2y(i)= (z3(i)-z2(i))
102 n2z(i)=-(y3(i)-y2(i))
103
104 n3y(i)= (z4(i)-z3(i))
105 n3z(i)=-(y4(i)-y3(i))
106
107 n4y(i)= (z1(i)-z4(i))
108 n4z(i)=-(y1(i)-y4(i))
109 yc(i) = (y1(i)+y2(i)+y3(i)+y4(i))
110 zc(i) = (z1(i)+z2(i)+z3(i)+z4(i))
111 ENDDO
112
113 IF(n2d == 1)THEN
114 DO i=lft,llt
115 n1y(i) = n1y(i)*(y1(i)+y2(i))*half
116 n1z(i) = n1z(i)*(y1(i)+y2(i))*half
117 n2y(i) = n2y(i)*(y2(i)+y3(i))*half
118 n2z(i) = n2z(i)*(y2(i)+y3(i))*half
119 n3y(i) = n3y(i)*(y3(i)+y4(i))*half
120 n3z(i) = n3z(i)*(y3(i)+y4(i))*half
121 n4y(i) = n4y(i)*(y1(i)+y4(i))*half
122 n4z(i) = n4z(i)*(y1(i)+y4(i))*half
123 ENDDO
124 ENDIF
125
126
127
128 DO i=lft,llt
129 ie =nft+i
130 iad2 = ale_connect%ee_connect%iad_connect(ie)
131 iv1 = ale_connect%ee_connect%connected(iad2 + 1 - 1)
132 iv2 = ale_connect%ee_connect%connected(iad2 + 2 - 1)
133 iv3 = ale_connect%ee_connect%connected(iad2 + 3 - 1)
134 iv4 = ale_connect%ee_connect%connected(iad2 + 4 - 1)
135 IF(iv1 <= 0) iv1=ie
136 IF(iv2 <= 0) iv2=ie
137 IF(iv3 <= 0) iv3=ie
138 IF(iv4 <= 0) iv4=ie
139 d1y(i) = - yc(i) + x(2,ixq(2,iv1)) + x(2,ixq(3,iv1)) + x(2,ixq(4,iv1)) + x(2,ixq(5,iv1))
140 d1z(i) = - zc(i) + x(3,ixq(2,iv1)) + x(3,ixq(3,iv1)) + x(3,ixq(4,iv1)) + x(3,ixq(5,iv1))
141 d2y(i) = - yc(i) + x(2,ixq(2,iv2)) + x(2,ixq(3,iv2)) + x(2,ixq(4,iv2)) + x(2,ixq(5,iv2))
142 d2z(i) = - zc(i) + x(3,ixq(2,iv2)) + x(3,ixq(3,iv2)) + x(3,ixq(4,iv2)) + x(3,ixq(5,iv2))
143 d3y(i) = - yc(i) + x(2,ixq(2,iv3)) + x(2,ixq(3,iv3)) + x(2,ixq(4,iv3)) + x(2,ixq(5,iv3))
144 d3z(i) = - zc(i) + x(3,ixq(2,iv3)) + x(3,ixq(3,iv3)) + x(3,ixq(4,iv3)) + x(3,ixq(5,iv3))
145 d4y(i) = - yc(i) + x(2,ixq(2,iv4)) + x(2,ixq(3,iv4)) + x(2,ixq(4,iv4)) + x(2,ixq(5,iv4))
146 d4z(i) = - zc(i) + x(3,ixq(2,iv4)) + x(3,ixq(3,iv4)) + x(3,ixq(4,iv4)) + x(3,ixq(5,iv4))
147 ENDDO
148
149
150
151
152
153 DO i=lft,llt
154 dd1(i)=d1y(i)**2+d1z(i)**2
155 dd2(i)=d2y(i)**2+d2z(i)**2
156 dd3(i)=d3y(i)**2+d3z(i)**2
157 dd4(i)=d4y(i)**2+d4z(i)**2
158 ENDDO
159
160
161
162
163
164
165
166
167
168 DO i=lft,llt
169 grad(1,i)= four*(d1y(i)*n1y(i)+d1z(i)*n1z(i)) /
max(em15,dd1(i))
170 grad(2,i)= four*(d2y(i)*n2y(i)+d2z(i)*n2z(i)) /
max(em15,dd2(i))
171 grad(3,i)= four*(d3y(i)*n3y(i)+d3z(i)*n3z(i)) /
max(em15,dd3(i))
172 grad(4,i)= four*(d4y(i)*n4y(i)+d4z(i)*n4z(i)) /
max(em15,dd4(i))
173 ENDDO
174
175 RETURN