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
46 . u_m_r,u_p_r,u_m_s,u_p_s,u_m_t,u_p_t,
47 . ums_umt,ums_upt,ups_umt,ups_upt,
48 . umr_ums,umr_ups,upr_ums,upr_ups,
49 . umt_umr,umt_upr,upt_umr,upt_upr,
50 . a
51
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 u_m_r = half*(one - r)
158 u_p_r = half*(one + r)
159
160 u_m_s = half*(one - s)
161 u_p_s = half*(one + s)
162
163 u_m_t = half*(one - t)
164 u_p_t = half*(one + t)
165
166 ums_umt = u_m_s * u_m_t
167 ums_upt = u_m_s * u_p_t
168 ups_umt = u_p_s * u_m_t
169 ups_upt = u_p_s * u_p_t
170
171 umr_ums = u_m_r * u_m_s
172 umr_ups = u_m_r * u_p_s
173 upr_ums = u_p_r * u_m_s
174 upr_ups = u_p_r * u_p_s
175
176 umt_umr = u_m_t * u_m_r
177 umt_upr = u_m_t * u_p_r
178 upt_umr = u_p_t * u_m_r
179 upt_upr = u_p_t * u_p_r
180
181 ni(1) = u_m_r * ums_umt * (-r-s-t-two)
182 ni(2) = u_m_r * ums_upt * (-r-s+t-two)
183 ni(3) = u_p_r * ums_upt * ( r-s+t-two)
184 ni(4) = u_p_r * ums_umt * ( r-s-t-two)
185 ni(5) = u_m_r * ups_umt * (-r+s-t-two)
186 ni(6) = u_m_r * ups_upt * (-r+s+t-two)
187 ni(7) = u_p_r * ups_upt * ( r+s+t-two)
188 ni(8) = u_p_r * ups_umt * ( r+s-t-two)
189
190 dnidr(1) = -ums_umt * (u_m_s + u_m_t - r -three_half)
191 dnidr(2) = -ums_upt * (u_m_s + u_p_t - r -three_half)
192 dnidr(3) = ums_upt * (u_m_s + u_p_t + r -three_half)
193 dnidr(4) = ums_umt * (u_m_s + u_m_t + r -three_half)
194 dnidr(5) = -ups_umt * (u_p_s + u_m_t - r -three_half)
195 dnidr(6) = -ups_upt * (u_p_s + u_p_t - r -three_half)
196 dnidr(7) = ups_upt * (u_p_s + u_p_t + r -three_half)
197 dnidr(8) = ups_umt * (u_p_s + u_m_t + r -three_half)
198
199
200 dnids(1) = -umt_umr * (u_m_r + u_m_t - s -three_half)
201 dnids(2) = -upt_umr * (u_m_r + u_p_t - s -three_half)
202 dnids(3) = -upt_upr * (u_p_r + u_p_t - s -three_half)
203 dnids(4) = -umt_upr * (u_p_r + u_m_t - s -three_half)
204 dnids(5) = umt_umr * (u_m_r + u_m_t + s -three_half)
205 dnids(6) = upt_umr * (u_m_r + u_p_t + s -three_half)
206 dnids(7) = upt_upr * (u_p_r + u_p_t + s -three_half)
207 dnids(8) = umt_upr * (u_p_r + u_m_t + s -three_half)
208
209 dnidt(1) = -umr_ums * (u_m_r + u_m_s - t -three_half)
210 dnidt(2) = umr_ums * (u_m_r + u_m_s + t -three_half)
211 dnidt(3) = upr_ums * (u_p_r + u_m_s + t -three_half)
212 dnidt(4) = -upr_ums * (u_p_r + u_m_s - t -three_half)
213 dnidt(5) = -umr_ups * (u_m_r + u_p_s - t -three_half)
214 dnidt(6) = umr_ups * (u_m_r + u_p_s + t -three_half)
215 dnidt(7) = upr_ups * (u_p_r + u_p_s + t -three_half)
216 dnidt(8) = -upr_ups * (u_p_r + u_p_s - t -three_half)
217
218 a = (one - r*r)
219 ni(10) = a * ums_upt
220 ni(12) = a * ums_umt
221 ni(18) = a * ups_upt
222 ni(20) = a * ups_umt
223
224 a = half*a
225 dnidt(10) = a * u_m_s
226 dnidt(18) = a * u_p_s
227 dnidt(12) = -dnidt(10)
228 dnidt(20) = -dnidt(18)
229
230 dnids(18) = a * u_p_t
231 dnids(20) = a * u_m_t
232 dnids(10) = -dnids(18)
233 dnids(12) = -dnids(20)
234
235 a = -two*r
236 dnidr(10) = a * ums_upt
237 dnidr(12) = a * ums_umt
238 dnidr(18) = a * ups_upt
239 dnidr(20) = a * ups_umt
240
241 a = (one - s*s)
242 ni(13) = a * umt_umr
243 ni(14) = a * upt_umr
244 ni(15) = a * upt_upr
245 ni(16) = a * umt_upr
246
247 a = half*a
248 dnidr(15) = a * u_p_t
249 dnidr(16) = a * u_m_t
250 dnidr(13) = -dnidr(16)
251 dnidr(14) = -dnidr(15)
252
253 dnidt(14) = a * u_m_r
254 dnidt(15) = a * u_p_r
255 dnidt(13) = -dnidt(14)
256 dnidt(16) = -dnidt(15)
257
258 a = -two*s
259 dnids(13) = a * umt_umr
260 dnids(14) = a * upt_umr
261 dnids(15) = a * upt_upr
262 dnids(16) = a * umt_upr
263
264 a = (one-t*t)
265 ni(9) = a * umr_ums
266 ni(11) = a * upr_ums
267 ni(17) = a * umr_ups
268 ni(19) = a * upr_ups
269
270 a = half*a
271 dnidr(11) = a * u_m_s
272 dnidr(19) = a * u_p_s
273 dnidr(9) = -dnidr(11)
274 dnidr(17) = -dnidr(19)
275
276 dnids(17) = a * u_m_r
277 dnids(19) = a * u_p_r
278 dnids(9) = -dnids(17)
279 dnids(11) = -dnids(19)
280
281 a = -two*t
282 dnidt(9) = a * umr_ums
283 dnidt(11) = a * upr_ums
284 dnidt(17) = a * umr_ups
285 dnidt(19) = a * upr_ups
286
287
288 RETURN