32
33
34
35#include "implicit_f.inc"
36
37
38
40 1 r,s,t,
41 2 ni(20) ,dnidr(20),dnids(20),dnidt(20)
42
43
44
45 INTEGER I
47 . u_m_r,u_p_r,u_m_s,u_p_s,u_m_t,u_p_t,
48 . ums_umt,ums_upt,ups_umt,ups_upt,
49 . umr_ums,umr_ups,upr_ums,upr_ups,
50 . umt_umr,umt_upr,upt_umr,upt_upr,
51 . a
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158 u_m_r = half*(one - r)
159 u_p_r = half*(one + r)
160
161 u_m_s = half*(one - s)
162 u_p_s = half*(one + s)
163
164 u_m_t = half*(one - t)
165 u_p_t = half*(one + t)
166
167 ums_umt = u_m_s * u_m_t
168 ums_upt = u_m_s * u_p_t
169 ups_umt = u_p_s * u_m_t
170 ups_upt = u_p_s * u_p_t
171
172 umr_ums = u_m_r * u_m_s
173 umr_ups = u_m_r * u_p_s
174 upr_ums = u_p_r * u_m_s
175 upr_ups = u_p_r * u_p_s
176
177 umt_umr = u_m_t * u_m_r
178 umt_upr = u_m_t * u_p_r
179 upt_umr = u_p_t * u_m_r
180 upt_upr = u_p_t * u_p_r
181
182 ni(1) = u_m_r * ums_umt * (-r-s-t-two)
183 ni(2) = u_m_r * ums_upt * (-r-s+t-two)
184 ni(3) = u_p_r * ums_upt * ( r-s+t-two)
185 ni(4) = u_p_r * ums_umt * ( r-s-t-two)
186 ni(5) = u_m_r * ups_umt * (-r+s-t-two)
187 ni(6) = u_m_r * ups_upt * (-r+s+t-two)
188 ni(7) = u_p_r * ups_upt * ( r+s+t-two)
189 ni(8) = u_p_r * ups_umt * ( r+s-t-two)
190
191 dnidr(1) = -ums_umt * (u_m_s + u_m_t - r -three_half)
192 dnidr(2) = -ums_upt * (u_m_s + u_p_t - r -three_half)
193 dnidr(3) = ums_upt * (u_m_s + u_p_t + r -three_half)
194 dnidr(4) = ums_umt * (u_m_s + u_m_t + r -three_half)
195 dnidr(5) = -ups_umt * (u_p_s + u_m_t - r -three_half)
196 dnidr(6) = -ups_upt * (u_p_s + u_p_t - r -three_half)
197 dnidr(7) = ups_upt * (u_p_s + u_p_t + r -three_half)
198 dnidr(8) = ups_umt * (u_p_s + u_m_t + r -three_half)
199
200
201 dnids(1) = -umt_umr * (u_m_r + u_m_t - s -three_half)
202 dnids(2) = -upt_umr * (u_m_r + u_p_t - s -three_half)
203 dnids(3) = -upt_upr * (u_p_r + u_p_t - s -three_half)
204 dnids(4) = -umt_upr * (u_p_r + u_m_t - s -three_half)
205 dnids(5) = umt_umr * (u_m_r + u_m_t + s -three_half)
206 dnids(6) = upt_umr * (u_m_r + u_p_t + s -three_half)
207 dnids(7) = upt_upr * (u_p_r + u_p_t + s -three_half)
208 dnids(8) = umt_upr * (u_p_r + u_m_t + s -three_half)
209
210 dnidt(1) = -umr_ums * (u_m_r + u_m_s - t -three_half)
211 dnidt(2) = umr_ums * (u_m_r + u_m_s + t -three_half)
212 dnidt(3) = upr_ums * (u_p_r + u_m_s + t -three_half)
213 dnidt(4) = -upr_ums * (u_p_r + u_m_s - t -three_half)
214 dnidt(5) = -umr_ups * (u_m_r + u_p_s - t -three_half)
215 dnidt(6) = umr_ups * (u_m_r + u_p_s + t -three_half)
216 dnidt(7) = upr_ups * (u_p_r + u_p_s + t -three_half)
217 dnidt(8) = -upr_ups * (u_p_r + u_p_s - t -three_half)
218
219 a = (one - r*r)
220 ni(10) = a * ums_upt
221 ni(12) = a * ums_umt
222 ni(18) = a * ups_upt
223 ni(20) = a * ups_umt
224
225 a = half*a
226 dnidt(10) = a * u_m_s
227 dnidt(18) = a * u_p_s
228 dnidt(12) = -dnidt(10)
229 dnidt(20) = -dnidt(18)
230
231 dnids(18) = a * u_p_t
232 dnids(20) = a * u_m_t
233 dnids(10) = -dnids(18)
234 dnids(12) = -dnids(20)
235
236 a = -two*r
237 dnidr(10) = a * ums_upt
238 dnidr(12) = a * ums_umt
239 dnidr(18) = a * ups_upt
240 dnidr(20) = a * ups_umt
241
242 a = (one - s*s)
243 ni(13) = a * umt_umr
244 ni(14) = a * upt_umr
245 ni(15) = a * upt_upr
246 ni(16) = a * umt_upr
247
248 a = half*a
249 dnidr(15) = a * u_p_t
250 dnidr(16) = a * u_m_t
251 dnidr(13) = -dnidr(16)
252 dnidr(14) = -dnidr(15)
253
254 dnidt(14) = a * u_m_r
255 dnidt(15) = a * u_p_r
256 dnidt(13) = -dnidt(14)
257 dnidt(16) = -dnidt(15)
258
259 a = -two*s
260 dnids(13) = a * umt_umr
261 dnids(14) = a * upt_umr
262 dnids(15) = a * upt_upr
263 dnids(16) = a * umt_upr
264
265 a = (one-t*t)
266 ni(9) = a * umr_ums
267 ni(11) = a * upr_ums
268 ni(17) = a * umr_ups
269 ni(19) = a * upr_ups
270
271 a = half*a
272 dnidr(11) = a * u_m_s
273 dnidr(19) = a * u_p_s
274 dnidr(9) = -dnidr(11)
275 dnidr(17) = -dnidr(19)
276
277 dnids(17) = a * u_m_r
278 dnids(19) = a * u_p_r
279 dnids(9) = -dnids(17)
280 dnids(11) = -dnids(19)
281
282 a = -two*t
283 dnidt(9) = a * umr_ums
284 dnidt(11) = a * upr_ums
285 dnidt(17) = a * umr_ups
286 dnidt(19) = a * upr_ups
287
288
289 RETURN