31 #ifndef OOMPH_SUBPARAMETRIC_TELEMENT_HEADER 32 #define OOMPH_SUBPARAMETRIC_TELEMENT_HEADER 36 #include <oomph-lib-config.h> 64 template<
unsigned DIM>
95 std::ostringstream error_message;
96 error_message <<
"Element only has three nodes; called with node number " 100 "BellElement::local_coordinate_of_node()",
101 OOMPH_EXCEPTION_LOCATION);
111 phi[0] = position(2,0) + (position(0,0) - position(2,0))*s[0] + (position(1,0) - position(2,0))*s[1];
112 phi[1] = position(2,1) + (position(0,1) - position(2,1))*s[0] + (position(1,1) - position(2,1))*s[1];
114 double A = ( (position(1,0)*position(2,1)-position(2,0)*position(1,1)) - (position(0,0)*position(2,1)-position(2,0)*position(0,1)) + (position(0,0)*position(1,1)-position(1,0)*position(0,1)))/2.0;
115 double A0 = ( (position(1,0)*position(2,1)-position(2,0)*position(1,1)) - (phi[0]*position(2,1)-position(2,0)*phi[1]) + (phi[0]*position(1,1)-position(1,0)*phi[1]))/2.0;
116 double A1 = ( (phi[0]*position(2,1)-position(2,0)*phi[1]) - (position(0,0)*position(2,1)-position(2,0)*position(0,1)) + (position(0,0)*phi[1]-phi[0]*position(0,1)))/2.0;
117 double A2 = ( (position(1,0)*phi[1]-phi[0]*position(1,1)) - (position(0,0)*phi[1]-phi[0]*position(0,1)) + (position(0,0)*position(1,1)-position(1,0)*position(0,1)))/2.0;
132 b[1] = position(0,0)-position(2,0);
133 b[2] = position(1,0)-position(0,0);
134 b[0] = position(2,0)-position(1,0);
136 c[1] = position(2,1)-position(0,1);
137 c[2] = position(0,1)-position(1,1);
138 c[0] = position(1,1)-position(2,1);
143 v[0] = (position(2,0)-position(1,0));
144 v[1] = (position(2,1)-position(1,1));
145 double m = v[1]/v[0];
146 a[0] = position(1,0);
147 a[1] = position(1,1);
148 cc[0] = position(0,0);
149 cc[1] = position(0,1);
153 pp[1] = ( v[0]*m*a[1] + v[1]*cc[1] - v[0]*a[0] + v[0]*cc[0] )/((v[0]*m)+v[1]);
154 pp[0] = (pp[1]-a[1])*m + a[0];
158 pp[0] = (v[1]*m*a[0] + v[1]*cc[1] - v[1]*a[1] + v[0]*cc[0])/(v[1]*m+v[0]);
159 pp[1] = m*(pp[0]-a[0]) + a[1];
161 double l = sqrt(v[0]*v[0] + v[1]*v[1]);
162 double l1 = sqrt( (pp[0]-a[0])*(pp[0]-a[0]) + (pp[1]-a[1])*(pp[1]-a[1]));
164 lamb[0] = 1-lamb_p[0];
167 v[0] = (position(0,0)-position(2,0));
168 v[1] = (position(0,1)-position(2,1));
170 a[0] = position(2,0);
171 a[1] = position(2,1);
172 cc[0] = position(1,0);
173 cc[1] = position(1,1);
177 pp[1] = ( v[0]*m*a[1] + v[1]*cc[1] - v[0]*a[0] + v[0]*cc[0] )/((v[0]*m)+v[1]);
178 pp[0] = (pp[1]-a[1])*m + a[0];
182 pp[0] = (v[1]*m*a[0] + v[1]*cc[1] - v[1]*a[1] + v[0]*cc[0])/(v[1]*m+v[0]);
183 pp[1] = m*(pp[0]-a[0]) + a[1];
185 l = sqrt(v[0]*v[0] + v[1]*v[1]);
186 l1 = sqrt( (pp[0]-a[0])*(pp[0]-a[0]) + (pp[1]-a[1])*(pp[1]-a[1]));
188 lamb[1] = 1-lamb_p[1];
191 v[0] = (position(1,0)-position(0,0));
192 v[1] = (position(1,1)-position(0,1));
194 a[0] = position(0,0);
195 a[1] = position(0,1);
196 cc[0] = position(2,0);
197 cc[1] = position(2,1);
201 pp[1] = ( v[0]*m*a[1] + v[1]*cc[1] - v[0]*a[0] + v[0]*cc[0] )/((v[0]*m)+v[1]);
202 pp[0] = (pp[1]-a[1])*m + a[0];
206 pp[0] = (v[1]*m*a[0] + v[1]*cc[1] - v[1]*a[1] + v[0]*cc[0])/(v[1]*m+v[0]);
207 pp[1] = m*(pp[0]-a[0]) + a[1];
209 l = sqrt(v[0]*v[0] + v[1]*v[1]);
210 l1 = sqrt( (pp[0]-a[0])*(pp[0]-a[0]) + (pp[1]-a[1])*(pp[1]-a[1]));
212 lamb[2] = 1-lamb_p[2];
215 psi(0,0) = xi[0]*xi[0]*xi[0]*xi[0]*xi[0] +5.0*xi[0]*xi[0]*xi[0]*xi[0]*(xi[1]+xi[2]) + 10.0*xi[0]*xi[0]*xi[0]*(xi[1]+xi[2])*(xi[1]+xi[2])
216 +30.0*xi[0]*xi[0]*xi[1]*xi[2]*(lamb[2]*xi[1] + lamb_p[1]*xi[2]);
217 psi(0,1) = 3.0*b[0]*xi[0]*xi[0]*xi[1]*xi[2]*(xi[1]-xi[2]) + xi[0]*xi[0]*xi[0]*(b[2]*xi[1] -b[1]*xi[2])*(xi[0] + 4.0*xi[1] + 4*xi[2])
218 + 15*xi[0]*xi[0]*xi[1]*xi[2]*(b[2]*lamb[2]*xi[1] - b[1]*lamb_p[1]*xi[2]);
219 psi(0,2) = -3.0*c[0]*xi[0]*xi[0]*xi[1]*xi[2]*(xi[1]-xi[2]) - xi[0]*xi[0]*xi[0]*(c[2]*xi[1] - c[1]*xi[2])*(xi[0] + 4.0*xi[1] + 4.0*xi[2])
220 -15.0*xi[0]*xi[0]*xi[1]*xi[2]*(c[2]*lamb[2]*xi[1] -c[1]*lamb_p[1]*xi[2]);
221 psi(0,3) = 1.0/2.0*xi[0]*xi[0]*xi[0]*(b[2]*b[2]*xi[1]*xi[1] + b[1]*b[1]*xi[2]*xi[2]) + xi[0]*xi[0]*xi[1]*xi[2]*(-b[1]*b[2]*xi[0] + b[2]*b[0]*xi[1] + b[0]*b[1]*xi[2])
222 + 5.0/2.0*xi[0]*xi[0]*xi[1]*xi[2]*(b[2]*b[2]*lamb[2]*xi[1] + b[1]*b[1]*lamb_p[1]*xi[2]);
223 psi(0,4) = 1.0/2.0*xi[0]*xi[0]*xi[0]*(c[2]*c[2]*xi[1]*xi[1] + c[1]*c[1]*xi[2]*xi[2]) + xi[0]*xi[0]*xi[1]*xi[2]*(-c[1]*c[2]*xi[0] + c[2]*c[0]*xi[1] + c[0]*c[1]*xi[2])
224 + 5.0/2.0*xi[0]*xi[0]*xi[1]*xi[2]*(c[2]*c[2]*lamb[2]*xi[1] + c[1]*c[1]*lamb_p[1]*xi[2]);
225 psi(0,5) = b[0]*c[0]*xi[0]*xi[0]*xi[1]*xi[2]*(xi[0] + xi[1] + xi[2]) + b[1]*c[1]*xi[0]*xi[0]*xi[2]*(xi[1]*xi[2] - xi[2]*xi[0] - xi[0]*xi[1] - xi[1]*xi[1])
226 + b[2]*c[2]*xi[0]*xi[0]*xi[1]*(xi[1]*xi[2] - xi[2]*xi[0] -xi[0]*xi[1] - xi[2]*xi[2]) - 5.0*xi[0]*xi[0]*xi[1]*xi[2]*(b[1]*c[1]*lamb_p[1]*xi[2] + b[2]*c[2]*lamb[2]*xi[1]);
229 psi(1,0) = xi[1]*xi[1]*xi[1]*xi[1]*xi[1] +5.0*xi[1]*xi[1]*xi[1]*xi[1]*(xi[2]+xi[0]) + 10.0*xi[1]*xi[1]*xi[1]*(xi[2]+xi[0])*(xi[2]+xi[0])
230 +30.0*xi[1]*xi[1]*xi[2]*xi[0]*(lamb[0]*xi[2] + lamb_p[2]*xi[0]);
231 psi(1,1) = 3.0*b[1]*xi[1]*xi[1]*xi[2]*xi[0]*(xi[2]-xi[0]) + xi[1]*xi[1]*xi[1]*(b[0]*xi[2] -b[2]*xi[0])*(xi[1] + 4.0*xi[2] + 4*xi[0])
232 + 15*xi[1]*xi[1]*xi[2]*xi[0]*(b[0]*lamb[0]*xi[2] - b[2]*lamb_p[2]*xi[0]);
233 psi(1,2) = -3.0*c[1]*xi[1]*xi[1]*xi[2]*xi[0]*(xi[2]-xi[0]) - xi[1]*xi[1]*xi[1]*(c[0]*xi[2] - c[2]*xi[0])*(xi[1] + 4.0*xi[2] + 4.0*xi[0])
234 -15.0*xi[1]*xi[1]*xi[2]*xi[0]*(c[0]*lamb[0]*xi[2] -c[2]*lamb_p[2]*xi[0]);
235 psi(1,3) = 1.0/2.0*xi[1]*xi[1]*xi[1]*(b[0]*b[0]*xi[2]*xi[2] + b[2]*b[2]*xi[0]*xi[0]) + xi[1]*xi[1]*xi[2]*xi[0]*(-b[2]*b[0]*xi[1] + b[0]*b[1]*xi[2] + b[1]*b[2]*xi[0])
236 + 5.0/2.0*xi[1]*xi[1]*xi[2]*xi[0]*(b[0]*b[0]*lamb[0]*xi[2] + b[2]*b[2]*lamb_p[2]*xi[0]);
237 psi(1,4) = 1.0/2.0*xi[1]*xi[1]*xi[1]*(c[0]*c[0]*xi[2]*xi[2] + c[2]*c[2]*xi[0]*xi[0]) + xi[1]*xi[1]*xi[2]*xi[0]*(-c[2]*c[0]*xi[1] + c[0]*c[1]*xi[2] + c[1]*c[2]*xi[0])
238 + 5.0/2.0*xi[1]*xi[1]*xi[2]*xi[0]*(c[0]*c[0]*lamb[0]*xi[2] + c[2]*c[2]*lamb_p[2]*xi[0]);
239 psi(1,5) = b[1]*c[1]*xi[1]*xi[1]*xi[2]*xi[0]*(xi[1] + xi[2] + xi[0]) + b[2]*c[2]*xi[1]*xi[1]*xi[0]*(xi[2]*xi[0] - xi[0]*xi[1] - xi[1]*xi[2] - xi[2]*xi[2])
240 + b[0]*c[0]*xi[1]*xi[1]*xi[2]*(xi[2]*xi[0] - xi[0]*xi[1] -xi[1]*xi[2] - xi[0]*xi[0]) - 5.0*xi[1]*xi[1]*xi[2]*xi[0]*(b[2]*c[2]*lamb_p[2]*xi[0] + b[0]*c[0]*lamb[0]*xi[2]);
243 psi(2,0) = xi[2]*xi[2]*xi[2]*xi[2]*xi[2] +5.0*xi[2]*xi[2]*xi[2]*xi[2]*(xi[0]+xi[1]) + 10.0*xi[2]*xi[2]*xi[2]*(xi[0]+xi[1])*(xi[0]+xi[1])
244 +30.0*xi[2]*xi[2]*xi[0]*xi[1]*(lamb[1]*xi[0] + lamb_p[0]*xi[1]);
245 psi(2,1) = 3.0*b[2]*xi[2]*xi[2]*xi[0]*xi[1]*(xi[0]-xi[1]) + xi[2]*xi[2]*xi[2]*(b[1]*xi[0] -b[0]*xi[1])*(xi[2] + 4.0*xi[0] + 4*xi[1])
246 + 15*xi[2]*xi[2]*xi[0]*xi[1]*(b[1]*lamb[1]*xi[0] - b[0]*lamb_p[0]*xi[1]);
247 psi(2,2) = -3.0*c[2]*xi[2]*xi[2]*xi[0]*xi[1]*(xi[0]-xi[1]) - xi[2]*xi[2]*xi[2]*(c[1]*xi[0] - c[0]*xi[1])*(xi[2] + 4.0*xi[0] + 4.0*xi[1])
248 -15.0*xi[2]*xi[2]*xi[0]*xi[1]*(c[1]*lamb[1]*xi[0] -c[0]*lamb_p[0]*xi[1]);
249 psi(2,3) = 1.0/2.0*xi[2]*xi[2]*xi[2]*(b[1]*b[1]*xi[0]*xi[0] + b[0]*b[0]*xi[1]*xi[1]) + xi[2]*xi[2]*xi[0]*xi[1]*(-b[0]*b[1]*xi[2] + b[1]*b[2]*xi[0] + b[2]*b[0]*xi[1])
250 + 5.0/2.0*xi[2]*xi[2]*xi[0]*xi[1]*(b[1]*b[1]*lamb[1]*xi[0] + b[0]*b[0]*lamb_p[0]*xi[1]);
251 psi(2,4) = 1.0/2.0*xi[2]*xi[2]*xi[2]*(c[1]*c[1]*xi[0]*xi[0] + c[0]*c[0]*xi[1]*xi[1]) + xi[2]*xi[2]*xi[0]*xi[1]*(-c[0]*c[1]*xi[2] + c[1]*c[2]*xi[0] + c[2]*c[0]*xi[1])
252 + 5.0/2.0*xi[2]*xi[2]*xi[0]*xi[1]*(c[1]*c[1]*lamb[1]*xi[0] + c[0]*c[0]*lamb_p[0]*xi[1]);
253 psi(2,5) = b[2]*c[2]*xi[2]*xi[2]*xi[0]*xi[1]*(xi[2] + xi[0] + xi[1]) + b[0]*c[0]*xi[2]*xi[2]*xi[1]*(xi[0]*xi[1] - xi[1]*xi[2] - xi[2]*xi[0] - xi[0]*xi[0])
254 + b[1]*c[1]*xi[2]*xi[2]*xi[0]*(xi[0]*xi[1] - xi[1]*xi[2] -xi[2]*xi[0] - xi[1]*xi[1]) - 5.0*xi[2]*xi[2]*xi[0]*xi[1]*(b[0]*c[0]*lamb_p[0]*xi[1] + b[1]*c[1]*lamb[1]*xi[0]);
261 Bshape(s,psi,position);
266 phi[0] = position(2,0) + (position(0,0) - position(2,0))*s[0] + (position(1,0) - position(2,0))*s[1];
267 phi[1] = position(2,1) + (position(0,1) - position(2,1))*s[0] + (position(1,1) - position(2,1))*s[1];
269 double A = ( (position(1,0)*position(2,1)-position(2,0)*position(1,1)) - (position(0,0)*position(2,1)-position(2,0)*position(0,1)) + (position(0,0)*position(1,1)-position(1,0)*position(0,1)))/2.0;
271 A0 = ( (position(1,0)*position(2,1)-position(2,0)*position(1,1)) - (phi[0]*position(2,1)-position(2,0)*phi[1]) + (phi[0]*position(1,1)-position(1,0)*phi[1]))/2.0;
272 A1 = ( (phi[0]*position(2,1)-position(2,0)*phi[1]) - (position(0,0)*position(2,1)-position(2,0)*position(0,1)) + (position(0,0)*phi[1]-phi[0]*position(0,1)))/2.0;
273 A2 = ( (position(1,0)*phi[1]-phi[0]*position(1,1)) - (position(0,0)*phi[1]-phi[0]*position(0,1)) + (position(0,0)*position(1,1)-position(1,0)*position(0,1)))/2.0;
289 b[1] = position(0,0)-position(2,0);
290 b[2] = position(1,0)-position(0,0);
291 b[0] = position(2,0)-position(1,0);
293 c[1] = position(2,1)-position(0,1);
294 c[2] = position(0,1)-position(1,1);
295 c[0] = position(1,1)-position(2,1);
300 v[0] = (position(2,0)-position(1,0));
301 v[1] = (position(2,1)-position(1,1));
302 double m = v[1]/v[0];
303 a[0] = position(1,0);
304 a[1] = position(1,1);
305 cc[0] = position(0,0);
306 cc[1] = position(0,1);
310 pp[1] = ( v[0]*m*a[1] + v[1]*cc[1] - v[0]*a[0] + v[0]*cc[0] )/((v[0]*m)+v[1]);
311 pp[0] = (pp[1]-a[1])*m + a[0];
315 pp[0] = (v[1]*m*a[0] + v[1]*cc[1] - v[1]*a[1] + v[0]*cc[0])/(v[1]*m+v[0]);
316 pp[1] = m*(pp[0]-a[0]) + a[1];
318 double l = sqrt(v[0]*v[0] + v[1]*v[1]);
319 double l1 = sqrt( (pp[0]-a[0])*(pp[0]-a[0]) + (pp[1]-a[1])*(pp[1]-a[1]));
321 lamb[0] = 1-lamb_p[0];
324 v[0] = (position(0,0)-position(2,0));
325 v[1] = (position(0,1)-position(2,1));
327 a[0] = position(2,0);
328 a[1] = position(2,1);
329 cc[0] = position(1,0);
330 cc[1] = position(1,1);
334 pp[1] = ( v[0]*m*a[1] + v[1]*cc[1] - v[0]*a[0] + v[0]*cc[0] )/((v[0]*m)+v[1]);
335 pp[0] = (pp[1]-a[1])*m + a[0];
339 pp[0] = (v[1]*m*a[0] + v[1]*cc[1] - v[1]*a[1] + v[0]*cc[0])/(v[1]*m+v[0]);
340 pp[1] = m*(pp[0]-a[0]) + a[1];
342 l = sqrt(v[0]*v[0] + v[1]*v[1]);
343 l1 = sqrt( (pp[0]-a[0])*(pp[0]-a[0]) + (pp[1]-a[1])*(pp[1]-a[1]));
345 lamb[1] = 1-lamb_p[1];
348 v[0] = (position(1,0)-position(0,0));
349 v[1] = (position(1,1)-position(0,1));
351 a[0] = position(0,0);
352 a[1] = position(0,1);
353 cc[0] = position(2,0);
354 cc[1] = position(2,1);
358 pp[1] = ( v[0]*m*a[1] + v[1]*cc[1] - v[0]*a[0] + v[0]*cc[0] )/((v[0]*m)+v[1]);
359 pp[0] = (pp[1]-a[1])*m + a[0];
363 pp[0] = (v[1]*m*a[0] + v[1]*cc[1] - v[1]*a[1] + v[0]*cc[0])/(v[1]*m+v[0]);
364 pp[1] = m*(pp[0]-a[0]) + a[1];
366 l = sqrt(v[0]*v[0] + v[1]*v[1]);
367 l1 = sqrt( (pp[0]-a[0])*(pp[0]-a[0]) + (pp[1]-a[1])*(pp[1]-a[1]));
369 lamb[2] = 1-lamb_p[2];
375 dxids0[0] = c[0]/A/2.0;
376 dxids0[1] = c[1]/A/2.0;
377 dxids0[2] = c[2]/A/2.0;
379 dxids1[0] = b[0]/A/2.0;
380 dxids1[1] = b[1]/A/2.0;
381 dxids1[2] = b[2]/A/2.0;
385 psi1(0,0,0) = 5.0*xi[0]*xi[0]*xi[0]*xi[0] + 5.0*4.0*xi[0]*xi[0]*xi[0]*(xi[1]+xi[2]) + 10.0*3.0*xi[0]*xi[0]*(xi[1]+xi[2])*(xi[1]+xi[2])
386 +30.0*2.0*xi[0]*xi[1]*xi[2]*(lamb[2]*xi[1] + lamb_p[1]*xi[2]);
387 psi1(0,1,0) = 3.0*b[0]*2.0*xi[0]*xi[1]*xi[2]*(xi[1]-xi[2]) + 3.0*xi[0]*xi[0]*(b[2]*xi[1] -b[1]*xi[2])*(xi[0] + 4.0*xi[1] + 4.0*xi[2])
388 + xi[0]*xi[0]*xi[0]*(b[2]*xi[1] -b[1]*xi[2]) + 15*2.0*xi[0]*xi[1]*xi[2]*(b[2]*lamb[2]*xi[1] - b[1]*lamb_p[1]*xi[2]);
389 psi1(0,2,0) = -3.0*c[0]*2.0*xi[0]*xi[1]*xi[2]*(xi[1]-xi[2]) - 3.0*xi[0]*xi[0]*(c[2]*xi[1] - c[1]*xi[2])*(xi[0] + 4.0*xi[1] + 4.0*xi[2]) - xi[0]*xi[0]*xi[0]*(c[2]*xi[1] - c[1]*xi[2])
390 -15.0*2.0*xi[0]*xi[1]*xi[2]*(c[2]*lamb[2]*xi[1] -c[1]*lamb_p[1]*xi[2]);
391 psi1(0,3,0) = 1.0/2.0*3.0*xi[0]*xi[0]*(b[2]*b[2]*xi[1]*xi[1] + b[1]*b[1]*xi[2]*xi[2]) + 2.0*xi[0]*xi[1]*xi[2]*(-b[1]*b[2]*xi[0] + b[2]*b[0]*xi[1] + b[0]*b[1]*xi[2])
392 + 5.0/2.0*2.0*xi[0]*xi[1]*xi[2]*(b[2]*b[2]*lamb[2]*xi[1] + b[1]*b[1]*lamb_p[1]*xi[2]) + xi[0]*xi[0]*xi[1]*xi[2]*(-b[1]*b[2]);
393 psi1(0,4,0) = 1.0/2.0*3.0*xi[0]*xi[0]*(c[2]*c[2]*xi[1]*xi[1] + c[1]*c[1]*xi[2]*xi[2]) + 2.0*xi[0]*xi[1]*xi[2]*(-c[1]*c[2]*xi[0] + c[2]*c[0]*xi[1] + c[0]*c[1]*xi[2])
394 + 5.0/2.0*2.0*xi[0]*xi[1]*xi[2]*(c[2]*c[2]*lamb[2]*xi[1] + c[1]*c[1]*lamb_p[1]*xi[2])+ xi[0]*xi[0]*xi[1]*xi[2]*(-c[1]*c[2]);
395 psi1(0,5,0) = b[0]*c[0]*2.0*xi[0]*xi[1]*xi[2]*(xi[0] + xi[1] + xi[2]) + b[0]*c[0]*xi[0]*xi[0]*xi[1]*xi[2] + b[1]*c[1]*2.0*xi[0]*xi[2]*(xi[1]*xi[2] - xi[2]*xi[0] - xi[0]*xi[1] - xi[1]*xi[1])
396 + b[1]*c[1]*xi[0]*xi[0]*xi[2]*(-xi[1] - xi[2]) + b[2]*c[2]*2.0*xi[0]*xi[1]*(xi[1]*xi[2] - xi[2]*xi[0] -xi[0]*xi[1] - xi[2]*xi[2])
397 + b[2]*c[2]*xi[0]*xi[0]*xi[1]*(-xi[2]-xi[1]) - 5.0*2.0*xi[0]*xi[1]*xi[2]*(b[1]*c[1]*lamb_p[1]*xi[2] + b[2]*c[2]*lamb[2]*xi[1]);
399 psi1(0,0,1) = 5.0*xi[0]*xi[0]*xi[0]*xi[0] + 10.0*xi[0]*xi[0]*xi[0]*2.0*(xi[1]+xi[2])
400 +30.0*xi[0]*xi[0]*xi[2]*(lamb[2]*xi[1] + lamb_p[1]*xi[2])+30.0*xi[0]*xi[0]*xi[1]*xi[2]*(lamb[2]);
401 psi1(0,1,1) = 3.0*b[0]*xi[0]*xi[0]*xi[2]*(xi[1]-xi[2])+ 3.0*b[0]*xi[0]*xi[0]*xi[1]*xi[2] + xi[0]*xi[0]*xi[0]*(b[2])*(xi[0] + 4.0*xi[1] + 4*xi[2])
402 + xi[0]*xi[0]*xi[0]*(b[2]*xi[1] -b[1]*xi[2])*(4.0) + 15*xi[0]*xi[0]*xi[2]*(b[2]*lamb[2]*xi[1] - b[1]*lamb_p[1]*xi[2]) +15*xi[0]*xi[0]*xi[1]*xi[2]*(b[2]*lamb[2]);
403 psi1(0,2,1) = -3.0*c[0]*xi[0]*xi[0]*xi[2]*(xi[1]-xi[2]) - 3.0*c[0]*xi[0]*xi[0]*xi[1]*xi[2] - xi[0]*xi[0]*xi[0]*(c[2]*xi[1] - c[1]*xi[2])*(4.0) - xi[0]*xi[0]*xi[0]*(c[2])*(xi[0] + 4.0*xi[1] + 4.0*xi[2]) -15.0*xi[0]*xi[0]*xi[1]*xi[2]*(c[2]*lamb[2])
404 -15.0*xi[0]*xi[0]*xi[2]*(c[2]*lamb[2]*xi[1] -c[1]*lamb_p[1]*xi[2]);
405 psi1(0,3,1) = 1.0/2.0*xi[0]*xi[0]*xi[0]*(b[2]*b[2]*2.0*xi[1]) + xi[0]*xi[0]*xi[1]*xi[2]*(b[2]*b[0]) + xi[0]*xi[0]*xi[2]*(-b[1]*b[2]*xi[0] + b[2]*b[0]*xi[1] + b[0]*b[1]*xi[2]) + 5.0/2.0*xi[0]*xi[0]*xi[1]*xi[2]*(b[2]*b[2]*lamb[2]) + 5.0/2.0*xi[0]*xi[0]*xi[2]*(b[2]*b[2]*lamb[2]*xi[1] + b[1]*b[1]*lamb_p[1]*xi[2]);
406 psi1(0,4,1) = 1.0/2.0*xi[0]*xi[0]*xi[0]*(c[2]*c[2]*2.0*xi[1]) + xi[0]*xi[0]*xi[1]*xi[2]*(c[2]*c[0]) + xi[0]*xi[0]*xi[2]*(-c[1]*c[2]*xi[0] + c[2]*c[0]*xi[1] + c[0]*c[1]*xi[2])+ 5.0/2.0*xi[0]*xi[0]*xi[1]*xi[2]*(c[2]*c[2]*lamb[2]) + 5.0/2.0*xi[0]*xi[0]*xi[2]*(c[2]*c[2]*lamb[2]*xi[1] + c[1]*c[1]*lamb_p[1]*xi[2]);
407 psi1(0,5,1) = b[0]*c[0]*xi[0]*xi[0]*xi[1]*xi[2] + b[0]*c[0]*xi[0]*xi[0]*xi[2]*(xi[0] + xi[1] + xi[2]) + b[1]*c[1]*xi[0]*xi[0]*xi[2]*(xi[2] - xi[0] - 2.0*xi[1])
408 + b[2]*c[2]*xi[0]*xi[0]*(xi[1]*xi[2] - xi[2]*xi[0] -xi[0]*xi[1] - xi[2]*xi[2]) + b[2]*c[2]*xi[0]*xi[0]*xi[1]*(xi[2]-xi[0]) - 5.0*xi[0]*xi[0]*xi[2]*(b[1]*c[1]*lamb_p[1]*xi[2] + b[2]*c[2]*lamb[2]*xi[1])
409 - 5.0*xi[0]*xi[0]*xi[1]*xi[2]*(b[2]*c[2]*lamb[2]);
411 psi1(0,0,2) = 5.0*xi[0]*xi[0]*xi[0]*xi[0] + 10.0*xi[0]*xi[0]*xi[0]*2.0*(xi[1]+xi[2])
412 +30.0*xi[0]*xi[0]*xi[1]*xi[2]*(lamb_p[1]) +30.0*xi[0]*xi[0]*xi[1]*(lamb[2]*xi[1] + lamb_p[1]*xi[2]);
413 psi1(0,1,2) = 3.0*b[0]*xi[0]*xi[0]*xi[1]*xi[2]*(-1.0) + 3.0*b[0]*xi[0]*xi[0]*xi[1]*(xi[1]-xi[2]) + xi[0]*xi[0]*xi[0]*(b[2]*xi[1] -b[1]*xi[2])*( 4.0)+ xi[0]*xi[0]*xi[0]*(-b[1])*(xi[0] + 4.0*xi[1] + 4*xi[2]) + 15*xi[0]*xi[0]*xi[1]*xi[2]*(- b[1]*lamb_p[1])
414 + 15*xi[0]*xi[0]*xi[1]*(b[2]*lamb[2]*xi[1] - b[1]*lamb_p[1]*xi[2]);
415 psi1(0,2,2) = -3.0*c[0]*xi[0]*xi[0]*xi[1]*xi[2]*(-1.0) + -3.0*c[0]*xi[0]*xi[0]*xi[1]*(xi[1]-xi[2]) - xi[0]*xi[0]*xi[0]*(c[2]*xi[1] - c[1]*xi[2])*( 4.0) - xi[0]*xi[0]*xi[0]*(-1.0*c[1])*(xi[0] + 4.0*xi[1] + 4.0*xi[2]) -15.0*xi[0]*xi[0]*xi[1]*xi[2]*( -1.0*c[1]*lamb_p[1]) -15.0*xi[0]*xi[0]*xi[1]*(c[2]*lamb[2]*xi[1] -c[1]*lamb_p[1]*xi[2]);
416 psi1(0,3,2) = 1.0/2.0*xi[0]*xi[0]*xi[0]*(b[1]*b[1]*2.0*xi[2]) + xi[0]*xi[0]*xi[1]*xi[2]*( b[0]*b[1]) + xi[0]*xi[0]*xi[1]*(-b[1]*b[2]*xi[0] + b[2]*b[0]*xi[1] + b[0]*b[1]*xi[2]) + 5.0/2.0*xi[0]*xi[0]*xi[1]*xi[2]*( b[1]*b[1]*lamb_p[1])+ 5.0/2.0*xi[0]*xi[0]*xi[1]*(b[2]*b[2]*lamb[2]*xi[1] + b[1]*b[1]*lamb_p[1]*xi[2]);
417 psi1(0,4,2) = 1.0/2.0*xi[0]*xi[0]*xi[0]*(c[1]*c[1]*2.0*xi[2]) + xi[0]*xi[0]*xi[1]*xi[2]*(c[0]*c[1]) + xi[0]*xi[0]*xi[1]*(-c[1]*c[2]*xi[0] + c[2]*c[0]*xi[1] + c[0]*c[1]*xi[2]) + 5.0/2.0*xi[0]*xi[0]*xi[1]*xi[2]*(c[1]*c[1]*lamb_p[1]) + 5.0/2.0*xi[0]*xi[0]*xi[1]*(c[2]*c[2]*lamb[2]*xi[1] + c[1]*c[1]*lamb_p[1]*xi[2]);
418 psi1(0,5,2) = b[0]*c[0]*xi[0]*xi[0]*xi[1]*xi[2] + b[0]*c[0]*xi[0]*xi[0]*xi[1]*(xi[0] + xi[1] + xi[2]) + b[1]*c[1]*xi[0]*xi[0]*xi[2]*(xi[1] - xi[0]) + b[1]*c[1]*xi[0]*xi[0]*(xi[1]*xi[2] - xi[2]*xi[0] - xi[0]*xi[1] - xi[1]*xi[1]) + b[2]*c[2]*xi[0]*xi[0]*xi[1]*(xi[1] - xi[0] - 2.0*xi[2]) - 5.0*xi[0]*xi[0]*xi[1]*xi[2]*(b[1]*c[1]*lamb_p[1])
419 - 5.0*xi[0]*xi[0]*xi[1]*(b[1]*c[1]*lamb_p[1]*xi[2] + b[2]*c[2]*lamb[2]*xi[1]);
422 dpsids(0,0,0) = psi1(0,0,0)*dxids0[0] + psi1(0,0,1)*dxids0[1] + psi1(0,0,2)*dxids0[2];
423 dpsids(0,1,0) = psi1(0,1,0)*dxids0[0] + psi1(0,1,1)*dxids0[1] + psi1(0,1,2)*dxids0[2];
424 dpsids(0,2,0) = psi1(0,2,0)*dxids0[0] + psi1(0,2,1)*dxids0[1] + psi1(0,2,2)*dxids0[2];
425 dpsids(0,3,0) = psi1(0,3,0)*dxids0[0] + psi1(0,3,1)*dxids0[1] + psi1(0,3,2)*dxids0[2];
426 dpsids(0,4,0) = psi1(0,4,0)*dxids0[0] + psi1(0,4,1)*dxids0[1] + psi1(0,4,2)*dxids0[2];
427 dpsids(0,5,0) = psi1(0,5,0)*dxids0[0] + psi1(0,5,1)*dxids0[1] + psi1(0,5,2)*dxids0[2];
430 dpsids(0,0,1) = psi1(0,0,0)*dxids1[0] + psi1(0,0,1)*dxids1[1] + psi1(0,0,2)*dxids1[2];
431 dpsids(0,1,1) = psi1(0,1,0)*dxids1[0] + psi1(0,1,1)*dxids1[1] + psi1(0,1,2)*dxids1[2];
432 dpsids(0,2,1) = psi1(0,2,0)*dxids1[0] + psi1(0,2,1)*dxids1[1] + psi1(0,2,2)*dxids1[2];
433 dpsids(0,3,1) = psi1(0,3,0)*dxids1[0] + psi1(0,3,1)*dxids1[1] + psi1(0,3,2)*dxids1[2];
434 dpsids(0,4,1) = psi1(0,4,0)*dxids1[0] + psi1(0,4,1)*dxids1[1] + psi1(0,4,2)*dxids1[2];
435 dpsids(0,5,1) = psi1(0,5,0)*dxids1[0] + psi1(0,5,1)*dxids1[1] + psi1(0,5,2)*dxids1[2];
439 psi1(1,0,1) = 5.0*xi[1]*xi[1]*xi[1]*xi[1] +5.0*4.0*xi[1]*xi[1]*xi[1]*(xi[2]+xi[0]) + 10.0*3.0*xi[1]*xi[1]*(xi[2]+xi[0])*(xi[2]+xi[0]) +30.0*2.0*xi[1]*xi[2]*xi[0]*(lamb[0]*xi[2] + lamb_p[2]*xi[0]);
440 psi1(1,1,1) = 3.0*b[1]*2.0*xi[1]*xi[2]*xi[0]*(xi[2]-xi[0]) + 3.0*xi[1]*xi[1]*(b[0]*xi[2] -b[2]*xi[0])*(xi[1] + 4.0*xi[2] + 4.0*xi[0]) +xi[1]*xi[1]*xi[1]*(b[0]*xi[2] -b[2]*xi[0]) + 15*2.0*xi[1]*xi[2]*xi[0]*(b[0]*lamb[0]*xi[2] - b[2]*lamb_p[2]*xi[0]);
441 psi1(1,2,1) = -3.0*c[1]*2.0*xi[1]*xi[2]*xi[0]*(xi[2]-xi[0]) - 3.0*xi[1]*xi[1]*(c[0]*xi[2] -c[2]*xi[0])*(xi[1] + 4.0*xi[2] + 4.0*xi[0]) - xi[1]*xi[1]*xi[1]*(c[0]*xi[2] -c[2]*xi[0]) -15.0*2.0*xi[1]*xi[2]*xi[0]*(c[0]*lamb[0]*xi[2] -c[2]*lamb_p[2]*xi[0]);
442 psi1(1,3,1) = 1.0/2.0*3.0*xi[1]*xi[1]*(b[0]*b[0]*xi[2]*xi[2] + b[2]*b[2]*xi[0]*xi[0]) + 2.0*xi[1]*xi[2]*xi[0]*(-b[2]*b[0]*xi[1] + b[0]*b[1]*xi[2] + b[1]*b[2]*xi[0]) + 5.0/2.0*2.0*xi[1]*xi[2]*xi[0]*(b[0]*b[0]*lamb[0]*xi[2] + b[2]*b[2]*lamb_p[2]*xi[0]) + xi[1]*xi[1]*xi[2]*xi[0]*(-b[2])*b[0];
443 psi1(1,4,1) = 1.0/2.0*3.0*xi[1]*xi[1]*(c[0]*c[0]*xi[2]*xi[2] + c[2]*c[2]*xi[0]*xi[0]) + 2.0*xi[1]*xi[2]*xi[0]*(-c[2]*c[0]*xi[1] + c[0]*c[1]*xi[2] + c[1]*c[2]*xi[0])
444 + 5.0/2.0*2.0*xi[1]*xi[2]*xi[0]*(c[0]*c[0]*lamb[0]*xi[2] + c[2]*c[2]*lamb_p[2]*xi[0])+ xi[1]*xi[1]*xi[2]*xi[0]*(-c[2])*c[0];
445 psi1(1,5,1) = b[1]*c[1]*2.0*xi[1]*xi[2]*xi[0]*(xi[1] + xi[2] + xi[0]) + b[1]*c[1]*xi[1]*xi[1]*xi[2]*xi[0] + b[2]*c[2]*2.0*xi[1]*xi[0]*(xi[2]*xi[0] - xi[0]*xi[1] - xi[1]*xi[2] - xi[2]*xi[2]) + b[2]*c[2]*xi[1]*xi[1]*xi[0]*(-xi[2] - xi[0]) + b[0]*c[0]*2.0*xi[1]*xi[2]*(xi[2]*xi[0] - xi[0]*xi[1] -xi[1]*xi[2] - xi[0]*xi[0]) + b[0]*c[0]*xi[1]*xi[1]*xi[2]*(- xi[0]-xi[2]) - 5.0*2.0*xi[1]*xi[2]*xi[0]*(b[2]*c[2]*lamb_p[2]*xi[0] + b[0]*c[0]*lamb[0]*xi[2]);
448 psi1(1,0,2) = 5.0*xi[1]*xi[1]*xi[1]*xi[1] + 10.0*xi[1]*xi[1]*xi[1]*2.0*(xi[2]+xi[0])+30.0*xi[1]*xi[1]*xi[0]*(lamb[0]*xi[2] + lamb_p[2]*xi[0]) +30.0*xi[1]*xi[1]*xi[2]*xi[0]*(lamb[0]);
449 psi1(1,1,2) = 3.0*b[1]*xi[1]*xi[1]*xi[0]*(xi[2]-xi[0])+ 3.0*b[1]*xi[1]*xi[1]*xi[2]*xi[0] + xi[1]*xi[1]*xi[1]*(b[0])*(xi[1] + 4.0*xi[2] + 4.0*xi[0])+ xi[1]*xi[1]*xi[1]*(b[0]*xi[2] -b[2]*xi[0])*(4.0) + 15.0*xi[1]*xi[1]*xi[0]*(b[0]*lamb[0]*xi[2] - b[2]*lamb_p[2]*xi[0]) + 15*xi[1]*xi[1]*xi[2]*xi[0]*(b[0]*lamb[0]);
450 psi1(1,2,2) = -3.0*c[1]*xi[1]*xi[1]*xi[2]*xi[0] + -3.0*c[1]*xi[1]*xi[1]*xi[0]*(xi[2]-xi[0]) - xi[1]*xi[1]*xi[1]*(c[0]*xi[2] - c[2]*xi[0])*(4.0) - xi[1]*xi[1]*xi[1]*(c[0])*(xi[1] + 4.0*xi[2] + 4.0*xi[0]) -15.0*xi[1]*xi[1]*xi[2]*xi[0]*(c[0]*lamb[0]) - 15.0*xi[1]*xi[1]*xi[0]*(c[0]*lamb[0]*xi[2] -c[2]*lamb_p[2]*xi[0]);
451 psi1(1,3,2) = 1.0/2.0*xi[1]*xi[1]*xi[1]*(b[0]*b[0]*2.0*xi[2]) + xi[1]*xi[1]*xi[2]*xi[0]*(b[0]*b[1]) + xi[1]*xi[1]*xi[0]*(-b[2]*b[0]*xi[1] + b[0]*b[1]*xi[2] + b[1]*b[2]*xi[0]) + 5.0/2.0*xi[1]*xi[1]*xi[2]*xi[0]*(b[0]*b[0]*lamb[0]) + 5.0/2.0*xi[1]*xi[1]*xi[0]*(b[0]*b[0]*lamb[0]*xi[2] + b[2]*b[2]*lamb_p[2]*xi[0]);
452 psi1(1,4,2) = 1.0/2.0*xi[1]*xi[1]*xi[1]*(c[0]*c[0]*2.0*xi[2]) + xi[1]*xi[1]*xi[2]*xi[0]*(c[0]*c[1]) + xi[1]*xi[1]*xi[0]*(-c[2]*c[0]*xi[1] + c[0]*c[1]*xi[2] + c[1]*c[2]*xi[0])+ 5.0/2.0*xi[1]*xi[1]*xi[2]*xi[0]*(c[0]*c[0]*lamb[0]) + 5.0/2.0*xi[1]*xi[1]*xi[0]*(c[0]*c[0]*lamb[0]*xi[2] + c[2]*c[2]*lamb_p[2]*xi[0]);
453 psi1(1,5,2) = b[1]*c[1]*xi[1]*xi[1]*xi[2]*xi[0] + b[1]*c[1]*xi[1]*xi[1]*xi[0]*(xi[1] + xi[2] + xi[0]) + b[2]*c[2]*xi[1]*xi[1]*xi[0]*(xi[0] - xi[1] - 2.0*xi[2])
454 + b[0]*c[0]*xi[1]*xi[1]*xi[2]*(xi[0] -xi[1]) + b[0]*c[0]*xi[1]*xi[1]*(xi[2]*xi[0] - xi[0]*xi[1] -xi[1]*xi[2] - xi[0]*xi[0]) - 5.0*xi[1]*xi[1]*xi[2]*xi[0]*( b[0]*c[0]*lamb[0]) - 5.0*xi[1]*xi[1]*xi[0]*(b[2]*c[2]*lamb_p[2]*xi[0] + b[0]*c[0]*lamb[0]*xi[2]);
457 psi1(1,0,0) = 5.0*xi[1]*xi[1]*xi[1]*xi[1] + 10.0*xi[1]*xi[1]*xi[1]*2.0*(xi[2]+xi[0]) + 30.0*xi[1]*xi[1]*xi[2]*xi[0]*(lamb_p[2])+ 30.0*xi[1]*xi[1]*xi[2]*(lamb[0]*xi[2] + lamb_p[2]*xi[0]);
458 psi1(1,1,0) = -3.0*b[1]*xi[1]*xi[1]*xi[2]*xi[0] + 3.0*b[1]*xi[1]*xi[1]*xi[2]*(xi[2]-xi[0]) + xi[1]*xi[1]*xi[1]*(b[0]*xi[2] -b[2]*xi[0])*(4.0) + xi[1]*xi[1]*xi[1]*(-b[2])*(xi[1] + 4.0*xi[2] + 4.0*xi[0]) - 15*xi[1]*xi[1]*xi[2]*xi[0]*(b[2]*lamb_p[2]) + 15*xi[1]*xi[1]*xi[2]*(b[0]*lamb[0]*xi[2] - b[2]*lamb_p[2]*xi[0]);
459 psi1(1,2,0) = 3.0*c[1]*xi[1]*xi[1]*xi[2]*xi[0] - 3.0*c[1]*xi[1]*xi[1]*xi[2]*(xi[2]-xi[0]) - xi[1]*xi[1]*xi[1]*(c[0]*xi[2] -c[2]*xi[0])*(4.0) - xi[1]*xi[1]*xi[1]*(-c[2])*(xi[1] + 4.0*xi[2] + 4.0*xi[0]) + 15.0*xi[1]*xi[1]*xi[2]*xi[0]*(c[2]*lamb_p[2]) -15.0*xi[1]*xi[1]*xi[2]*(c[0]*lamb[0]*xi[2] -c[2]*lamb_p[2]*xi[0]);
460 psi1(1,3,0) = 1.0/2.0*xi[1]*xi[1]*xi[1]*(b[2]*b[2]*2.0*xi[0]) + xi[1]*xi[1]*xi[2]*xi[0]*(b[1]*b[2]) + xi[1]*xi[1]*xi[2]*(-b[2]*b[0]*xi[1] + b[0]*b[1]*xi[2] + b[1]*b[2]*xi[0]) + 5.0/2.0*xi[1]*xi[1]*xi[2]*xi[0]*( b[2]*b[2]*lamb_p[2])+ 5.0/2.0*xi[1]*xi[1]*xi[2]*(b[0]*b[0]*lamb[0]*xi[2] + b[2]*b[2]*lamb_p[2]*xi[0]);
461 psi1(1,4,0) = 1.0/2.0*xi[1]*xi[1]*xi[1]*(c[2]*c[2]*2.0*xi[0]) + xi[1]*xi[1]*xi[2]*xi[0]*(c[1]*c[2]) + xi[1]*xi[1]*xi[2]*(-c[2]*c[0]*xi[1] + c[0]*c[1]*xi[2] + c[1]*c[2]*xi[0]) + 5.0/2.0*xi[1]*xi[1]*xi[2]*xi[0]*(c[2]*c[2]*lamb_p[2]) + 5.0/2.0*xi[1]*xi[1]*xi[2]*(c[0]*c[0]*lamb[0]*xi[2] + c[2]*c[2]*lamb_p[2]*xi[0]);
462 psi1(1,5,0) = b[1]*c[1]*xi[1]*xi[1]*xi[2]*xi[0] + b[1]*c[1]*xi[1]*xi[1]*xi[2]*(xi[1] + xi[2] + xi[0]) + b[2]*c[2]*xi[1]*xi[1]*xi[0]*(xi[2] - xi[1]) + b[2]*c[2]*xi[1]*xi[1]*(xi[2]*xi[0] - xi[0]*xi[1] - xi[1]*xi[2] - xi[2]*xi[2]) + b[0]*c[0]*xi[1]*xi[1]*xi[2]*(xi[2] - xi[1] - 2.0*xi[0]) - 5.0*xi[1]*xi[1]*xi[2]*xi[0]*(b[2]*c[2]*lamb_p[2]) - 5.0*xi[1]*xi[1]*xi[2]*(b[2]*c[2]*lamb_p[2]*xi[0] + b[0]*c[0]*lamb[0]*xi[2]);
465 dpsids(1,0,0) = psi1(1,0,0)*dxids0[0] + psi1(1,0,1)*dxids0[1] + psi1(1,0,2)*dxids0[2];
466 dpsids(1,1,0) = psi1(1,1,0)*dxids0[0] + psi1(1,1,1)*dxids0[1] + psi1(1,1,2)*dxids0[2];
467 dpsids(1,2,0) = psi1(1,2,0)*dxids0[0] + psi1(1,2,1)*dxids0[1] + psi1(1,2,2)*dxids0[2];
468 dpsids(1,3,0) = psi1(1,3,0)*dxids0[0] + psi1(1,3,1)*dxids0[1] + psi1(1,3,2)*dxids0[2];
469 dpsids(1,4,0) = psi1(1,4,0)*dxids0[0] + psi1(1,4,1)*dxids0[1] + psi1(1,4,2)*dxids0[2];
470 dpsids(1,5,0) = psi1(1,5,0)*dxids0[0] + psi1(1,5,1)*dxids0[1] + psi1(1,5,2)*dxids0[2];
473 dpsids(1,0,1) = psi1(1,0,0)*dxids1[0] + psi1(1,0,1)*dxids1[1] + psi1(1,0,2)*dxids1[2];
474 dpsids(1,1,1) = psi1(1,1,0)*dxids1[0] + psi1(1,1,1)*dxids1[1] + psi1(1,1,2)*dxids1[2];
475 dpsids(1,2,1) = psi1(1,2,0)*dxids1[0] + psi1(1,2,1)*dxids1[1] + psi1(1,2,2)*dxids1[2];
476 dpsids(1,3,1) = psi1(1,3,0)*dxids1[0] + psi1(1,3,1)*dxids1[1] + psi1(1,3,2)*dxids1[2];
477 dpsids(1,4,1) = psi1(1,4,0)*dxids1[0] + psi1(1,4,1)*dxids1[1] + psi1(1,4,2)*dxids1[2];
478 dpsids(1,5,1) = psi1(1,5,0)*dxids1[0] + psi1(1,5,1)*dxids1[1] + psi1(1,5,2)*dxids1[2];
482 psi1(2,0,0) = 5.0*xi[2]*xi[2]*xi[2]*xi[2] + 10.0*xi[2]*xi[2]*xi[2]*2.0*(xi[0]+xi[1]) + 30.0*xi[2]*xi[2]*xi[1]*(lamb[1]*xi[0] + lamb_p[0]*xi[1])
483 +30.0*xi[2]*xi[2]*xi[0]*xi[1]*(lamb[1]);
484 psi1(2,1,0)= 3.0*b[2]*xi[2]*xi[2]*xi[1]*(xi[0]-xi[1]) + 3.0*b[2]*xi[2]*xi[2]*xi[0]*xi[1] + xi[2]*xi[2]*xi[2]*(b[1])*(xi[2] + 4.0*xi[0] + 4.0*xi[1])+ xi[2]*xi[2]*xi[2]*(b[1]*xi[0] -b[0]*xi[1])*(4.0) + 15.0*xi[2]*xi[2]*xi[1]*(b[1]*lamb[1]*xi[0] - b[0]*lamb_p[0]*xi[1]) + 15.0*xi[2]*xi[2]*xi[0]*xi[1]*(b[1]*lamb[1]);
485 psi1(2,2,0) = -3.0*c[2]*xi[2]*xi[2]*xi[0]*xi[1] + -3.0*c[2]*xi[2]*xi[2]*xi[1]*(xi[0]-xi[1]) - xi[2]*xi[2]*xi[2]*(c[1]*xi[0] - c[0]*xi[1])*(4.0) - xi[2]*xi[2]*xi[2]*(c[1])*(xi[2] + 4.0*xi[0] + 4.0*xi[1]) -15.0*xi[2]*xi[2]*xi[0]*xi[1]*(c[1]*lamb[1])
486 -15.0*xi[2]*xi[2]*xi[1]*(c[1]*lamb[1]*xi[0] -c[0]*lamb_p[0]*xi[1]);
487 psi1(2,3,0) = 1.0/2.0*xi[2]*xi[2]*xi[2]*(b[1]*b[1]*2.0*xi[0]) + xi[2]*xi[2]*xi[0]*xi[1]*(b[1]*b[2]) + xi[2]*xi[2]*xi[1]*(-b[0]*b[1]*xi[2] + b[1]*b[2]*xi[0] + b[2]*b[0]*xi[1]) + 5.0/2.0*xi[2]*xi[2]*xi[0]*xi[1]*(b[1]*b[1]*lamb[1]) + 5.0/2.0*xi[2]*xi[2]*xi[1]*(b[1]*b[1]*lamb[1]*xi[0] + b[0]*b[0]*lamb_p[0]*xi[1]);
488 psi1(2,4,0) = 1.0/2.0*xi[2]*xi[2]*xi[2]*(c[1]*c[1]*2.0*xi[0]) + xi[2]*xi[2]*xi[0]*xi[1]*( c[1]*c[2]) + xi[2]*xi[2]*xi[1]*(-c[0]*c[1]*xi[2] + c[1]*c[2]*xi[0] + c[2]*c[0]*xi[1])+ 5.0/2.0*xi[2]*xi[2]*xi[0]*xi[1]*(c[1]*c[1]*lamb[1]) + 5.0/2.0*xi[2]*xi[2]*xi[1]*(c[1]*c[1]*lamb[1]*xi[0] + c[0]*c[0]*lamb_p[0]*xi[1]);
489 psi1(2,5,0) = b[2]*c[2]*xi[2]*xi[2]*xi[0]*xi[1] + b[2]*c[2]*xi[2]*xi[2]*xi[1]*(xi[2] + xi[0] + xi[1]) + b[0]*c[0]*xi[2]*xi[2]*xi[1]*(xi[1] - xi[2] - 2.0*xi[0])
490 + b[1]*c[1]*xi[2]*xi[2]*xi[0]*(xi[1] -xi[2]) + b[1]*c[1]*xi[2]*xi[2]*(xi[0]*xi[1] - xi[1]*xi[2] -xi[2]*xi[0] - xi[1]*xi[1]) - 5.0*xi[2]*xi[2]*xi[0]*xi[1]*( b[1]*c[1]*lamb[1]) - 5.0*xi[2]*xi[2]*xi[1]*(b[0]*c[0]*lamb_p[0]*xi[1] + b[1]*c[1]*lamb[1]*xi[0]);
493 psi1(2,0,1) = 5.0*xi[2]*xi[2]*xi[2]*xi[2] + 10.0*xi[2]*xi[2]*xi[2]*2.0*(xi[0]+xi[1]) +30.0*xi[2]*xi[2]*xi[0]*xi[1]*(lamb_p[0]) +30.0*xi[2]*xi[2]*xi[0]*(lamb[1]*xi[0] + lamb_p[0]*xi[1]);
494 psi1(2,1,1) = 3.0*b[2]*xi[2]*xi[2]*xi[0]*xi[1]*(-1.0) + 3.0*b[2]*xi[2]*xi[2]*xi[0]*(xi[0]-xi[1])+ xi[2]*xi[2]*xi[2]*(-b[0])*(xi[2] + 4.0*xi[0] + 4.0*xi[1])+ xi[2]*xi[2]*xi[2]*(b[1]*xi[0] -b[0]*xi[1])*(4.0)+ 15*xi[2]*xi[2]*xi[0]*(b[1]*lamb[1]*xi[0] - b[0]*lamb_p[0]*xi[1]) + 15.0*xi[2]*xi[2]*xi[0]*xi[1]*(-b[0]*lamb_p[0]);
495 psi1(2,2,1) = -3.0*c[2]*xi[2]*xi[2]*xi[0]*xi[1]*(-1.0) + -3.0*c[2]*xi[2]*xi[2]*xi[0]*(xi[0]-xi[1]) - xi[2]*xi[2]*xi[2]*(c[1]*xi[0] - c[0]*xi[1])*(4.0) - xi[2]*xi[2]*xi[2]*(-1.0*c[0])*(xi[2] + 4.0*xi[0] + 4.0*xi[1]) -15.0*xi[2]*xi[2]*xi[0]*xi[1]*( -1.0*c[0]*lamb_p[0]) -15.0*xi[2]*xi[2]*xi[0]*(c[1]*lamb[1]*xi[0] -c[0]*lamb_p[0]*xi[1]);
496 psi1(2,3,1) = 1.0/2.0*xi[2]*xi[2]*xi[2]*(b[0]*b[0]*2.0*xi[1]) + xi[2]*xi[2]*xi[0]*xi[1]*( b[2]*b[0]) + xi[2]*xi[2]*xi[0]*(-b[0]*b[1]*xi[2] + b[1]*b[2]*xi[0] + b[2]*b[0]*xi[1]) + 5.0/2.0*xi[2]*xi[2]*xi[0]*xi[1]*( b[0]*b[0]*lamb_p[0])+ 5.0/2.0*xi[2]*xi[2]*xi[0]*(b[1]*b[1]*lamb[1]*xi[0] + b[0]*b[0]*lamb_p[0]*xi[1]);
497 psi1(2,4,1) = 1.0/2.0*xi[2]*xi[2]*xi[2]*(c[0]*c[0]*2.0*xi[1]) + xi[2]*xi[2]*xi[0]*xi[1]*(c[2]*c[0]) + xi[2]*xi[2]*xi[0]*(-c[0]*c[1]*xi[2] + c[1]*c[2]*xi[0] + c[2]*c[0]*xi[1]) + 5.0/2.0*xi[2]*xi[2]*xi[0]*xi[1]*(c[0]*c[0]*lamb_p[0]) + 5.0/2.0*xi[2]*xi[2]*xi[0]*(c[1]*c[1]*lamb[1]*xi[0] + c[0]*c[0]*lamb_p[0]*xi[1]);
498 psi1(2,5,1) = b[2]*c[2]*xi[2]*xi[2]*xi[0]*xi[1] + b[2]*c[2]*xi[2]*xi[2]*xi[0]*(xi[2] + xi[0] + xi[1]) + b[0]*c[0]*xi[2]*xi[2]*xi[1]*(xi[0] - xi[2]) + b[0]*c[0]*xi[2]*xi[2]*(xi[0]*xi[1] - xi[1]*xi[2] - xi[2]*xi[0] - xi[0]*xi[0]) + b[1]*c[1]*xi[2]*xi[2]*xi[0]*(xi[0] - xi[2] - 2.0*xi[1]) - 5.0*xi[2]*xi[2]*xi[0]*xi[1]*(b[0]*c[0]*lamb_p[0]) - 5.0*xi[2]*xi[2]*xi[0]*(b[0]*c[0]*lamb_p[0]*xi[1] + b[1]*c[1]*lamb[1]*xi[0]);
501 psi1(2,0,2) = 5.0*xi[2]*xi[2]*xi[2]*xi[2] +5.0*4.0*xi[2]*xi[2]*xi[2]*(xi[0]+xi[1]) + 10.0*3.0*xi[2]*xi[2]*(xi[0]+xi[1])*(xi[0]+xi[1])
502 +30.0*2.0*xi[2]*xi[0]*xi[1]*(lamb[1]*xi[0] + lamb_p[0]*xi[1]);
503 psi1(2,1,2) = 3.0*b[2]*2.0*xi[2]*xi[0]*xi[1]*(xi[0]-xi[1]) + 3.0*xi[2]*xi[2]*(b[1]*xi[0] -b[0]*xi[1])*(xi[2] + 4.0*xi[0] + 4.0*xi[1]) + xi[2]*xi[2]*xi[2]*(b[1]*xi[0] -b[0]*xi[1]) + 15*2.0*xi[2]*xi[0]*xi[1]*(b[1]*lamb[1]*xi[0] - b[0]*lamb_p[0]*xi[1]);
504 psi1(2,2,2) = -3.0*c[2]*2.0*xi[2]*xi[0]*xi[1]*(xi[0]-xi[1]) - 3.0*xi[2]*xi[2]*(c[1]*xi[0] -c[0]*xi[1])*(xi[2] + 4.0*xi[0] + 4.0*xi[1]) - xi[2]*xi[2]*xi[2]*(c[1]*xi[0] -c[0]*xi[1]) -15.0*2.0*xi[2]*xi[0]*xi[1]*(c[1]*lamb[1]*xi[0] -c[0]*lamb_p[0]*xi[1]);
505 psi1(2,3,2) = 1.0/2.0*3.0*xi[2]*xi[2]*(b[1]*b[1]*xi[0]*xi[0] + b[0]*b[0]*xi[1]*xi[1]) + 2.0*xi[2]*xi[0]*xi[1]*(-b[0]*b[1]*xi[2] + b[1]*b[2]*xi[0] + b[2]*b[0]*xi[1])
506 + 5.0/2.0*2.0*xi[2]*xi[0]*xi[1]*(b[1]*b[1]*lamb[1]*xi[0] + b[0]*b[0]*lamb_p[0]*xi[1]) + xi[2]*xi[2]*xi[0]*xi[1]*(-b[0])*b[1];
507 psi1(2,4,2) = 1.0/2.0*3.0*xi[2]*xi[2]*(c[1]*c[1]*xi[0]*xi[0] + c[0]*c[0]*xi[1]*xi[1]) + 2.0*xi[2]*xi[0]*xi[1]*(-c[0]*c[1]*xi[2] + c[1]*c[2]*xi[0] + c[2]*c[0]*xi[1])
508 + 5.0/2.0*2.0*xi[2]*xi[0]*xi[1]*(c[1]*c[1]*lamb[1]*xi[0] + c[0]*c[0]*lamb_p[0]*xi[1])+ xi[2]*xi[2]*xi[0]*xi[1]*(-c[0]*c[1]);
509 psi1(2,5,2) = b[2]*c[2]*2.0*xi[2]*xi[0]*xi[1]*(xi[2] + xi[0] + xi[1]) + b[2]*c[2]*xi[2]*xi[2]*xi[0]*xi[1] + b[0]*c[0]*2.0*xi[2]*xi[1]*(xi[0]*xi[1] - xi[1]*xi[2] - xi[2]*xi[0] - xi[0]*xi[0]) + b[0]*c[0]*xi[2]*xi[2]*xi[1]*(-xi[0] - xi[1]) + b[1]*c[1]*2.0*xi[2]*xi[0]*(xi[0]*xi[1] - xi[1]*xi[2] -xi[2]*xi[0] - xi[1]*xi[1]) + b[1]*c[1]*xi[2]*xi[2]*xi[0]*(- xi[1]-xi[0]) - 5.0*2.0*xi[2]*xi[0]*xi[1]*(b[0]*c[0]*lamb_p[0]*xi[1] + b[1]*c[1]*lamb[1]*xi[0]);
512 dpsids(2,0,0) = psi1(2,0,0)*dxids0[0] + psi1(2,0,1)*dxids0[1] + psi1(2,0,2)*dxids0[2];
513 dpsids(2,1,0) = psi1(2,1,0)*dxids0[0] + psi1(2,1,1)*dxids0[1] + psi1(2,1,2)*dxids0[2];
514 dpsids(2,2,0) = psi1(2,2,0)*dxids0[0] + psi1(2,2,1)*dxids0[1] + psi1(2,2,2)*dxids0[2];
515 dpsids(2,3,0) = psi1(2,3,0)*dxids0[0] + psi1(2,3,1)*dxids0[1] + psi1(2,3,2)*dxids0[2];
516 dpsids(2,4,0) = psi1(2,4,0)*dxids0[0] + psi1(2,4,1)*dxids0[1] + psi1(2,4,2)*dxids0[2];
517 dpsids(2,5,0) = psi1(2,5,0)*dxids0[0] + psi1(2,5,1)*dxids0[1] + psi1(2,5,2)*dxids0[2];
520 dpsids(2,0,1) = psi1(2,0,0)*dxids1[0] + psi1(2,0,1)*dxids1[1] + psi1(2,0,2)*dxids1[2];
521 dpsids(2,1,1) = psi1(2,1,0)*dxids1[0] + psi1(2,1,1)*dxids1[1] + psi1(2,1,2)*dxids1[2];
522 dpsids(2,2,1) = psi1(2,2,0)*dxids1[0] + psi1(2,2,1)*dxids1[1] + psi1(2,2,2)*dxids1[2];
523 dpsids(2,3,1) = psi1(2,3,0)*dxids1[0] + psi1(2,3,1)*dxids1[1] + psi1(2,3,2)*dxids1[2];
524 dpsids(2,4,1) = psi1(2,4,0)*dxids1[0] + psi1(2,4,1)*dxids1[1] + psi1(2,4,2)*dxids1[2];
525 dpsids(2,5,1) = psi1(2,5,0)*dxids1[0] + psi1(2,5,1)*dxids1[1] + psi1(2,5,2)*dxids1[2];
531 dBshape_local(s,psi,dpsids,position);
536 phi[0] = position(2,0) + (position(0,0) - position(2,0))*s[0] + (position(1,0) - position(2,0))*s[1];
537 phi[1] = position(2,1) + (position(0,1) - position(2,1))*s[0] + (position(1,1) - position(2,1))*s[1];
539 double A = ( (position(1,0)*position(2,1)-position(2,0)*position(1,1)) - (position(0,0)*position(2,1)-position(2,0)*position(0,1)) + (position(0,0)*position(1,1)-position(1,0)*position(0,1)))/2.0;
541 A0 = ( (position(1,0)*position(2,1)-position(2,0)*position(1,1)) - (phi[0]*position(2,1)-position(2,0)*phi[1]) + (phi[0]*position(1,1)-position(1,0)*phi[1]))/2.0;
542 A1 = ( (phi[0]*position(2,1)-position(2,0)*phi[1]) - (position(0,0)*position(2,1)-position(2,0)*position(0,1)) + (position(0,0)*phi[1]-phi[0]*position(0,1)))/2.0;
543 A2 = ( (position(1,0)*phi[1]-phi[0]*position(1,1)) - (position(0,0)*phi[1]-phi[0]*position(0,1)) + (position(0,0)*position(1,1)-position(1,0)*position(0,1)))/2.0;
559 b[1] = position(0,0)-position(2,0);
560 b[2] = position(1,0)-position(0,0);
561 b[0] = position(2,0)-position(1,0);
563 c[1] = position(2,1)-position(0,1);
564 c[2] = position(0,1)-position(1,1);
565 c[0] = position(1,1)-position(2,1);
570 v[0] = (position(2,0)-position(1,0));
571 v[1] = (position(2,1)-position(1,1));
572 double m = v[1]/v[0];
573 a[0] = position(1,0);
574 a[1] = position(1,1);
575 cc[0] = position(0,0);
576 cc[1] = position(0,1);
580 pp[1] = ( v[0]*m*a[1] + v[1]*cc[1] - v[0]*a[0] + v[0]*cc[0] )/((v[0]*m)+v[1]);
581 pp[0] = (pp[1]-a[1])*m + a[0];
585 pp[0] = (v[1]*m*a[0] + v[1]*cc[1] - v[1]*a[1] + v[0]*cc[0])/(v[1]*m+v[0]);
586 pp[1] = m*(pp[0]-a[0]) + a[1];
588 double l = sqrt(v[0]*v[0] + v[1]*v[1]);
589 double l1 = sqrt( (pp[0]-a[0])*(pp[0]-a[0]) + (pp[1]-a[1])*(pp[1]-a[1]));
591 lamb[0] = 1-lamb_p[0];
594 v[0] = (position(0,0)-position(2,0));
595 v[1] = (position(0,1)-position(2,1));
597 a[0] = position(2,0);
598 a[1] = position(2,1);
599 cc[0] = position(1,0);
600 cc[1] = position(1,1);
604 pp[1] = ( v[0]*m*a[1] + v[1]*cc[1] - v[0]*a[0] + v[0]*cc[0] )/((v[0]*m)+v[1]);
605 pp[0] = (pp[1]-a[1])*m + a[0];
609 pp[0] = (v[1]*m*a[0] + v[1]*cc[1] - v[1]*a[1] + v[0]*cc[0])/(v[1]*m+v[0]);
610 pp[1] = m*(pp[0]-a[0]) + a[1];
612 l = sqrt(v[0]*v[0] + v[1]*v[1]);
613 l1 = sqrt( (pp[0]-a[0])*(pp[0]-a[0]) + (pp[1]-a[1])*(pp[1]-a[1]));
615 lamb[1] = 1-lamb_p[1];
618 v[0] = (position(1,0)-position(0,0));
619 v[1] = (position(1,1)-position(0,1));
621 a[0] = position(0,0);
622 a[1] = position(0,1);
623 cc[0] = position(2,0);
624 cc[1] = position(2,1);
628 pp[1] = ( v[0]*m*a[1] + v[1]*cc[1] - v[0]*a[0] + v[0]*cc[0] )/((v[0]*m)+v[1]);
629 pp[0] = (pp[1]-a[1])*m + a[0];
633 pp[0] = (v[1]*m*a[0] + v[1]*cc[1] - v[1]*a[1] + v[0]*cc[0])/(v[1]*m+v[0]);
634 pp[1] = m*(pp[0]-a[0]) + a[1];
636 l = sqrt(v[0]*v[0] + v[1]*v[1]);
637 l1 = sqrt( (pp[0]-a[0])*(pp[0]-a[0]) + (pp[1]-a[1])*(pp[1]-a[1]));
639 lamb[2] = 1-lamb_p[2];
644 dxids0[0] = c[0]/A/2.0;
645 dxids0[1] = c[1]/A/2.0;
646 dxids0[2] = c[2]/A/2.0;
648 dxids1[0] = b[0]/A/2.0;
649 dxids1[1] = b[1]/A/2.0;
650 dxids1[2] = b[2]/A/2.0;
659 psi2(0,0,0) = 5.0*4.0*xi[0]*xi[0]*xi[0] +5.0*4.0*3.0*xi[0]*xi[0]*(xi[1]+xi[2]) + 10.0*3.0*2.0*xi[0]*(xi[1]+xi[2])*(xi[1]+xi[2]) +30.0*2.0*xi[1]*xi[2]*(lamb[2]*xi[1] + lamb_p[1]*xi[2]);
660 psi2(0,1,0) = 3.0*b[0]*2.0*xi[1]*xi[2]*(xi[1]-xi[2]) + 3.0*2.0*xi[0]*(b[2]*xi[1] -b[1]*xi[2])*(xi[0] + 4.0*xi[1] + 4.0*xi[2]) + 6.0*xi[0]*xi[0]*(b[2]*xi[1] -b[1]*xi[2]) + 15*2.0*xi[1]*xi[2]*(b[2]*lamb[2]*xi[1] - b[1]*lamb_p[1]*xi[2]);
661 psi2(0,2,0) = -6.0*c[0]*xi[1]*xi[2]*(xi[1]-xi[2]) - 3.0*2.0*xi[0]*(c[2]*xi[1] -c[1]*xi[2])*(xi[0] + 4.0*xi[1] + 4.0*xi[2]) - 6.0*xi[0]*xi[0]*(c[2]*xi[1] -c[1]*xi[2]) -15.0*2.0*xi[1]*xi[2]*(c[2]*lamb[2]*xi[1] -c[1]*lamb_p[1]*xi[2]);
662 psi2(0,3,0) = 3.0*xi[0]*(b[2]*b[2]*xi[1]*xi[1] + b[1]*b[1]*xi[2]*xi[2]) + 2.0*xi[1]*xi[2]*(-b[1]*b[2]*xi[0] + b[2]*b[0]*xi[1] + b[0]*b[1]*xi[2]) - 4.0*xi[0]*xi[1]*xi[2]*(b[1]*b[2])
663 + 5.0*xi[1]*xi[2]*(b[2]*b[2]*lamb[2]*xi[1] + b[1]*b[1]*lamb_p[1]*xi[2]);
664 psi2(0,4,0) = 3.0*xi[0]*(c[2]*c[2]*xi[1]*xi[1] + c[1]*c[1]*xi[2]*xi[2]) + 2.0*xi[1]*xi[2]*(-c[1]*c[2]*xi[0] + c[2]*c[0]*xi[1] + c[0]*c[1]*xi[2]) - 4.0*xi[0]*xi[1]*xi[2]*(c[1]*c[2]) + 5.0*xi[1]*xi[2]*(c[2]*c[2]*lamb[2]*xi[1] + c[1]*c[1]*lamb_p[1]*xi[2]);
665 psi2(0,5,0) = b[0]*c[0]*2.0*xi[1]*xi[2]*(xi[0] + xi[1] + xi[2]) + b[0]*c[0]*2.0*xi[0]*xi[1]*xi[2] + b[0]*c[0]*2.0*xi[0]*xi[1]*xi[2] + b[1]*c[1]*2.0*xi[2]*(xi[1]*xi[2] - xi[2]*xi[0] - xi[0]*xi[1] - xi[1]*xi[1]) - b[1]*c[1]*4.0*xi[0]*xi[2]*(xi[2] +xi[1]) + b[2]*c[2]*2.0*xi[1]*(xi[1]*xi[2] - xi[2]*xi[0] -xi[0]*xi[1] - xi[2]*xi[2]) - b[2]*c[2]*4.0*xi[0]*xi[1]*(xi[2]+xi[1]) - 5.0*2.0*xi[1]*xi[2]*(b[1]*c[1]*lamb_p[1]*xi[2] + b[2]*c[2]*lamb[2]*xi[1]);
668 psi2(0,0,1) = 10.0*xi[0]*xi[0]*xi[0]*2.0 + 30.0*xi[0]*xi[0]*xi[2]*(lamb[2]) + 30.0*xi[0]*xi[0]*xi[2]*(lamb[2]);
669 psi2(0,1,1) = 3.0*b[0]*xi[0]*xi[0]*xi[2] + 3.0*b[0]*xi[0]*xi[0]*xi[2] + xi[0]*xi[0]*xi[0]*(b[2])*(4.0) + xi[0]*xi[0]*xi[0]*(b[2])*(4.0) + 15*xi[0]*xi[0]*xi[2]*(b[2]*lamb[2]) + 15*xi[0]*xi[0]*xi[2]*(b[2]*lamb[2]);
670 psi2(0,2,1) = -6.0*c[0]*xi[0]*xi[0]*xi[2] - 8.0*xi[0]*xi[0]*xi[0]*(c[2]) - 30.0*xi[0]*xi[0]*xi[2]*(c[2]*lamb[2]);
671 psi2(0,3,1) = xi[0]*xi[0]*xi[0]*(b[2]*b[2]) + 2.0*xi[0]*xi[0]*xi[2]*(b[2]*b[0]) + 5.0*xi[0]*xi[0]*xi[2]*(b[2]*b[2]*lamb[2]);
672 psi2(0,4,1) = xi[0]*xi[0]*xi[0]*(c[2]*c[2]) + 2.0*xi[0]*xi[0]*xi[2]*(c[2]*c[0]) + 5.0*xi[0]*xi[0]*xi[2]*(c[2]*c[2]*lamb[2]);
673 psi2(0,5,1) = b[0]*c[0]*xi[0]*xi[0]*xi[2] + b[0]*c[0]*xi[0]*xi[0]*xi[2] - 2.0*b[1]*c[1]*xi[0]*xi[0]*xi[2] - 2.0*b[2]*c[2]*xi[0]*xi[0]*(xi[0]-xi[2])- 10.0*xi[0]*xi[0]*xi[2]*(b[2]*c[2]*lamb[2]);
676 psi2(0,0,2) = 10.0*xi[0]*xi[0]*xi[0]*2.0 + 30.0*xi[0]*xi[0]*xi[1]*(lamb_p[1]) +30.0*xi[0]*xi[0]*xi[1]*(lamb_p[1]);
677 psi2(0,1,2) = -6.0*b[0]*xi[0]*xi[0]*xi[1] - 8.0*xi[0]*xi[0]*xi[0]*(b[1]) - 30.0*xi[0]*xi[0]*xi[1]*(b[1]*lamb_p[1]);
678 psi2(0,2,2) = 6.0*c[0]*xi[0]*xi[0]*xi[1] + 8.0*xi[0]*xi[0]*xi[0]*(c[1]) + 30.0*xi[0]*xi[0]*xi[1]*(c[1]*lamb_p[1]);
679 psi2(0,3,2) = xi[0]*xi[0]*xi[0]*(b[1]*b[1]) + 2.0*xi[0]*xi[0]*xi[1]*(b[0]*b[1]) + 5.0*xi[0]*xi[0]*xi[1]*(b[1]*b[1]*lamb_p[1]);
680 psi2(0,4,2) = xi[0]*xi[0]*xi[0]*(c[1]*c[1]) + 2.0*xi[0]*xi[0]*xi[1]*(c[0]*c[1]) + 5.0*xi[0]*xi[0]*xi[1]*(c[1]*c[1]*lamb_p[1]);
681 psi2(0,5,2) = b[0]*c[0]*xi[0]*xi[0]*xi[1] + b[0]*c[0]*xi[0]*xi[0]*xi[1] + b[1]*c[1]*xi[0]*xi[0]*(xi[1] - xi[0]) + b[1]*c[1]*xi[0]*xi[0]*(xi[1]- xi[0]) + b[2]*c[2]*xi[0]*xi[0]*xi[1]*(-2.0) - 5.0*xi[0]*xi[0]*xi[1]*(b[1]*c[1]*lamb_p[1]) - 5.0*xi[0]*xi[0]*xi[1]*(b[1]*c[1]*lamb_p[1]);
684 psi2(0,0,3) = 5.0*4.0*xi[0]*xi[0]*xi[0] + 10.0*3.0*xi[0]*xi[0]*2.0*(xi[1]+xi[2]) + 30.0*2.0*xi[0]*xi[2]*(lamb[2]*xi[1] + lamb_p[1]*xi[2]) + 30.0*2.0*xi[0]*xi[1]*xi[2]*(lamb[2]);
685 psi2(0,1,3) = 3.0*b[0]*2.0*xi[0]*xi[2]*(xi[1]-xi[2]) + 3.0*b[0]*2.0*xi[0]*xi[1]*xi[2] + 3.0*xi[0]*xi[0]*(b[2])*(xi[0] + 4.0*xi[1] + 4.0*xi[2])
686 + 3.0*xi[0]*xi[0]*(b[2]*xi[1] -b[1]*xi[2])*(4.0) + xi[0]*xi[0]*xi[0]*(b[2]) + 15*2.0*xi[0]*xi[2]*(b[2]*lamb[2]*xi[1] - b[1]*lamb_p[1]*xi[2]) + 15*2.0*xi[0]*xi[1]*xi[2]*(b[2]*lamb[2]);
687 psi2(0,2,3) = -3.0*c[0]*2.0*xi[0]*xi[2]*(xi[1]-xi[2]) -3.0*c[0]*2.0*xi[0]*xi[1]*xi[2] - 3.0*xi[0]*xi[0]*(c[2])*(xi[0] + 4.0*xi[1] + 4.0*xi[2]) - 3.0*xi[0]*xi[0]*(c[2]*xi[1] -c[1]*xi[2])*(4.0)
688 - xi[0]*xi[0]*xi[0]*(c[2]) -15.0*2.0*xi[0]*xi[2]*(c[2]*lamb[2]*xi[1] -c[1]*lamb_p[1]*xi[2]) -15.0*2.0*xi[0]*xi[1]*xi[2]*(c[2]*lamb[2]);
689 psi2(0,3,3) = 3.0*xi[0]*xi[0]*(b[2]*b[2]*xi[1]) + 2.0*xi[0]*xi[2]*(-b[1]*b[2]*xi[0] + b[2]*b[0]*xi[1] + b[0]*b[1]*xi[2]) + 2.0*xi[0]*xi[1]*xi[2]*(b[2]*b[0])
690 + 5.0/2.0*2.0*xi[0]*xi[2]*(b[2]*b[2]*lamb[2]*xi[1] + b[1]*b[1]*lamb_p[1]*xi[2])+ 5.0/2.0*2.0*xi[0]*xi[1]*xi[2]*(b[2]*b[2]*lamb[2]) + xi[0]*xi[0]*xi[2]*(-b[1])*b[2];
691 psi2(0,4,3) = 3.0*xi[0]*xi[0]*(c[2]*c[2]*xi[1]) + 2.0*xi[0]*xi[2]*(-c[1]*c[2]*xi[0] + c[2]*c[0]*xi[1] + c[0]*c[1]*xi[2]) + 2.0*xi[0]*xi[1]*xi[2]*(c[2]*c[0]) + 5.0*xi[0]*xi[2]*(c[2]*c[2]*lamb[2]*xi[1] + c[1]*c[1]*lamb_p[1]*xi[2]) + 5.0*xi[0]*xi[1]*xi[2]*(c[2]*c[2]*lamb[2])+ xi[0]*xi[0]*xi[2]*(-c[1])*c[2];
692 psi2(0,5,3) = b[0]*c[0]*2.0*xi[0]*xi[2]*(xi[0] + xi[1] + xi[2]) + b[0]*c[0]*2.0*xi[0]*xi[1]*xi[2] + b[0]*c[0]*xi[0]*xi[0]*xi[2] + b[1]*c[1]*2.0*xi[0]*xi[2]*(xi[2] - xi[0] - 2.0*xi[1]) + b[1]*c[1]*xi[0]*xi[0]*xi[2]*(-1.0) + b[2]*c[2]*2.0*xi[0]*(xi[1]*xi[2] - xi[2]*xi[0] -xi[0]*xi[1] - xi[2]*xi[2])+ b[2]*c[2]*2.0*xi[0]*xi[1]*(xi[2]-xi[0]) + b[2]*c[2]*xi[0]*xi[0]*(-xi[2]-xi[1]) + b[2]*c[2]*xi[0]*xi[0]*xi[1]*(-1.0) - 5.0*2.0*xi[0]*xi[2]*(b[1]*c[1]*lamb_p[1]*xi[2] + b[2]*c[2]*lamb[2]*xi[1])- 5.0*2.0*xi[0]*xi[1]*xi[2]*(b[2]*c[2]*lamb[2]);
695 psi2(0,0,4) = 5.0*4.0*xi[0]*xi[0]*xi[0] + 10.0*3.0*xi[0]*xi[0]*2.0*(xi[1]+xi[2]) + 30.0*2.0*xi[0]*xi[1]*(lamb[2]*xi[1] + lamb_p[1]*xi[2]) + 30.0*2.0*xi[0]*xi[1]*xi[2]*(lamb_p[1]);
696 psi2(0,1,4) = 3.0*b[0]*2.0*xi[0]*xi[1]*(xi[1]-xi[2]) + 3.0*b[0]*2.0*xi[0]*xi[1]*xi[2]*(-1.0) - 3.0*xi[0]*xi[0]*(b[1])*(xi[0] + 4.0*xi[1] + 4.0*xi[2])
697 + 3.0*xi[0]*xi[0]*(b[2]*xi[1] -b[1]*xi[2])*(4.0) + xi[0]*xi[0]*xi[0]*(-b[1]) + 15*2.0*xi[0]*xi[1]*(b[2]*lamb[2]*xi[1] - b[1]*lamb_p[1]*xi[2])
698 - 15*2.0*xi[0]*xi[1]*xi[2]*(b[1]*lamb_p[1]);
699 psi2(0,2,4) = -3.0*c[0]*2.0*xi[0]*xi[1]*(xi[1]-xi[2]) + 3.0*c[0]*2.0*xi[0]*xi[1]*xi[2] + 3.0*xi[0]*xi[0]*(c[1])*(xi[0] + 4.0*xi[1] + 4.0*xi[2])
700 - 3.0*xi[0]*xi[0]*(c[2]*xi[1] -c[1]*xi[2])*(4.0) + xi[0]*xi[0]*xi[0]*(c[1]) - 15.0*2.0*xi[0]*xi[1]*(c[2]*lamb[2]*xi[1] -c[1]*lamb_p[1]*xi[2])
701 + 15.0*2.0*xi[0]*xi[1]*xi[2]*(c[1]*lamb_p[1]);
702 psi2(0,3,4) = 3.0*xi[0]*xi[0]*(b[1]*b[1]*xi[2]) + 2.0*xi[0]*xi[1]*(-b[1]*b[2]*xi[0] + b[2]*b[0]*xi[1] + b[0]*b[1]*xi[2])
703 + 2.0*xi[0]*xi[1]*xi[2]*(b[0]*b[1]) + 5.0/2.0*2.0*xi[0]*xi[1]*(b[2]*b[2]*lamb[2]*xi[1] + b[1]*b[1]*lamb_p[1]*xi[2]) + 5.0/2.0*2.0*xi[0]*xi[1]*xi[2]*(b[1]*b[1]*lamb_p[1]) + xi[0]*xi[0]*xi[1]*(-b[1])*b[2];
704 psi2(0,4,4) = 3.0*xi[0]*xi[0]*(c[1]*c[1]*xi[2]) + 2.0*xi[0]*xi[1]*(-c[1]*c[2]*xi[0] + c[2]*c[0]*xi[1] + c[0]*c[1]*xi[2]) + 2.0*xi[0]*xi[1]*xi[2]*(c[0]*c[1]) + 5.0*xi[0]*xi[1]*(c[2]*c[2]*lamb[2]*xi[1] + c[1]*c[1]*lamb_p[1]*xi[2]) + 5.0*xi[0]*xi[1]*xi[2]*(c[1]*c[1]*lamb_p[1]) - xi[0]*xi[0]*xi[1]*(c[1])*c[2];
705 psi2(0,5,4) = b[0]*c[0]*2.0*xi[0]*xi[1]*xi[2] + b[0]*c[0]*2.0*xi[0]*xi[1]*(xi[0] + xi[1] + xi[2]) + b[0]*c[0]*xi[0]*xi[0]*xi[1] + b[1]*c[1]*2.0*xi[0]*(xi[1]*xi[2] - xi[2]*xi[0] - xi[0]*xi[1] - xi[1]*xi[1])
706 + b[1]*c[1]*2.0*xi[0]*xi[2]*(xi[1]- xi[0]) + b[1]*c[1]*xi[0]*xi[0]*(-xi[1] - xi[2])+ b[1]*c[1]*xi[0]*xi[0]*xi[2]*(-1.0)
707 + b[2]*c[2]*2.0*xi[0]*xi[1]*(xi[1]-xi[0]- 2.0*xi[2]) + b[2]*c[2]*xi[0]*xi[0]*xi[1]*(-1.0)- 5.0*2.0*xi[0]*xi[1]*(b[1]*c[1]*lamb_p[1]*xi[2] + b[2]*c[2]*lamb[2]*xi[1]) - 5.0*2.0*xi[0]*xi[1]*xi[2]*(b[1]*c[1]*lamb_p[1]);
710 psi2(0,0,5) = 10.0*xi[0]*xi[0]*xi[0]*2.0 + 30.0*xi[0]*xi[0]*(lamb[2]*xi[1] + lamb_p[1]*xi[2]) + 30.0*xi[0]*xi[0]*xi[2]*(lamb_p[1]) + 30.0*xi[0]*xi[0]*xi[1]*(lamb[2]);
711 psi2(0,1,5) = 3.0*b[0]*xi[0]*xi[0]*(xi[1]-xi[2]) - 3.0*b[0]*xi[0]*xi[0]*xi[2] + 3.0*b[0]*xi[0]*xi[0]*xi[1] + xi[0]*xi[0]*xi[0]*(-b[1])*(4.0) + xi[0]*xi[0]*xi[0]*(b[2])*(4.0)+ 15*xi[0]*xi[0]*(b[2]*lamb[2]*xi[1] - b[1]*lamb_p[1]*xi[2])+ 15*xi[0]*xi[0]*xi[2]*(-b[1]*lamb_p[1]) +15*xi[0]*xi[0]*xi[1]*(b[2]*lamb[2]);
712 psi2(0,2,5) = -3.0*c[0]*xi[0]*xi[0]*xi[1] + 3.0*c[0]*xi[0]*xi[0]*xi[2] - 3.0*c[0]*xi[0]*xi[0]*(xi[1]-xi[2]) + xi[0]*xi[0]*xi[0]*(c[1])*(4.0) - xi[0]*xi[0]*xi[0]*(c[2])*(4.0) -15.0*xi[0]*xi[0]*xi[1]*(c[2]*lamb[2])
713 + 15.0*xi[0]*xi[0]*xi[2]*(c[1]*lamb_p[1]) - 15.0*xi[0]*xi[0]*(c[2]*lamb[2]*xi[1] -c[1]*lamb_p[1]*xi[2]);
714 psi2(0,3,5) = xi[0]*xi[0]*xi[2]*(b[0]*b[1]) + xi[0]*xi[0]*(-b[1]*b[2]*xi[0] + b[2]*b[0]*xi[1] + b[0]*b[1]*xi[2]) + xi[0]*xi[0]*xi[1]*(b[2]*b[0]) + 5.0/2.0*xi[0]*xi[0]*xi[2]*(b[1]*b[1]*lamb_p[1]) + 5.0/2.0*xi[0]*xi[0]*(b[2]*b[2]*lamb[2]*xi[1] + b[1]*b[1]*lamb_p[1]*xi[2])+ 5.0/2.0*xi[0]*xi[0]*xi[1]*(b[2]*b[2]*lamb[2]);
715 psi2(0,4,5) = xi[0]*xi[0]*xi[1]*(c[2]*c[0]) + xi[0]*xi[0]*(-c[1]*c[2]*xi[0] + c[2]*c[0]*xi[1] + c[0]*c[1]*xi[2]) + xi[0]*xi[0]*xi[2]*(c[0]*c[1]) + 5.0/2.0*xi[0]*xi[0]*xi[1]*(c[2]*c[2]*lamb[2]) + 5.0/2.0*xi[0]*xi[0]*(c[2]*c[2]*lamb[2]*xi[1] + c[1]*c[1]*lamb_p[1]*xi[2]) + 5.0/2.0*xi[0]*xi[0]*xi[2]*(c[1]*c[1]*lamb_p[1]);
716 psi2(0,5,5) = b[0]*c[0]*xi[0]*xi[0]*xi[1]+ b[0]*c[0]*xi[0]*xi[0]*(xi[0] + xi[1] + xi[2]) + b[0]*c[0]*xi[0]*xi[0]*xi[2] + b[1]*c[1]*xi[0]*xi[0]*(xi[2] - xi[0] - 2.0*xi[1])
717 + b[1]*c[1]*xi[0]*xi[0]*xi[2] + b[2]*c[2]*xi[0]*xi[0]*(xi[1]-xi[0]-2.0*xi[2]) + b[2]*c[2]*xi[0]*xi[0]*xi[1] - 5.0*xi[0]*xi[0]*(b[1]*c[1]*lamb_p[1]*xi[2] + b[2]*c[2]*lamb[2]*xi[1])
718 - 5.0*xi[0]*xi[0]*xi[2]*(b[1]*c[1]*lamb_p[1]) - 5.0*xi[0]*xi[0]*xi[1]*(b[2]*c[2]*lamb[2]);
721 d2psids(0,0,0) = (psi2(0,0,0)*dxids0[0] + psi2(0,0,3)*dxids0[1] + psi2(0,0,4)*dxids0[2])*dxids0[0] +
722 (psi2(0,0,3)*dxids0[0] + psi2(0,0,1)*dxids0[1] + psi2(0,0,5)*dxids0[2])*dxids0[1] +
723 (psi2(0,0,4)*dxids0[0] + psi2(0,0,5)*dxids0[1] + psi2(0,0,2)*dxids0[2])*dxids0[2];
724 d2psids(0,1,0) = (psi2(0,1,0)*dxids0[0] + psi2(0,1,3)*dxids0[1] + psi2(0,1,4)*dxids0[2])*dxids0[0] +
725 (psi2(0,1,3)*dxids0[0] + psi2(0,1,1)*dxids0[1] + psi2(0,1,5)*dxids0[2])*dxids0[1] +
726 (psi2(0,1,4)*dxids0[0] + psi2(0,1,5)*dxids0[1] + psi2(0,1,2)*dxids0[2])*dxids0[2];
727 d2psids(0,2,0) = (psi2(0,2,0)*dxids0[0] + psi2(0,2,3)*dxids0[1] + psi2(0,2,4)*dxids0[2])*dxids0[0] +
728 (psi2(0,2,3)*dxids0[0] + psi2(0,2,1)*dxids0[1] + psi2(0,2,5)*dxids0[2])*dxids0[1] +
729 (psi2(0,2,4)*dxids0[0] + psi2(0,2,5)*dxids0[1] + psi2(0,2,2)*dxids0[2])*dxids0[2];
730 d2psids(0,3,0) = (psi2(0,3,0)*dxids0[0] + psi2(0,3,3)*dxids0[1] + psi2(0,3,4)*dxids0[2])*dxids0[0] +
731 (psi2(0,3,3)*dxids0[0] + psi2(0,3,1)*dxids0[1] + psi2(0,3,5)*dxids0[2])*dxids0[1] +
732 (psi2(0,3,4)*dxids0[0] + psi2(0,3,5)*dxids0[1] + psi2(0,3,2)*dxids0[2])*dxids0[2];
733 d2psids(0,4,0) = (psi2(0,4,0)*dxids0[0] + psi2(0,4,3)*dxids0[1] + psi2(0,4,4)*dxids0[2])*dxids0[0] +
734 (psi2(0,4,3)*dxids0[0] + psi2(0,4,1)*dxids0[1] + psi2(0,4,5)*dxids0[2])*dxids0[1] +
735 (psi2(0,4,4)*dxids0[0] + psi2(0,4,5)*dxids0[1] + psi2(0,4,2)*dxids0[2])*dxids0[2];
736 d2psids(0,5,0) = (psi2(0,5,0)*dxids0[0] + psi2(0,5,3)*dxids0[1] + psi2(0,5,4)*dxids0[2])*dxids0[0] +
737 (psi2(0,5,3)*dxids0[0] + psi2(0,5,1)*dxids0[1] + psi2(0,5,5)*dxids0[2])*dxids0[1] +
738 (psi2(0,5,4)*dxids0[0] + psi2(0,5,5)*dxids0[1] + psi2(0,5,2)*dxids0[2])*dxids0[2];
741 d2psids(0,0,1) = (psi2(0,0,0)*dxids1[0] + psi2(0,0,3)*dxids1[1] + psi2(0,0,4)*dxids1[2])*dxids1[0] +
742 (psi2(0,0,3)*dxids1[0] + psi2(0,0,1)*dxids1[1] + psi2(0,0,5)*dxids1[2])*dxids1[1] +
743 (psi2(0,0,4)*dxids1[0] + psi2(0,0,5)*dxids1[1] + psi2(0,0,2)*dxids1[2])*dxids1[2];
744 d2psids(0,1,1) = (psi2(0,1,0)*dxids1[0] + psi2(0,1,3)*dxids1[1] + psi2(0,1,4)*dxids1[2])*dxids1[0] +
745 (psi2(0,1,3)*dxids1[0] + psi2(0,1,1)*dxids1[1] + psi2(0,1,5)*dxids1[2])*dxids1[1] +
746 (psi2(0,1,4)*dxids1[0] + psi2(0,1,5)*dxids1[1] + psi2(0,1,2)*dxids1[2])*dxids1[2];
747 d2psids(0,2,1) = (psi2(0,2,0)*dxids1[0] + psi2(0,2,3)*dxids1[1] + psi2(0,2,4)*dxids1[2])*dxids1[0] +
748 (psi2(0,2,3)*dxids1[0] + psi2(0,2,1)*dxids1[1] + psi2(0,2,5)*dxids1[2])*dxids1[1] +
749 (psi2(0,2,4)*dxids1[0] + psi2(0,2,5)*dxids1[1] + psi2(0,2,2)*dxids1[2])*dxids1[2];
750 d2psids(0,3,1) = (psi2(0,3,0)*dxids1[0] + psi2(0,3,3)*dxids1[1] + psi2(0,3,4)*dxids1[2])*dxids1[0] +
751 (psi2(0,3,3)*dxids1[0] + psi2(0,3,1)*dxids1[1] + psi2(0,3,5)*dxids1[2])*dxids1[1] +
752 (psi2(0,3,4)*dxids1[0] + psi2(0,3,5)*dxids1[1] + psi2(0,3,2)*dxids1[2])*dxids1[2];
753 d2psids(0,4,1) = (psi2(0,4,0)*dxids1[0] + psi2(0,4,3)*dxids1[1] + psi2(0,4,4)*dxids1[2])*dxids1[0] +
754 (psi2(0,4,3)*dxids1[0] + psi2(0,4,1)*dxids1[1] + psi2(0,4,5)*dxids1[2])*dxids1[1] +
755 (psi2(0,4,4)*dxids1[0] + psi2(0,4,5)*dxids1[1] + psi2(0,4,2)*dxids1[2])*dxids1[2];
756 d2psids(0,5,1) = (psi2(0,5,0)*dxids1[0] + psi2(0,5,3)*dxids1[1] + psi2(0,5,4)*dxids1[2])*dxids1[0] +
757 (psi2(0,5,3)*dxids1[0] + psi2(0,5,1)*dxids1[1] + psi2(0,5,5)*dxids1[2])*dxids1[1] +
758 (psi2(0,5,4)*dxids1[0] + psi2(0,5,5)*dxids1[1] + psi2(0,5,2)*dxids1[2])*dxids1[2];
761 d2psids(0,0,2) = (psi2(0,0,0)*dxids0[0] + psi2(0,0,3)*dxids0[1] + psi2(0,0,4)*dxids0[2])*dxids1[0] +
762 (psi2(0,0,3)*dxids0[0] + psi2(0,0,1)*dxids0[1] + psi2(0,0,5)*dxids0[2])*dxids1[1] +
763 (psi2(0,0,4)*dxids0[0] + psi2(0,0,5)*dxids0[1] + psi2(0,0,2)*dxids0[2])*dxids1[2];
764 d2psids(0,1,2) = (psi2(0,1,0)*dxids0[0] + psi2(0,1,3)*dxids0[1] + psi2(0,1,4)*dxids0[2])*dxids1[0] +
765 (psi2(0,1,3)*dxids0[0] + psi2(0,1,1)*dxids0[1] + psi2(0,1,5)*dxids0[2])*dxids1[1] +
766 (psi2(0,1,4)*dxids0[0] + psi2(0,1,5)*dxids0[1] + psi2(0,1,2)*dxids0[2])*dxids1[2];
767 d2psids(0,2,2) = (psi2(0,2,0)*dxids0[0] + psi2(0,2,3)*dxids0[1] + psi2(0,2,4)*dxids0[2])*dxids1[0] +
768 (psi2(0,2,3)*dxids0[0] + psi2(0,2,1)*dxids0[1] + psi2(0,2,5)*dxids0[2])*dxids1[1] +
769 (psi2(0,2,4)*dxids0[0] + psi2(0,2,5)*dxids0[1] + psi2(0,2,2)*dxids0[2])*dxids1[2];
770 d2psids(0,3,2) = (psi2(0,3,0)*dxids0[0] + psi2(0,3,3)*dxids0[1] + psi2(0,3,4)*dxids0[2])*dxids1[0] +
771 (psi2(0,3,3)*dxids0[0] + psi2(0,3,1)*dxids0[1] + psi2(0,3,5)*dxids0[2])*dxids1[1] +
772 (psi2(0,3,4)*dxids0[0] + psi2(0,3,5)*dxids0[1] + psi2(0,3,2)*dxids0[2])*dxids1[2];
773 d2psids(0,4,2) = (psi2(0,4,0)*dxids0[0] + psi2(0,4,3)*dxids0[1] + psi2(0,4,4)*dxids0[2])*dxids1[0] +
774 (psi2(0,4,3)*dxids0[0] + psi2(0,4,1)*dxids0[1] + psi2(0,4,5)*dxids0[2])*dxids1[1] +
775 (psi2(0,4,4)*dxids0[0] + psi2(0,4,5)*dxids0[1] + psi2(0,4,2)*dxids0[2])*dxids1[2];
776 d2psids(0,5,2) = (psi2(0,5,0)*dxids0[0] + psi2(0,5,3)*dxids0[1] + psi2(0,5,4)*dxids0[2])*dxids1[0] +
777 (psi2(0,5,3)*dxids0[0] + psi2(0,5,1)*dxids0[1] + psi2(0,5,5)*dxids0[2])*dxids1[1] +
778 (psi2(0,5,4)*dxids0[0] + psi2(0,5,5)*dxids0[1] + psi2(0,5,2)*dxids0[2])*dxids1[2];
783 psi2(1,0,1) = 5.0*4.0*xi[1]*xi[1]*xi[1] +5.0*4.0*3.0*xi[1]*xi[1]*(xi[2]+xi[0]) + 10.0*3.0*2.0*xi[1]*(xi[2]+xi[0])*(xi[2]+xi[0]) +30.0*2.0*xi[2]*xi[0]*(lamb[0]*xi[2] + lamb_p[2]*xi[0]);
784 psi2(1,1,1) = 3.0*b[1]*2.0*xi[2]*xi[0]*(xi[2]-xi[0]) + 3.0*2.0*xi[1]*(b[0]*xi[2] -b[2]*xi[0])*(xi[1] + 4.0*xi[2] + 4.0*xi[0])+ 3.0*xi[1]*xi[1]*(b[0]*xi[2] -b[2]*xi[0]) + 3.0*xi[1]*xi[1]*(b[0]*xi[2] -b[2]*xi[0]) + 15*2.0*xi[2]*xi[0]*(b[0]*lamb[0]*xi[2] - b[2]*lamb_p[2]*xi[0]);
785 psi2(1,2,1) = -3.0*c[1]*2.0*xi[2]*xi[0]*(xi[2]-xi[0]) - 3.0*2.0*xi[1]*(c[0]*xi[2] -c[2]*xi[0])*(xi[1] + 4.0*xi[2] + 4.0*xi[0]) - 3.0*xi[1]*xi[1]*(c[0]*xi[2] -c[2]*xi[0]) - 3.0*xi[1]*xi[1]*(c[0]*xi[2] -c[2]*xi[0]) -15.0*2.0*xi[2]*xi[0]*(c[0]*lamb[0]*xi[2] -c[2]*lamb_p[2]*xi[0]);
786 psi2(1,3,1) = 1.0/2.0*3.0*2.0*xi[1]*(b[0]*b[0]*xi[2]*xi[2] + b[2]*b[2]*xi[0]*xi[0]) + 2.0*xi[2]*xi[0]*(-b[2]*b[0]*xi[1] + b[0]*b[1]*xi[2] + b[1]*b[2]*xi[0]) - 4.0*xi[1]*xi[2]*xi[0]*(b[2]*b[0])+ 5.0*xi[2]*xi[0]*(b[0]*b[0]*lamb[0]*xi[2] + b[2]*b[2]*lamb_p[2]*xi[0]);
787 psi2(1,4,1) = 1.0/2.0*3.0*2.0*xi[1]*(c[0]*c[0]*xi[2]*xi[2] + c[2]*c[2]*xi[0]*xi[0]) + 2.0*xi[2]*xi[0]*(-c[2]*c[0]*xi[1] + c[0]*c[1]*xi[2] + c[1]*c[2]*xi[0]) - 4.0*xi[1]*xi[2]*xi[0]*(c[2]*c[0])+ 5.0*xi[2]*xi[0]*(c[0]*c[0]*lamb[0]*xi[2] + c[2]*c[2]*lamb_p[2]*xi[0]);
788 psi2(1,5,1) = b[1]*c[1]*2.0*xi[2]*xi[0]*(xi[1] + xi[2] + xi[0]) + b[1]*c[1]*2.0*xi[1]*xi[2]*xi[0] + b[1]*c[1]*2.0*xi[1]*xi[2]*xi[0] + b[2]*c[2]*2.0*xi[0]*(xi[2]*xi[0] - xi[0]*xi[1] - xi[1]*xi[2] - xi[2]*xi[2]) - 4.0*b[2]*c[2]*xi[1]*xi[0]*(xi[0]+xi[2]) + b[0]*c[0]*2.0*xi[2]*(xi[2]*xi[0] - xi[0]*xi[1] -xi[1]*xi[2] - xi[0]*xi[0]) - 4.0*b[0]*c[0]*2.0*xi[1]*xi[2]*(xi[0]+xi[2]) - 5.0*2.0*xi[2]*xi[0]*(b[2]*c[2]*lamb_p[2]*xi[0] + b[0]*c[0]*lamb[0]*xi[2]);
791 psi2(1,0,2) = 10.0*xi[1]*xi[1]*xi[1]*2.0 +30.0*xi[1]*xi[1]*xi[0]*(lamb[0]) +30.0*xi[1]*xi[1]*xi[0]*(lamb[0]);
792 psi2(1,1,2) = 3.0*b[1]*xi[1]*xi[1]*xi[0]+ 3.0*b[1]*xi[1]*xi[1]*xi[0] + xi[1]*xi[1]*xi[1]*(b[0])*(4.0)+ xi[1]*xi[1]*xi[1]*(b[0])*(4.0)+ 15*xi[1]*xi[1]*xi[0]*(b[0]*lamb[0]) + 15*xi[1]*xi[1]*xi[0]*(b[0]*lamb[0]);
793 psi2(1,2,2) = -3.0*c[1]*xi[1]*xi[1]*xi[0]- 3.0*c[1]*xi[1]*xi[1]*xi[0]- xi[1]*xi[1]*xi[1]*(c[0])*(4.0) - xi[1]*xi[1]*xi[1]*(c[0])*(4.0) -15.0*xi[1]*xi[1]*xi[0]*(c[0]*lamb[0])-15.0*xi[1]*xi[1]*xi[0]*(c[0]*lamb[0]);
794 psi2(1,3,2) = 1.0/2.0*xi[1]*xi[1]*xi[1]*(b[0]*b[0]*2.0) + xi[1]*xi[1]*xi[0]*(b[0]*b[1]) + xi[1]*xi[1]*xi[0]*(b[0]*b[1]) + 5.0*xi[1]*xi[1]*xi[0]*(b[0]*b[0]*lamb[0]);
795 psi2(1,4,2) = 1.0/2.0*xi[1]*xi[1]*xi[1]*(c[0]*c[0]*2.0) + xi[1]*xi[1]*xi[0]*(c[0]*c[1]) + xi[1]*xi[1]*xi[0]*(c[0]*c[1]) + 5.0*xi[1]*xi[1]*xi[0]*(c[0]*c[0]*lamb[0]);
796 psi2(1,5,2) = b[1]*c[1]*xi[1]*xi[1]*xi[0] + b[1]*c[1]*xi[1]*xi[1]*xi[0] + b[2]*c[2]*xi[1]*xi[1]*xi[0]*(-2.0) + b[0]*c[0]*xi[1]*xi[1]*(xi[0]-xi[1]) + b[0]*c[0]*xi[1]*xi[1]*(xi[0]-xi[1]) - 5.0*xi[1]*xi[1]*xi[0]*( b[0]*c[0]*lamb[0]) - 5.0*xi[1]*xi[1]*xi[0]*(b[0]*c[0]*lamb[0]);
799 psi2(1,0,0) = 10.0*xi[1]*xi[1]*xi[1]*2.0 +30.0*xi[1]*xi[1]*xi[2]*(lamb_p[2]) +30.0*xi[1]*xi[1]*xi[2]*(lamb_p[2]);
800 psi2(1,1,0) = -6.0*b[1]*xi[1]*xi[1]*xi[2] + xi[1]*xi[1]*xi[1]*(-b[2])*( 4.0)+ xi[1]*xi[1]*xi[1]*(-b[2])*(4.0) - 30*xi[1]*xi[1]*xi[2]*(b[2]*lamb_p[2]);
801 psi2(1,2,0) = 3.0*c[1]*xi[1]*xi[1]*xi[2] + 3.0*c[1]*xi[1]*xi[1]*xi[2] + xi[1]*xi[1]*xi[1]*(c[2])*(4.0) + xi[1]*xi[1]*xi[1]*(c[2])*(4.0) + 30.0*xi[1]*xi[1]*xi[2]*(c[2]*lamb_p[2]);
802 psi2(1,3,0) = xi[1]*xi[1]*xi[1]*(b[2]*b[2]) + 2.0*xi[1]*xi[1]*xi[2]*(b[1]*b[2]) + 5.0*xi[1]*xi[1]*xi[2]*(b[2]*b[2]*lamb_p[2]);
803 psi2(1,4,0) = xi[1]*xi[1]*xi[1]*(c[2]*c[2]) + 2.0*xi[1]*xi[1]*xi[2]*(c[1]*c[2]) + 5.0*xi[1]*xi[1]*xi[2]*(c[2]*c[2]*lamb_p[2]);
804 psi2(1,5,0) = 2.0*b[1]*c[1]*xi[1]*xi[1]*xi[2] + b[2]*c[2]*xi[1]*xi[1]*(xi[2] - xi[1]) + b[2]*c[2]*xi[1]*xi[1]*(xi[2]- xi[1]) + b[0]*c[0]*xi[1]*xi[1]*xi[2]*(-2.0) - 5.0*xi[1]*xi[1]*xi[2]*(b[2]*c[2]*lamb_p[2]) - 5.0*xi[1]*xi[1]*xi[2]*(b[2]*c[2]*lamb_p[2]);
807 psi2(1,0,3) = 5.0*4.0*xi[1]*xi[1]*xi[1] + 10.0*3.0*xi[1]*xi[1]*2.0*(xi[2]+xi[0])+ 30.0*2.0*xi[1]*xi[2]*xi[0]*(lamb_p[2])+30.0*2.0*xi[1]*xi[2]*(lamb[0]*xi[2] + lamb_p[2]*xi[0]);
808 psi2(1,1,3) = 3.0*b[1]*2.0*xi[1]*xi[2]*(xi[2]-xi[0]) + 3.0*b[1]*2.0*xi[1]*xi[2]*xi[0]*(-1.0)+ 3.0*xi[1]*xi[1]*(-b[2])*(xi[1] + 4.0*xi[2] + 4.0*xi[0]) + 3.0*xi[1]*xi[1]*(b[0]*xi[2] -b[2]*xi[0])*(4.0) + xi[1]*xi[1]*xi[1]*(-b[2]) + 15*2.0*xi[1]*xi[2]*(b[0]*lamb[0]*xi[2] - b[2]*lamb_p[2]*xi[0])+ 15*2.0*xi[1]*xi[2]*xi[0]*(-b[2]*lamb_p[2]);
809 psi2(1,2,3) = 3.0*c[1]*2.0*xi[1]*xi[2]*xi[0] -3.0*c[1]*2.0*xi[1]*xi[2]*(xi[2]-xi[0]) - 3.0*xi[1]*xi[1]*(c[0]*xi[2] - c[2]*xi[0])*(4.0) + 3.0*xi[1]*xi[1]*(c[2])*(xi[1] + 4.0*xi[2] + 4.0*xi[0]) + xi[1]*xi[1]*xi[1]*(c[2]) + 15.0*2.0*xi[1]*xi[2]*xi[0]*(c[2]*lamb_p[2]) - 15.0*2.0*xi[1]*xi[2]*(c[0]*lamb[0]*xi[2] -c[2]*lamb_p[2]*xi[0]);
810 psi2(1,3,3) = 3.0*xi[1]*xi[1]*(b[2]*b[2]*xi[0]) + 2.0*xi[1]*xi[2]*(-b[2]*b[0]*xi[1] + b[0]*b[1]*xi[2] + b[1]*b[2]*xi[0])+ 2.0*xi[1]*xi[2]*xi[0]*(b[1]*b[2]) + 5.0/2.0*2.0*xi[1]*xi[2]*(b[0]*b[0]*lamb[0]*xi[2] + b[2]*b[2]*lamb_p[2]*xi[0])+ 5.0/2.0*2.0*xi[1]*xi[2]*xi[0]*(b[2]*b[2]*lamb_p[2]) + xi[1]*xi[1]*xi[2]*(-b[2])*b[0];
811 psi2(1,4,3) = 3.0*xi[1]*xi[1]*(c[2]*c[2]*xi[0]) + 2.0*xi[1]*xi[2]*(-c[2]*c[0]*xi[1] + c[0]*c[1]*xi[2] + c[1]*c[2]*xi[0]) + 2.0*xi[1]*xi[2]*xi[0]*(c[1]*c[2])+ 5.0/2.0*2.0*xi[1]*xi[2]*(c[0]*c[0]*lamb[0]*xi[2] + c[2]*c[2]*lamb_p[2]*xi[0])+ 5.0/2.0*2.0*xi[1]*xi[2]*xi[0]*(c[2]*c[2]*lamb_p[2])+ xi[1]*xi[1]*xi[2]*(-c[2])*c[0];
812 psi2(1,5,3) = b[1]*c[1]*2.0*xi[1]*xi[2]*xi[0] + b[1]*c[1]*2.0*xi[1]*xi[2]*(xi[1] + xi[2] + xi[0]) + b[1]*c[1]*xi[1]*xi[1]*xi[2] + b[2]*c[2]*2.0*xi[1]*(xi[2]*xi[0] - xi[0]*xi[1] - xi[1]*xi[2] - xi[2]*xi[2]) + b[2]*c[2]*2.0*xi[1]*xi[0]*(xi[2]- xi[1]) + b[2]*c[2]*xi[1]*xi[1]*(-xi[2] - xi[0])+ b[2]*c[2]*xi[1]*xi[1]*xi[0]*(-1.0)
813 + b[0]*c[0]*2.0*xi[1]*xi[2]*(xi[2]-xi[1]- 2.0*xi[0]) + b[0]*c[0]*xi[1]*xi[1]*xi[2]*(-1.0)- 5.0*2.0*xi[1]*xi[2]*(b[2]*c[2]*lamb_p[2]*xi[0] + b[0]*c[0]*lamb[0]*xi[2]) - 5.0*2.0*xi[1]*xi[2]*xi[0]*(b[2]*c[2]*lamb_p[2]);
816 psi2(1,0,4) = 10.0*xi[1]*xi[1]*xi[1]*2.0 + 30.0*xi[1]*xi[1]*(lamb[0]*xi[2] + lamb_p[2]*xi[0]) +30.0*xi[1]*xi[1]*xi[0]*(lamb_p[2]) + 30.0*xi[1]*xi[1]*xi[2]*(lamb[0]);
817 psi2(1,1,4) = 3.0*b[1]*xi[1]*xi[1]*(xi[2]-xi[0]) + 3.0*b[1]*xi[1]*xi[1]*xi[0]*(-1.0)+ 3.0*b[1]*xi[1]*xi[1]*xi[2] + xi[1]*xi[1]*xi[1]*(-b[2])*(4.0)+ xi[1]*xi[1]*xi[1]*(b[0])*(4.0) + 15*xi[1]*xi[1]*(b[0]*lamb[0]*xi[2] - b[2]*lamb_p[2]*xi[0]) + 15*xi[1]*xi[1]*xi[0]*(-b[2]*lamb_p[2]) + 15*xi[1]*xi[1]*xi[2]*(b[0]*lamb[0]);
818 psi2(1,2,4) = 3.0*c[1]*xi[1]*xi[1]*xi[0] - 3.0*c[1]*xi[1]*xi[1]*(xi[2]-xi[0]) - 3.0*c[1]*xi[1]*xi[1]*xi[2] - xi[1]*xi[1]*xi[1]*(c[0])*(4.0) + 4.0*xi[1]*xi[1]*xi[1]*(c[2]) + 15.0*xi[1]*xi[1]*xi[0]*(c[2]*lamb_p[2]) - 15.0*xi[1]*xi[1]*(c[0]*lamb[0]*xi[2] -c[2]*lamb_p[2]*xi[0]) -15.0*xi[1]*xi[1]*xi[2]*(c[0]*lamb[0]);
819 psi2(1,3,4) = xi[1]*xi[1]*xi[0]*(b[1]*b[2]) + xi[1]*xi[1]*(-b[2]*b[0]*xi[1] + b[0]*b[1]*xi[2] + b[1]*b[2]*xi[0]) + xi[1]*xi[1]*xi[2]*(b[0]*b[1]) + 5.0/2.0*xi[1]*xi[1]*xi[0]*(b[2]*b[2]*lamb_p[2]) + 5.0/2.0*xi[1]*xi[1]*(b[0]*b[0]*lamb[0]*xi[2] + b[2]*b[2]*lamb_p[2]*xi[0]) + 5.0/2.0*xi[1]*xi[1]*xi[2]*(b[0]*b[0]*lamb[0]);
820 psi2(1,4,4) = xi[1]*xi[1]*xi[2]*(c[0]*c[1]) + xi[1]*xi[1]*(-c[2]*c[0]*xi[1] + c[0]*c[1]*xi[2] + c[1]*c[2]*xi[0])+ xi[1]*xi[1]*xi[0]*(c[1]*c[2]) + 5.0/2.0*xi[1]*xi[1]*xi[2]*(c[0]*c[0]*lamb[0]) + 5.0/2.0*xi[1]*xi[1]*(c[0]*c[0]*lamb[0]*xi[2] + c[2]*c[2]*lamb_p[2]*xi[0]) + 5.0/2.0*xi[1]*xi[1]*xi[0]*(c[2]*c[2]*lamb_p[2]);
821 psi2(1,5,4) = b[1]*c[1]*xi[1]*xi[1]*xi[2]+ b[1]*c[1]*xi[1]*xi[1]*(xi[1] + xi[2] + xi[0]) + b[1]*c[1]*xi[1]*xi[1]*xi[0] + b[2]*c[2]*xi[1]*xi[1]*(xi[0] - xi[1] - 2.0*xi[2]) + b[2]*c[2]*xi[1]*xi[1]*xi[0] + b[0]*c[0]*xi[1]*xi[1]*xi[2] + b[0]*c[0]*xi[1]*xi[1]*(xi[2]- xi[1] - 2.0*xi[0]) - 5.0*xi[1]*xi[1]*xi[2]*(b[0]*c[0]*lamb[0])- 5.0*xi[1]*xi[1]*(b[2]*c[2]*lamb_p[2]*xi[0] + b[0]*c[0]*lamb[0]*xi[2]) - 5.0*xi[1]*xi[1]*xi[0]*(b[2]*c[2]*lamb_p[2]);
824 psi2(1,0,5) = 5.0*4.0*xi[1]*xi[1]*xi[1] + 10.0*3.0*xi[1]*xi[1]*2.0*(xi[2]+xi[0]) +30.0*2.0*xi[1]*xi[0]*(lamb[0]*xi[2] + lamb_p[2]*xi[0]) + 30.0*2.0*xi[1]*xi[2]*xi[0]*(lamb[0]);
825 psi2(1,1,5) = 3.0*b[1]*2.0*xi[1]*xi[0]*(xi[2]-xi[0])+ 3.0*b[1]*2.0*xi[1]*xi[2]*xi[0] + 3.0*xi[1]*xi[1]*(b[0])*(xi[1] + 4.0*xi[2] + 4.0*xi[0]) + 3.0*xi[1]*xi[1]*(b[0]*xi[2] -b[2]*xi[0])*(4.0) + xi[1]*xi[1]*xi[1]*(b[0])+ 15*2.0*xi[1]*xi[0]*(b[0]*lamb[0]*xi[2] - b[2]*lamb_p[2]*xi[0]) + 15*2.0*xi[1]*xi[2]*xi[0]*(b[0]*lamb[0]);
826 psi2(1,2,5) = -3.0*c[1]*2.0*xi[1]*xi[0]*(xi[2]-xi[0]) -3.0*c[1]*2.0*xi[1]*xi[2]*xi[0] - 3.0*xi[1]*xi[1]*(c[0])*(xi[1] + 4.0*xi[2] + 4.0*xi[0]) - 3.0*xi[1]*xi[1]*(c[0]*xi[2] -c[2]*xi[0])*(4.0) - xi[1]*xi[1]*xi[1]*(c[0]) -15.0*2.0*xi[1]*xi[0]*(c[0]*lamb[0]*xi[2] -c[2]*lamb_p[2]*xi[0]) -15.0*2.0*xi[1]*xi[2]*xi[0]*(c[0]*lamb[0]);
827 psi2(1,3,5) = 3.0*xi[1]*xi[1]*(b[0]*b[0]*xi[2]) + 2.0*xi[1]*xi[0]*(-b[2]*b[0]*xi[1] + b[0]*b[1]*xi[2] + b[1]*b[2]*xi[0]) + 2.0*xi[1]*xi[2]*xi[0]*(b[0]*b[1]) + 5.0/2.0*2.0*xi[1]*xi[0]*(b[0]*b[0]*lamb[0]*xi[2] + b[2]*b[2]*lamb_p[2]*xi[0])+ 5.0/2.0*2.0*xi[1]*xi[2]*xi[0]*(b[0]*b[0]*lamb[0]) + xi[1]*xi[1]*xi[0]*(-b[2])*b[0];
828 psi2(1,4,5) = 3.0*xi[1]*xi[1]*(c[0]*c[0]*xi[2]) + 2.0*xi[1]*xi[0]*(-c[2]*c[0]*xi[1] + c[0]*c[1]*xi[2] + c[1]*c[2]*xi[0]) + 2.0*xi[1]*xi[2]*xi[0]*(c[0]*c[1]) + 5.0/2.0*2.0*xi[1]*xi[0]*(c[0]*c[0]*lamb[0]*xi[2] + c[2]*c[2]*lamb_p[2]*xi[0])+ 5.0/2.0*2.0*xi[1]*xi[2]*xi[0]*(c[0]*c[0]*lamb[0])+ xi[1]*xi[1]*xi[0]*(-c[2])*c[0];
829 psi2(1,5,5) = b[1]*c[1]*2.0*xi[1]*xi[0]*(xi[1] + xi[2] + xi[0]) + b[1]*c[1]*2.0*xi[1]*xi[2]*xi[0] + b[1]*c[1]*xi[1]*xi[1]*xi[0] + b[2]*c[2]*2.0*xi[1]*xi[0]*(xi[0] - xi[1] - 2.0*xi[2]) + b[2]*c[2]*xi[1]*xi[1]*xi[0]*(-1.0) + b[0]*c[0]*2.0*xi[1]*(xi[2]*xi[0] - xi[0]*xi[1] -xi[1]*xi[2] - xi[0]*xi[0]) + b[0]*c[0]*2.0*xi[1]*xi[2]*(xi[0] -xi[1]) + b[0]*c[0]*xi[1]*xi[1]*(- xi[0]-xi[2]) + b[0]*c[0]*xi[1]*xi[1]*xi[2]*(-1.0) - 5.0*2.0*xi[1]*xi[0]*(b[2]*c[2]*lamb_p[2]*xi[0] + b[0]*c[0]*lamb[0]*xi[2]) - 5.0*2.0*xi[1]*xi[2]*xi[0]*(b[0]*c[0]*lamb[0]);
832 d2psids(1,0,0) = (psi2(1,0,0)*dxids0[0] + psi2(1,0,3)*dxids0[1] + psi2(1,0,4)*dxids0[2])*dxids0[0] +
833 (psi2(1,0,3)*dxids0[0] + psi2(1,0,1)*dxids0[1] + psi2(1,0,5)*dxids0[2])*dxids0[1] +
834 (psi2(1,0,4)*dxids0[0] + psi2(1,0,5)*dxids0[1] + psi2(1,0,2)*dxids0[2])*dxids0[2];
835 d2psids(1,1,0) = (psi2(1,1,0)*dxids0[0] + psi2(1,1,3)*dxids0[1] + psi2(1,1,4)*dxids0[2])*dxids0[0] +
836 (psi2(1,1,3)*dxids0[0] + psi2(1,1,1)*dxids0[1] + psi2(1,1,5)*dxids0[2])*dxids0[1] +
837 (psi2(1,1,4)*dxids0[0] + psi2(1,1,5)*dxids0[1] + psi2(1,1,2)*dxids0[2])*dxids0[2];
838 d2psids(1,2,0) = (psi2(1,2,0)*dxids0[0] + psi2(1,2,3)*dxids0[1] + psi2(1,2,4)*dxids0[2])*dxids0[0] +
839 (psi2(1,2,3)*dxids0[0] + psi2(1,2,1)*dxids0[1] + psi2(1,2,5)*dxids0[2])*dxids0[1] +
840 (psi2(1,2,4)*dxids0[0] + psi2(1,2,5)*dxids0[1] + psi2(1,2,2)*dxids0[2])*dxids0[2];
841 d2psids(1,3,0) = (psi2(1,3,0)*dxids0[0] + psi2(1,3,3)*dxids0[1] + psi2(1,3,4)*dxids0[2])*dxids0[0] +
842 (psi2(1,3,3)*dxids0[0] + psi2(1,3,1)*dxids0[1] + psi2(1,3,5)*dxids0[2])*dxids0[1] +
843 (psi2(1,3,4)*dxids0[0] + psi2(1,3,5)*dxids0[1] + psi2(1,3,2)*dxids0[2])*dxids0[2];
844 d2psids(1,4,0) = (psi2(1,4,0)*dxids0[0] + psi2(1,4,3)*dxids0[1] + psi2(1,4,4)*dxids0[2])*dxids0[0] +
845 (psi2(1,4,3)*dxids0[0] + psi2(1,4,1)*dxids0[1] + psi2(1,4,5)*dxids0[2])*dxids0[1] +
846 (psi2(1,4,4)*dxids0[0] + psi2(1,4,5)*dxids0[1] + psi2(1,4,2)*dxids0[2])*dxids0[2];
847 d2psids(1,5,0) = (psi2(1,5,0)*dxids0[0] + psi2(1,5,3)*dxids0[1] + psi2(1,5,4)*dxids0[2])*dxids0[0] +
848 (psi2(1,5,3)*dxids0[0] + psi2(1,5,1)*dxids0[1] + psi2(1,5,5)*dxids0[2])*dxids0[1] +
849 (psi2(1,5,4)*dxids0[0] + psi2(1,5,5)*dxids0[1] + psi2(1,5,2)*dxids0[2])*dxids0[2];
852 d2psids(1,0,1) = (psi2(1,0,0)*dxids1[0] + psi2(1,0,3)*dxids1[1] + psi2(1,0,4)*dxids1[2])*dxids1[0] +
853 (psi2(1,0,3)*dxids1[0] + psi2(1,0,1)*dxids1[1] + psi2(1,0,5)*dxids1[2])*dxids1[1] +
854 (psi2(1,0,4)*dxids1[0] + psi2(1,0,5)*dxids1[1] + psi2(1,0,2)*dxids1[2])*dxids1[2];
855 d2psids(1,1,1) = (psi2(1,1,0)*dxids1[0] + psi2(1,1,3)*dxids1[1] + psi2(1,1,4)*dxids1[2])*dxids1[0] +
856 (psi2(1,1,3)*dxids1[0] + psi2(1,1,1)*dxids1[1] + psi2(1,1,5)*dxids1[2])*dxids1[1] +
857 (psi2(1,1,4)*dxids1[0] + psi2(1,1,5)*dxids1[1] + psi2(1,1,2)*dxids1[2])*dxids1[2];
858 d2psids(1,2,1) = (psi2(1,2,0)*dxids1[0] + psi2(1,2,3)*dxids1[1] + psi2(1,2,4)*dxids1[2])*dxids1[0] +
859 (psi2(1,2,3)*dxids1[0] + psi2(1,2,1)*dxids1[1] + psi2(1,2,5)*dxids1[2])*dxids1[1] +
860 (psi2(1,2,4)*dxids1[0] + psi2(1,2,5)*dxids1[1] + psi2(1,2,2)*dxids1[2])*dxids1[2];
861 d2psids(1,3,1) = (psi2(1,3,0)*dxids1[0] + psi2(1,3,3)*dxids1[1] + psi2(1,3,4)*dxids1[2])*dxids1[0] +
862 (psi2(1,3,3)*dxids1[0] + psi2(1,3,1)*dxids1[1] + psi2(1,3,5)*dxids1[2])*dxids1[1] +
863 (psi2(1,3,4)*dxids1[0] + psi2(1,3,5)*dxids1[1] + psi2(1,3,2)*dxids1[2])*dxids1[2];
864 d2psids(1,4,1) = (psi2(1,4,0)*dxids1[0] + psi2(1,4,3)*dxids1[1] + psi2(1,4,4)*dxids1[2])*dxids1[0] +
865 (psi2(1,4,3)*dxids1[0] + psi2(1,4,1)*dxids1[1] + psi2(1,4,5)*dxids1[2])*dxids1[1] +
866 (psi2(1,4,4)*dxids1[0] + psi2(1,4,5)*dxids1[1] + psi2(1,4,2)*dxids1[2])*dxids1[2];
867 d2psids(1,5,1) = (psi2(1,5,0)*dxids1[0] + psi2(1,5,3)*dxids1[1] + psi2(1,5,4)*dxids1[2])*dxids1[0] +
868 (psi2(1,5,3)*dxids1[0] + psi2(1,5,1)*dxids1[1] + psi2(1,5,5)*dxids1[2])*dxids1[1] +
869 (psi2(1,5,4)*dxids1[0] + psi2(1,5,5)*dxids1[1] + psi2(1,5,2)*dxids1[2])*dxids1[2];
872 d2psids(1,0,2) = (psi2(1,0,0)*dxids0[0] + psi2(1,0,3)*dxids0[1] + psi2(1,0,4)*dxids0[2])*dxids1[0] +
873 (psi2(1,0,3)*dxids0[0] + psi2(1,0,1)*dxids0[1] + psi2(1,0,5)*dxids0[2])*dxids1[1] +
874 (psi2(1,0,4)*dxids0[0] + psi2(1,0,5)*dxids0[1] + psi2(1,0,2)*dxids0[2])*dxids1[2];
875 d2psids(1,1,2) = (psi2(1,1,0)*dxids0[0] + psi2(1,1,3)*dxids0[1] + psi2(1,1,4)*dxids0[2])*dxids1[0] +
876 (psi2(1,1,3)*dxids0[0] + psi2(1,1,1)*dxids0[1] + psi2(1,1,5)*dxids0[2])*dxids1[1] +
877 (psi2(1,1,4)*dxids0[0] + psi2(1,1,5)*dxids0[1] + psi2(1,1,2)*dxids0[2])*dxids1[2];
878 d2psids(1,2,2) = (psi2(1,2,0)*dxids0[0] + psi2(1,2,3)*dxids0[1] + psi2(1,2,4)*dxids0[2])*dxids1[0] +
879 (psi2(1,2,3)*dxids0[0] + psi2(1,2,1)*dxids0[1] + psi2(1,2,5)*dxids0[2])*dxids1[1] +
880 (psi2(1,2,4)*dxids0[0] + psi2(1,2,5)*dxids0[1] + psi2(1,2,2)*dxids0[2])*dxids1[2];
881 d2psids(1,3,2) = (psi2(1,3,0)*dxids0[0] + psi2(1,3,3)*dxids0[1] + psi2(1,3,4)*dxids0[2])*dxids1[0] +
882 (psi2(1,3,3)*dxids0[0] + psi2(1,3,1)*dxids0[1] + psi2(1,3,5)*dxids0[2])*dxids1[1] +
883 (psi2(1,3,4)*dxids0[0] + psi2(1,3,5)*dxids0[1] + psi2(1,3,2)*dxids0[2])*dxids1[2];
884 d2psids(1,4,2) = (psi2(1,4,0)*dxids0[0] + psi2(1,4,3)*dxids0[1] + psi2(1,4,4)*dxids0[2])*dxids1[0] +
885 (psi2(1,4,3)*dxids0[0] + psi2(1,4,1)*dxids0[1] + psi2(1,4,5)*dxids0[2])*dxids1[1] +
886 (psi2(1,4,4)*dxids0[0] + psi2(1,4,5)*dxids0[1] + psi2(1,4,2)*dxids0[2])*dxids1[2];
887 d2psids(1,5,2) = (psi2(1,5,0)*dxids0[0] + psi2(1,5,3)*dxids0[1] + psi2(1,5,4)*dxids0[2])*dxids1[0] +
888 (psi2(1,5,3)*dxids0[0] + psi2(1,5,1)*dxids0[1] + psi2(1,5,5)*dxids0[2])*dxids1[1] +
889 (psi2(1,5,4)*dxids0[0] + psi2(1,5,5)*dxids0[1] + psi2(1,5,2)*dxids0[2])*dxids1[2];
894 psi2(2,0,2) = 5.0*4.0*xi[2]*xi[2]*xi[2] +5.0*4.0*3.0*xi[2]*xi[2]*(xi[0]+xi[1]) + 10.0*3.0*2.0*xi[2]*(xi[0]+xi[1])*(xi[0]+xi[1]) + 30.0*2.0*xi[0]*xi[1]*(lamb[1]*xi[0] + lamb_p[0]*xi[1]);
895 psi2(2,1,2) = 3.0*b[2]*2.0*xi[0]*xi[1]*(xi[0]-xi[1]) + 6.0*xi[2]*xi[2]*(b[1]*xi[0] - b[0]*xi[1]) + 30.0*xi[0]*xi[1]*(b[1]*lamb[1]*xi[0] - b[0]*lamb_p[0]*xi[1]) + 3.0*2.0*xi[2]*(b[1]*xi[0] -b[0]*xi[1])*(xi[2] + 4.0*xi[0] + 4*xi[1]);
896 psi2(2,2,2) = -3.0*c[2]*2.0*xi[0]*xi[1]*(xi[0]-xi[1]) - 3.0*2.0*xi[2]*(c[1]*xi[0] -c[0]*xi[1])*(xi[2] + 4.0*xi[0] + 4.0*xi[1]) - 6.0*xi[2]*xi[2]*(c[1]*xi[0] -c[0]*xi[1]) -15.0*2.0*xi[0]*xi[1]*(c[1]*lamb[1]*xi[0] -c[0]*lamb_p[0]*xi[1]);
897 psi2(2,3,2) = 1.0/2.0*3.0*2.0*xi[2]*(b[1]*b[1]*xi[0]*xi[0] + b[0]*b[0]*xi[1]*xi[1]) + 2.0*xi[0]*xi[1]*(-b[0]*b[1]*xi[2] + b[1]*b[2]*xi[0] + b[2]*b[0]*xi[1]) + 2.0*xi[2]*xi[0]*xi[1]*(-b[0]*b[1])
898 + 5.0/2.0*2.0*xi[0]*xi[1]*(b[1]*b[1]*lamb[1]*xi[0] + b[0]*b[0]*lamb_p[0]*xi[1]) + 2.0*xi[2]*xi[0]*xi[1]*(-b[0])*b[1];
899 psi2(2,4,2) = 1.0/2.0*3.0*2.0*xi[2]*(c[1]*c[1]*xi[0]*xi[0] + c[0]*c[0]*xi[1]*xi[1]) + 2.0*xi[0]*xi[1]*(-c[0]*c[1]*xi[2] + c[1]*c[2]*xi[0] + c[2]*c[0]*xi[1]) + 2.0*xi[2]*xi[0]*xi[1]*(-c[0]*c[1])
900 + 5.0/2.0*2.0*xi[0]*xi[1]*(c[1]*c[1]*lamb[1]*xi[0] + c[0]*c[0]*lamb_p[0]*xi[1])+ 2.0*xi[2]*xi[0]*xi[1]*(-c[0])*c[1];
901 psi2(2,5,2) = b[2]*c[2]*2.0*xi[0]*xi[1]*(xi[2] + xi[0] + xi[1]) + b[2]*c[2]*2.0*xi[2]*xi[0]*xi[1] + b[2]*c[2]*2.0*xi[2]*xi[0]*xi[1] + b[0]*c[0]*2.0*xi[1]*(xi[0]*xi[1] - xi[1]*xi[2] - xi[2]*xi[0] - xi[0]*xi[0]) + b[0]*c[0]*2.0*xi[2]*xi[1]*(-1.0*xi[1] - 1.0*xi[0]) + b[0]*c[0]*2.0*xi[2]*xi[1]*(-xi[0] - xi[1])
902 + b[1]*c[1]*2.0*xi[0]*(xi[0]*xi[1] - xi[1]*xi[2] -xi[2]*xi[0] - xi[1]*xi[1]) + b[1]*c[1]*2.0*xi[2]*xi[0]*(-xi[1] -xi[0])+ b[1]*c[1]*2.0*xi[2]*xi[0]*(- xi[1]-xi[0]) - 5.0*2.0*xi[0]*xi[1]*(b[0]*c[0]*lamb_p[0]*xi[1] + b[1]*c[1]*lamb[1]*xi[0]);
905 psi2(2,0,0) = 10.0*xi[2]*xi[2]*xi[2]*2.0 + 60.0*xi[2]*xi[2]*xi[1]*(lamb[1]);
906 psi2(2,1,0) = 6.0*b[2]*xi[2]*xi[2]*xi[1] + xi[2]*xi[2]*xi[2]*(b[1])*(8.0) + 30*xi[2]*xi[2]*xi[1]*(b[1]*lamb[1]);
907 psi2(2,2,0) =-6.0*c[2]*xi[2]*xi[2]*xi[1] - xi[2]*xi[2]*xi[2]*(c[1])*(8.0) - 30.0*xi[2]*xi[2]*xi[1]*(c[1]*lamb[1]);
908 psi2(2,3,0) = 1.0/2.0*xi[2]*xi[2]*xi[2]*(b[1]*b[1]*2.0) + xi[2]*xi[2]*xi[1]*(b[1]*b[2]) + xi[2]*xi[2]*xi[1]*(b[1]*b[2]) + 5.0/2.0*xi[2]*xi[2]*xi[1]*(b[1]*b[1]*lamb[1]) + 5.0/2.0*xi[2]*xi[2]*xi[1]*(b[1]*b[1]*lamb[1]);
909 psi2(2,4,0) = 1.0/2.0*xi[2]*xi[2]*xi[2]*(c[1]*c[1]*2.0) + xi[2]*xi[2]*xi[1]*( c[1]*c[2]) + xi[2]*xi[2]*xi[1]*(c[1]*c[2])+ 5.0/2.0*xi[2]*xi[2]*xi[1]*(c[1]*c[1]*lamb[1]) + 5.0/2.0*xi[2]*xi[2]*xi[1]*(c[1]*c[1]*lamb[1]);
910 psi2(2,5,0) = b[2]*c[2]*xi[2]*xi[2]*xi[1] + b[2]*c[2]*xi[2]*xi[2]*xi[1] + b[0]*c[0]*xi[2]*xi[2]*xi[1]*(-2.0)
911 + b[1]*c[1]*xi[2]*xi[2]*(xi[1] -xi[2]) + b[1]*c[1]*xi[2]*xi[2]*(xi[1] -xi[2]) - 5.0*xi[2]*xi[2]*xi[1]*( b[1]*c[1]*lamb[1]) - 5.0*xi[2]*xi[2]*xi[1]*(b[1]*c[1]*lamb[1]);
914 psi2(2,0,1) = 10.0*xi[2]*xi[2]*xi[2]*2.0 +30.0*xi[2]*xi[2]*xi[0]*(lamb_p[0]) +30.0*xi[2]*xi[2]*xi[0]*(lamb_p[0]);
915 psi2(2,1,1) = -30.0*b[0]*lamb_p[0]*xi[0]*xi[2]*xi[2] - 6.0*b[2]*xi[2]*xi[2]*xi[0] - xi[2]*xi[2]*xi[2]*(b[0])*(8.0);
916 psi2(2,2,1) = 6.0*c[2]*xi[2]*xi[2]*xi[0] + xi[2]*xi[2]*xi[2]*(c[0])*(8.0) + 30.0*xi[2]*xi[2]*xi[0]*(c[0]*lamb_p[0]);
917 psi2(2,3,1) = 1.0/2.0*xi[2]*xi[2]*xi[2]*(b[0]*b[0]*2.0) + xi[2]*xi[2]*xi[0]*( b[2]*b[0]) + xi[2]*xi[2]*xi[0]*(b[2]*b[0]) + 5.0/2.0*xi[2]*xi[2]*xi[0]*( b[0]*b[0]*lamb_p[0])+ 5.0/2.0*xi[2]*xi[2]*xi[0]*(b[0]*b[0]*lamb_p[0]);
918 psi2(2,4,1) = 1.0/2.0*xi[2]*xi[2]*xi[2]*(c[0]*c[0]*2.0) + xi[2]*xi[2]*xi[0]*(c[2]*c[0]) + xi[2]*xi[2]*xi[0]*(c[2]*c[0]) + 5.0/2.0*xi[2]*xi[2]*xi[0]*(c[0]*c[0]*lamb_p[0]) + 5.0/2.0*xi[2]*xi[2]*xi[0]*(c[0]*c[0]*lamb_p[0]);
919 psi2(2,5,1) = b[2]*c[2]*xi[2]*xi[2]*xi[0] + b[2]*c[2]*xi[2]*xi[2]*xi[0] + b[0]*c[0]*xi[2]*xi[2]*(xi[0] - xi[2]) + b[0]*c[0]*xi[2]*xi[2]*(xi[0]- xi[2]) + b[1]*c[1]*xi[2]*xi[2]*xi[0]*(-2.0) - 5.0*xi[2]*xi[2]*xi[0]*(b[0]*c[0]*lamb_p[0]) - 5.0*xi[2]*xi[2]*xi[0]*(b[0]*c[0]*lamb_p[0]);
922 psi2(2,0,3) = 10.0*xi[2]*xi[2]*xi[2]*2.0 + 30.0*xi[2]*xi[2]*(lamb[1]*xi[0] + lamb_p[0]*xi[1]) + 30.0*xi[2]*xi[2]*xi[0]*(lamb[1]) + 30.0*xi[2]*xi[2]*xi[1]*(lamb_p[0]);
923 psi2(2,1,3) = 3.0*b[2]*xi[2]*xi[2]*(xi[0]-xi[1])-3.0*b[2]*xi[2]*xi[2]*xi[1] + 3.0*b[2]*xi[2]*xi[2]*xi[0] + xi[2]*xi[2]*xi[2]*(b[1])*(4.0)+ xi[2]*xi[2]*xi[2]*(-b[0])*(4.0) + 15*xi[2]*xi[2]*(b[1]*lamb[1]*xi[0] - b[0]*lamb_p[0]*xi[1]) + 15*xi[2]*xi[2]*xi[1]*(-b[0]*lamb_p[0]) + 15*xi[2]*xi[2]*xi[0]*(b[1]*lamb[1]);
924 psi2(2,2,3) = -3.0*c[2]*xi[2]*xi[2]*xi[0] + -3.0*c[2]*xi[2]*xi[2]*(xi[0]-xi[1])+ 3.0*c[2]*xi[2]*xi[2]*xi[1] + xi[2]*xi[2]*xi[2]*(c[0])*(4.0) - xi[2]*xi[2]*xi[2]*(c[1])*(4.0) - 15.0*xi[2]*xi[2]*xi[0]*(c[1]*lamb[1]) - 15.0*xi[2]*xi[2]*(c[1]*lamb[1]*xi[0] -c[0]*lamb_p[0]*xi[1]) + 15.0*xi[2]*xi[2]*xi[1]*(c[0]*lamb_p[0]);
925 psi2(2,3,3) = xi[2]*xi[2]*xi[0]*(b[1]*b[2]) + xi[2]*xi[2]*(-b[0]*b[1]*xi[2] + b[1]*b[2]*xi[0] + b[2]*b[0]*xi[1]) + xi[2]*xi[2]*xi[1]*(b[2]*b[0]) + 5.0/2.0*xi[2]*xi[2]*xi[0]*(b[1]*b[1]*lamb[1]) + 5.0/2.0*xi[2]*xi[2]*(b[1]*b[1]*lamb[1]*xi[0] + b[0]*b[0]*lamb_p[0]*xi[1]) + 5.0/2.0*xi[2]*xi[2]*xi[1]*( b[0]*b[0]*lamb_p[0]);
926 psi2(2,4,3) = xi[2]*xi[2]*xi[0]*(c[1]*c[2]) + xi[2]*xi[2]*(-c[0]*c[1]*xi[2] + c[1]*c[2]*xi[0] + c[2]*c[0]*xi[1]) + xi[2]*xi[2]*xi[1]*(c[2]*c[0])+ 5.0/2.0*xi[2]*xi[2]*xi[0]*(c[1]*c[1]*lamb[1]) + 5.0/2.0*xi[2]*xi[2]*(c[1]*c[1]*lamb[1]*xi[0] + c[0]*c[0]*lamb_p[0]*xi[1]) + 5.0/2.0*xi[2]*xi[2]*xi[1]*(c[0]*c[0]*lamb_p[0]);
927 psi2(2,5,3) = b[2]*c[2]*xi[2]*xi[2]*xi[0] + b[2]*c[2]*xi[2]*xi[2]*(xi[2] + xi[0] + xi[1])+ b[2]*c[2]*xi[2]*xi[2]*xi[1] + b[0]*c[0]*xi[2]*xi[2]*(xi[1] - xi[2] - 2.0*xi[0])+ b[0]*c[0]*xi[2]*xi[2]*xi[1] + b[1]*c[1]*xi[2]*xi[2]*xi[0] + b[1]*c[1]*xi[2]*xi[2]*(xi[0] - xi[2] - 2.0*xi[1]) - 5.0*xi[2]*xi[2]*xi[0]*( b[1]*c[1]*lamb[1]) - 5.0*xi[2]*xi[2]*(b[0]*c[0]*lamb_p[0]*xi[1] + b[1]*c[1]*lamb[1]*xi[0]) - 5.0*xi[2]*xi[2]*xi[1]*(b[0]*c[0]*lamb_p[0]);
930 psi2(2,0,4) = 5.0*4.0*xi[2]*xi[2]*xi[2] + 10.0*3.0*xi[2]*xi[2]*2.0*(xi[0]+xi[1]) + 30.0*2.0*xi[2]*xi[1]*(lamb[1]*xi[0] + lamb_p[0]*xi[1]) + 30.0*2.0*xi[2]*xi[0]*xi[1]*(lamb[1]);
931 psi2(2,1,4) = 3.0*b[2]*2.0*xi[2]*xi[1]*(xi[0]-xi[1]) + 3.0*b[2]*2.0*xi[2]*xi[0]*xi[1] + 3.0*xi[2]*xi[2]*(b[1])*(xi[2] + 4.0*xi[0] + 4.0*xi[1])+ xi[2]*xi[2]*xi[2]*(b[1]) + 12.0*xi[2]*xi[2]*(b[1]*xi[0] - b[0]*xi[1]) + 15*2.0*xi[2]*xi[1]*(b[1]*lamb[1]*xi[0] - b[0]*lamb_p[0]*xi[1]) + 15*2.0*xi[2]*xi[0]*xi[1]*(b[1]*lamb[1]);
932 psi2(2,2,4) = -3.0*c[2]*2.0*xi[2]*xi[1]*(xi[0]-xi[1]) -3.0*c[2]*2.0*xi[2]*xi[0]*xi[1] - 3.0*xi[2]*xi[2]*(c[1])*(xi[2] + 4.0*xi[0] + 4.0*xi[1]) - 3.0*xi[2]*xi[2]*(c[1]*xi[0] -c[0]*xi[1])*(4.0) - xi[2]*xi[2]*xi[2]*(c[1]) -15.0*2.0*xi[2]*xi[1]*(c[1]*lamb[1]*xi[0] -c[0]*lamb_p[0]*xi[1]) -15.0*2.0*xi[2]*xi[0]*xi[1]*(c[1]*lamb[1]);
933 psi2(2,3,4) = 1.0/2.0*3.0*xi[2]*xi[2]*(b[1]*b[1]*2.0*xi[0]) + 2.0*xi[2]*xi[1]*(-b[0]*b[1]*xi[2] + b[1]*b[2]*xi[0] + b[2]*b[0]*xi[1]) + 2.0*xi[2]*xi[0]*xi[1]*(b[1]*b[2])
934 + 5.0/2.0*2.0*xi[2]*xi[1]*(b[1]*b[1]*lamb[1]*xi[0] + b[0]*b[0]*lamb_p[0]*xi[1])+ 5.0/2.0*2.0*xi[2]*xi[0]*xi[1]*(b[1]*b[1]*lamb[1]) + xi[2]*xi[2]*xi[1]*(-b[0])*b[1];
935 psi2(2,4,4) = 1.0/2.0*3.0*xi[2]*xi[2]*(c[1]*c[1]*2.0*xi[0]) + 2.0*xi[2]*xi[1]*(-c[0]*c[1]*xi[2] + c[1]*c[2]*xi[0] + c[2]*c[0]*xi[1]) + 2.0*xi[2]*xi[0]*xi[1]*(c[1]*c[2])
936 + 5.0/2.0*2.0*xi[2]*xi[1]*(c[1]*c[1]*lamb[1]*xi[0] + c[0]*c[0]*lamb_p[0]*xi[1])+ 5.0/2.0*2.0*xi[2]*xi[0]*xi[1]*(c[1]*c[1]*lamb[1])+ xi[2]*xi[2]*xi[1]*(-c[0])*c[1];
937 psi2(2,5,4) = b[2]*c[2]*2.0*xi[2]*xi[1]*(xi[2] + xi[0] + xi[1]) + b[2]*c[2]*2.0*xi[2]*xi[0]*xi[1] + b[2]*c[2]*xi[2]*xi[2]*xi[1] + b[0]*c[0]*2.0*xi[2]*xi[1]*(xi[1] - xi[2] - 2.0*xi[0]) + b[0]*c[0]*xi[2]*xi[2]*xi[1]*(-1.0) + b[1]*c[1]*2.0*xi[2]*(xi[0]*xi[1] - xi[1]*xi[2] -xi[2]*xi[0] - xi[1]*xi[1])+ b[1]*c[1]*2.0*xi[2]*xi[0]*(xi[1] -xi[2]) + b[1]*c[1]*xi[2]*xi[2]*(- xi[1]-xi[0])+ b[1]*c[1]*xi[2]*xi[2]*xi[0]*(-1.0) - 5.0*2.0*xi[2]*xi[1]*(b[0]*c[0]*lamb_p[0]*xi[1] + b[1]*c[1]*lamb[1]*xi[0])- 5.0*2.0*xi[2]*xi[0]*xi[1]*(b[1]*c[1]*lamb[1]);
940 psi2(2,0,5) = 5.0*4.0*xi[2]*xi[2]*xi[2] + 10.0*3.0*xi[2]*xi[2]*2.0*(xi[0]+xi[1]) + 30.0*2.0*xi[2]*xi[0]*(lamb[1]*xi[0] + lamb_p[0]*xi[1]) + 60.0*lamb_p[0]*xi[0]*xi[1]*xi[2];
941 psi2(2,1,5) = 3.0*b[2]*2.0*xi[2]*xi[0]*xi[1]*(-1.0) + 3.0*b[2]*2.0*xi[2]*xi[0]*(xi[0]-xi[1]) + 12.0*xi[2]*xi[2]*(b[1]*xi[0] -b[0]*xi[1])+ 3.0*xi[2]*xi[2]*(-b[0])*(xi[2] + 4.0*xi[0] + 4*xi[1])+ xi[2]*xi[2]*xi[2]*(-b[0]) + 15*2.0*xi[2]*xi[0]*xi[1]*(- b[0]*lamb_p[0]) + 15*2.0*xi[2]*xi[0]*(b[1]*lamb[1]*xi[0] - b[0]*lamb_p[0]*xi[1]);
942 psi2(2,2,5) = 3.0*c[2]*2.0*xi[2]*xi[0]*xi[1] + -3.0*c[2]*2.0*xi[2]*xi[0]*(xi[0]-xi[1]) - 3.0*xi[2]*xi[2]*(c[1]*xi[0] - c[0]*xi[1])*( 4.0) + 3.0*xi[2]*xi[2]*(c[0])*(xi[2] + 4.0*xi[0] + 4.0*xi[1]) + xi[2]*xi[2]*xi[2]*(c[0]) + 15.0*2.0*xi[2]*xi[0]*xi[1]*(c[0]*lamb_p[0]) -15.0*2.0*xi[2]*xi[0]*(c[1]*lamb[1]*xi[0] -c[0]*lamb_p[0]*xi[1]);
943 psi2(2,3,5) = 1.0/2.0*3.0*xi[2]*xi[2]*(b[0]*b[0]*2.0*xi[1]) + 2.0*xi[2]*xi[0]*xi[1]*( b[2]*b[0]) + 2.0*xi[2]*xi[0]*(-b[0]*b[1]*xi[2] + b[1]*b[2]*xi[0] + b[2]*b[0]*xi[1])+ xi[2]*xi[2]*xi[0]*(-b[0]*b[1]) + 5.0/2.0*2.0*xi[2]*xi[0]*xi[1]*( b[0]*b[0]*lamb_p[0])+ 5.0/2.0*2.0*xi[2]*xi[0]*(b[1]*b[1]*lamb[1]*xi[0] + b[0]*b[0]*lamb_p[0]*xi[1]);
944 psi2(2,4,5) = 3.0*xi[2]*xi[2]*(c[0]*c[0]*xi[1]) + 2.0*xi[2]*xi[0]*xi[1]*(c[2]*c[0]) + 2.0*xi[2]*xi[0]*(-c[0]*c[1]*xi[2] + c[1]*c[2]*xi[0] + c[2]*c[0]*xi[1]) + xi[2]*xi[2]*xi[0]*(-c[0]*c[1]) + 5.0/2.0*2.0*xi[2]*xi[0]*xi[1]*(c[0]*c[0]*lamb_p[0]) + 5.0/2.0*2.0*xi[2]*xi[0]*(c[1]*c[1]*lamb[1]*xi[0] + c[0]*c[0]*lamb_p[0]*xi[1]);
945 psi2(2,5,5) = b[2]*c[2]*2.0*xi[2]*xi[0]*xi[1] + b[2]*c[2]*2.0*xi[2]*xi[0]*(xi[2] + xi[0] + xi[1]) + b[2]*c[2]*xi[2]*xi[2]*xi[0] + b[0]*c[0]*xi[2]*xi[2]*xi[1]*(-1.0)+ b[0]*c[0]*2.0*xi[2]*xi[1]*(xi[0] - xi[2]) + b[0]*c[0]*2.0*xi[2]*(xi[0]*xi[1] - xi[1]*xi[2] - xi[2]*xi[0] - xi[0]*xi[0]) + b[0]*c[0]*xi[2]*xi[2]*( -xi[1] -xi[0]) + b[1]*c[1]*2.0*xi[2]*xi[0]*(xi[0] - xi[2] - 2.0*xi[1]) + b[1]*c[1]*xi[2]*xi[2]*xi[0]*(-1.0) - 5.0*2.0*xi[2]*xi[0]*xi[1]*(b[0]*c[0]*lamb_p[0]) - 5.0*2.0*xi[2]*xi[0]*(b[0]*c[0]*lamb_p[0]*xi[1] + b[1]*c[1]*lamb[1]*xi[0]);
948 d2psids(2,0,0) = (psi2(2,0,0)*dxids0[0] + psi2(2,0,3)*dxids0[1] + psi2(2,0,4)*dxids0[2])*dxids0[0] +
949 (psi2(2,0,3)*dxids0[0] + psi2(2,0,1)*dxids0[1] + psi2(2,0,5)*dxids0[2])*dxids0[1] +
950 (psi2(2,0,4)*dxids0[0] + psi2(2,0,5)*dxids0[1] + psi2(2,0,2)*dxids0[2])*dxids0[2];
951 d2psids(2,1,0) = (psi2(2,1,0)*dxids0[0] + psi2(2,1,3)*dxids0[1] + psi2(2,1,4)*dxids0[2])*dxids0[0] +
952 (psi2(2,1,3)*dxids0[0] + psi2(2,1,1)*dxids0[1] + psi2(2,1,5)*dxids0[2])*dxids0[1] +
953 (psi2(2,1,4)*dxids0[0] + psi2(2,1,5)*dxids0[1] + psi2(2,1,2)*dxids0[2])*dxids0[2];
954 d2psids(2,2,0) = (psi2(2,2,0)*dxids0[0] + psi2(2,2,3)*dxids0[1] + psi2(2,2,4)*dxids0[2])*dxids0[0] +
955 (psi2(2,2,3)*dxids0[0] + psi2(2,2,1)*dxids0[1] + psi2(2,2,5)*dxids0[2])*dxids0[1] +
956 (psi2(2,2,4)*dxids0[0] + psi2(2,2,5)*dxids0[1] + psi2(2,2,2)*dxids0[2])*dxids0[2];
957 d2psids(2,3,0) = (psi2(2,3,0)*dxids0[0] + psi2(2,3,3)*dxids0[1] + psi2(2,3,4)*dxids0[2])*dxids0[0] +
958 (psi2(2,3,3)*dxids0[0] + psi2(2,3,1)*dxids0[1] + psi2(2,3,5)*dxids0[2])*dxids0[1] +
959 (psi2(2,3,4)*dxids0[0] + psi2(2,3,5)*dxids0[1] + psi2(2,3,2)*dxids0[2])*dxids0[2];
960 d2psids(2,4,0) = (psi2(2,4,0)*dxids0[0] + psi2(2,4,3)*dxids0[1] + psi2(2,4,4)*dxids0[2])*dxids0[0] +
961 (psi2(2,4,3)*dxids0[0] + psi2(2,4,1)*dxids0[1] + psi2(2,4,5)*dxids0[2])*dxids0[1] +
962 (psi2(2,4,4)*dxids0[0] + psi2(2,4,5)*dxids0[1] + psi2(2,4,2)*dxids0[2])*dxids0[2];
963 d2psids(2,5,0) = (psi2(2,5,0)*dxids0[0] + psi2(2,5,3)*dxids0[1] + psi2(2,5,4)*dxids0[2])*dxids0[0] +
964 (psi2(2,5,3)*dxids0[0] + psi2(2,5,1)*dxids0[1] + psi2(2,5,5)*dxids0[2])*dxids0[1] +
965 (psi2(2,5,4)*dxids0[0] + psi2(2,5,5)*dxids0[1] + psi2(2,5,2)*dxids0[2])*dxids0[2];
968 d2psids(2,0,1) = (psi2(2,0,0)*dxids1[0] + psi2(2,0,3)*dxids1[1] + psi2(2,0,4)*dxids1[2])*dxids1[0] +
969 (psi2(2,0,3)*dxids1[0] + psi2(2,0,1)*dxids1[1] + psi2(2,0,5)*dxids1[2])*dxids1[1] +
970 (psi2(2,0,4)*dxids1[0] + psi2(2,0,5)*dxids1[1] + psi2(2,0,2)*dxids1[2])*dxids1[2];
971 d2psids(2,1,1) = (psi2(2,1,0)*dxids1[0] + psi2(2,1,3)*dxids1[1] + psi2(2,1,4)*dxids1[2])*dxids1[0] +
972 (psi2(2,1,3)*dxids1[0] + psi2(2,1,1)*dxids1[1] + psi2(2,1,5)*dxids1[2])*dxids1[1] +
973 (psi2(2,1,4)*dxids1[0] + psi2(2,1,5)*dxids1[1] + psi2(2,1,2)*dxids1[2])*dxids1[2];
974 d2psids(2,2,1) = (psi2(2,2,0)*dxids1[0] + psi2(2,2,3)*dxids1[1] + psi2(2,2,4)*dxids1[2])*dxids1[0] +
975 (psi2(2,2,3)*dxids1[0] + psi2(2,2,1)*dxids1[1] + psi2(2,2,5)*dxids1[2])*dxids1[1] +
976 (psi2(2,2,4)*dxids1[0] + psi2(2,2,5)*dxids1[1] + psi2(2,2,2)*dxids1[2])*dxids1[2];
977 d2psids(2,3,1) = (psi2(2,3,0)*dxids1[0] + psi2(2,3,3)*dxids1[1] + psi2(2,3,4)*dxids1[2])*dxids1[0] +
978 (psi2(2,3,3)*dxids1[0] + psi2(2,3,1)*dxids1[1] + psi2(2,3,5)*dxids1[2])*dxids1[1] +
979 (psi2(2,3,4)*dxids1[0] + psi2(2,3,5)*dxids1[1] + psi2(2,3,2)*dxids1[2])*dxids1[2];
980 d2psids(2,4,1) = (psi2(2,4,0)*dxids1[0] + psi2(2,4,3)*dxids1[1] + psi2(2,4,4)*dxids1[2])*dxids1[0] +
981 (psi2(2,4,3)*dxids1[0] + psi2(2,4,1)*dxids1[1] + psi2(2,4,5)*dxids1[2])*dxids1[1] +
982 (psi2(2,4,4)*dxids1[0] + psi2(2,4,5)*dxids1[1] + psi2(2,4,2)*dxids1[2])*dxids1[2];
983 d2psids(2,5,1) = (psi2(2,5,0)*dxids1[0] + psi2(2,5,3)*dxids1[1] + psi2(2,5,4)*dxids1[2])*dxids1[0] +
984 (psi2(2,5,3)*dxids1[0] + psi2(2,5,1)*dxids1[1] + psi2(2,5,5)*dxids1[2])*dxids1[1] +
985 (psi2(2,5,4)*dxids1[0] + psi2(2,5,5)*dxids1[1] + psi2(2,5,2)*dxids1[2])*dxids1[2];
988 d2psids(2,0,2) = (psi2(2,0,0)*dxids0[0] + psi2(2,0,3)*dxids0[1] + psi2(2,0,4)*dxids0[2])*dxids1[0] +
989 (psi2(2,0,3)*dxids0[0] + psi2(2,0,1)*dxids0[1] + psi2(2,0,5)*dxids0[2])*dxids1[1] +
990 (psi2(2,0,4)*dxids0[0] + psi2(2,0,5)*dxids0[1] + psi2(2,0,2)*dxids0[2])*dxids1[2];
991 d2psids(2,1,2) = (psi2(2,1,0)*dxids0[0] + psi2(2,1,3)*dxids0[1] + psi2(2,1,4)*dxids0[2])*dxids1[0] +
992 (psi2(2,1,3)*dxids0[0] + psi2(2,1,1)*dxids0[1] + psi2(2,1,5)*dxids0[2])*dxids1[1] +
993 (psi2(2,1,4)*dxids0[0] + psi2(2,1,5)*dxids0[1] + psi2(2,1,2)*dxids0[2])*dxids1[2];
994 d2psids(2,2,2) = (psi2(2,2,0)*dxids0[0] + psi2(2,2,3)*dxids0[1] + psi2(2,2,4)*dxids0[2])*dxids1[0] +
995 (psi2(2,2,3)*dxids0[0] + psi2(2,2,1)*dxids0[1] + psi2(2,2,5)*dxids0[2])*dxids1[1] +
996 (psi2(2,2,4)*dxids0[0] + psi2(2,2,5)*dxids0[1] + psi2(2,2,2)*dxids0[2])*dxids1[2];
997 d2psids(2,3,2) = (psi2(2,3,0)*dxids0[0] + psi2(2,3,3)*dxids0[1] + psi2(2,3,4)*dxids0[2])*dxids1[0] +
998 (psi2(2,3,3)*dxids0[0] + psi2(2,3,1)*dxids0[1] + psi2(2,3,5)*dxids0[2])*dxids1[1] +
999 (psi2(2,3,4)*dxids0[0] + psi2(2,3,5)*dxids0[1] + psi2(2,3,2)*dxids0[2])*dxids1[2];
1000 d2psids(2,4,2) = (psi2(2,4,0)*dxids0[0] + psi2(2,4,3)*dxids0[1] + psi2(2,4,4)*dxids0[2])*dxids1[0] +
1001 (psi2(2,4,3)*dxids0[0] + psi2(2,4,1)*dxids0[1] + psi2(2,4,5)*dxids0[2])*dxids1[1] +
1002 (psi2(2,4,4)*dxids0[0] + psi2(2,4,5)*dxids0[1] + psi2(2,4,2)*dxids0[2])*dxids1[2];
1003 d2psids(2,5,2) = (psi2(2,5,0)*dxids0[0] + psi2(2,5,3)*dxids0[1] + psi2(2,5,4)*dxids0[2])*dxids1[0] +
1004 (psi2(2,5,3)*dxids0[0] + psi2(2,5,1)*dxids0[1] + psi2(2,5,5)*dxids0[2])*dxids1[1] +
1005 (psi2(2,5,4)*dxids0[0] + psi2(2,5,5)*dxids0[1] + psi2(2,5,2)*dxids0[2])*dxids1[2];
1017 template<
unsigned DIM>
1048 std::ostringstream error_message;
1049 error_message <<
"Element only has three nodes; called with node number " 1053 "TElement::local_coordinate_of_node()",
1054 OOMPH_EXCEPTION_LOCATION);
1066 psi[2] = 1.0-s[0]-s[1];
1076 this->Lshape(s, psi);
1099 this->dLshape_local(s, psi,dpsids);
1101 for(
unsigned i=0;
i<3;
i++)
1116 template<
unsigned DIM,
unsigned NNODE_1D>
1141 template<
unsigned DIM>
1172 std::ostringstream error_message;
1173 error_message <<
"Element only has three nodes; called with node number " 1177 "GeometricTElement::local_coordinate_of_node()",
1178 OOMPH_EXCEPTION_LOCATION);
1192 psi[2] = 1.0-s[0]-s[1];
1195 double angle_1 = atan2(bd_position(0,1),bd_position(0,0));
1196 double angle_2 = atan2(bd_position(1,1),bd_position(1,0));
1197 double angle_min=0.0;
1198 double angle_max=0.0;
1201 if(angle_1 < angle_2)
1203 angle_min = angle_1;
1204 angle_max = angle_2;
1206 p(0,0) = bd_position(0,0);
1207 p(0,1) = bd_position(0,1);
1209 p(1,0) = bd_position(1,0);
1210 p(1,1) = bd_position(1,1);
1212 else if(angle_1 > angle_2)
1214 angle_min = angle_2;
1215 angle_max = angle_1;
1217 p(0,0) = bd_position(1,0);
1218 p(0,1) = bd_position(1,1);
1220 p(1,0) = bd_position(0,0);
1221 p(1,1) = bd_position(0,1);
1225 b_fn_derivative_min[0] = -1.0*sin(angle_min);
1226 b_fn_derivative_min[1] = cos(angle_min);
1227 b_fn_derivative_max[0] = -1.0*sin(angle_max);
1228 b_fn_derivative_max[1] = cos(angle_max);
1233 phi[0] = position(2,0) + (position(0,0) - position(2,0))*s[0] + (position(1,0) - position(2,0))*s[1];
1234 phi[1] = position(2,1) + (position(0,1) - position(2,1))*s[0] + (position(1,1) - position(2,1))*s[1];
1239 for(
unsigned i=0;
i<2;
i++)
1242 psi_h[
i] = ( (2.0*(p(1,
i)-p(0,
i))-(angle_max-angle_min)*(b_fn_derivative_min[
i]+b_fn_derivative_max[
i]))*(s[1]-s[0]) + (angle_max-angle_min)*(b_fn_derivative_min[
i]-b_fn_derivative_max[
i]) );
1243 phi[
i] = x[
i] + (p(0,
i) - x[
i])*s[0] + (p(1,
i) - x[
i])*s[1] + 1.0/2.0*s[0]*s[1]*psi_h[
i];
1259 this->Lshape(s,psi,phi,position,bd_element,bd_position,x);
1268 double angle_1 = atan2(bd_position(0,1),bd_position(0,0));
1269 double angle_2 = atan2(bd_position(1,1),bd_position(1,0));
1270 double angle_min=0.0;
1271 double angle_max=0.0;
1274 if(angle_1 < angle_2)
1276 angle_min = angle_1;
1277 angle_max = angle_2;
1279 p(0,0) = bd_position(0,0);
1280 p(0,1) = bd_position(0,1);
1282 p(1,0) = bd_position(1,0);
1283 p(1,1) = bd_position(1,1);
1285 else if(angle_1 > angle_2)
1287 angle_min = angle_2;
1288 angle_max = angle_1;
1290 p(0,0) = bd_position(1,0);
1291 p(0,1) = bd_position(1,1);
1293 p(1,0) = bd_position(0,0);
1294 p(1,1) = bd_position(0,1);
1298 b_fn_derivative_min[0] = -1.0*sin(angle_min);
1299 b_fn_derivative_min[1] = cos(angle_min);
1300 b_fn_derivative_max[0] = -1.0*sin(angle_max);
1301 b_fn_derivative_max[1] = cos(angle_max);
1306 dphids(0,0) = position(0,0) - position(2,0);
1307 dphids(0,1) = position(1,0) - position(2,0);
1308 dphids(1,0) = position(0,1) - position(2,1);
1309 dphids(1,1) = position(1,1) - position(2,1);
1314 for(
unsigned i=0;
i<2;
i++)
1316 psi_h[
i] = ( (2.0*(p(1,
i)-p(0,
i))-(angle_max-angle_min)*(b_fn_derivative_min[
i]+b_fn_derivative_max[
i]))*(s[1]-s[0]) + (angle_max-angle_min)*(b_fn_derivative_min[
i]-b_fn_derivative_max[
i]) );
1320 for(
unsigned i=0;
i<2;
i++)
1322 dpsi_h(
i,0) = (2.0*(p(1,
i)-p(0,
i))-(angle_max-angle_min)*(b_fn_derivative_min[
i]+b_fn_derivative_max[
i]))*(-1.0);
1323 dpsi_h(
i,1) = (2.0*(p(1,
i)-p(0,
i))-(angle_max-angle_min)*(b_fn_derivative_min[
i]+b_fn_derivative_max[
i]));
1325 for(
unsigned i=0;
i<2;
i++)
1327 dphids(
i,0) = p(0,
i) - x[
i] + 1.0/2.0*s[0]*s[1]*dpsi_h(
i,0) + psi_h[
i]*s[1]/2.0 ;
1328 dphids(
i,1) = p(1,
i) - x[
i] + 1.0/2.0*s[0]*s[1]*dpsi_h(
i,1) + psi_h[
i]*s[0]/2.0 ;
1348 unsigned &bd_element,
1352 this->dLshape_local(s,psi,dpsids,phi,dphids,position,bd_element,bd_position,x);
1354 for(
unsigned i=0;
i<3;
i++)
1360 double angle_1 = atan2(bd_position(0,1),bd_position(0,0));
1361 double angle_2 = atan2(bd_position(1,1),bd_position(1,0));
1362 double angle_min=0.0;
1363 double angle_max=0.0;
1366 if(angle_1 < angle_2)
1368 angle_min = angle_1;
1369 angle_max = angle_2;
1371 p(0,0) = bd_position(0,0);
1372 p(0,1) = bd_position(0,1);
1374 p(1,0) = bd_position(1,0);
1375 p(1,1) = bd_position(1,1);
1377 else if(angle_1 > angle_2)
1379 angle_min = angle_2;
1380 angle_max = angle_1;
1382 p(0,0) = bd_position(1,0);
1383 p(0,1) = bd_position(1,1);
1385 p(1,0) = bd_position(0,0);
1386 p(1,1) = bd_position(0,1);
1390 b_fn_derivative_min[0] = -1.0*sin(angle_min);
1391 b_fn_derivative_min[1] = cos(angle_min);
1392 b_fn_derivative_max[0] = -1.0*sin(angle_max);
1393 b_fn_derivative_max[1] = cos(angle_max);
1398 for(
unsigned i=0;
i<2;
i++)
1411 for(
unsigned i=0;
i<2;
i++)
1413 psi_h[
i] = ( (2.0*(p(1,
i)-p(0,
i))-(angle_max-angle_min)*(b_fn_derivative_min[
i]+b_fn_derivative_max[
i]))*(s[1]-s[0]) + (angle_max-angle_min)*(b_fn_derivative_min[
i]-b_fn_derivative_max[
i]) );
1416 for(
unsigned i=0;
i<2;
i++)
1418 dpsi_h(
i,0) = (2.0*(p(1,
i)-p(0,
i))-(angle_max-angle_min)*(b_fn_derivative_min[
i]+b_fn_derivative_max[
i]))*(-1.0);
1419 dpsi_h(
i,1) = (2.0*(p(1,
i)-p(0,
i))-(angle_max-angle_min)*(b_fn_derivative_min[
i]+b_fn_derivative_max[
i]));
1422 for(
unsigned i=0;
i<2;
i++)
1429 for(
unsigned i=0;
i<2;
i++)
1431 d2phids(
i,0) = 1.0/2.0*s[0]*s[1]*d2psi_h(
i,0) + dpsi_h(
i,0)*s[1]/2.0 + 1.0/2.0*s[1]*dpsi_h(
i,0);
1432 d2phids(
i,1) = 1.0/2.0*s[0]*s[1]*d2psi_h(
i,1) + 1.0/2.0*s[0]*dpsi_h(
i,1) + 1.0/2.0*s[0]*dpsi_h(
i,1);
1433 d2phids(
i,2) = 1.0/2.0*s[0]*s[1]*d2psi_h(
i,2) + 1.0/2.0*s[0]*dpsi_h(
i,0) + psi_h[
i]/2.0 + dpsi_h(
i,1)*s[1]/2.0;
1443 template<
unsigned DIM,
unsigned NNODE_1D>
1446 template<
unsigned NNODE_1D>
1491 std::ostringstream error_message;
1492 error_message <<
"Element only has three vertices and three internal nodes; called with node number " 1496 "CurvedTElement::local_coordinate_of_node()",
1497 OOMPH_EXCEPTION_LOCATION);
1501 else if(NNODE_1D == 3)
1551 std::ostringstream error_message;
1552 error_message <<
"Element has maximum of six nodes and three internal nodes; called with node number " 1556 "CurvedTElement::local_coordinate_of_node()",
1557 OOMPH_EXCEPTION_LOCATION);
1568 double angle_1 = atan2(bd_position(0,1),bd_position(0,0));
1569 double angle_2 = atan2(bd_position(1,1),bd_position(1,0));
1570 double angle_min=0.0;
1571 double angle_max=0.0;
1574 if(angle_1 < angle_2)
1576 angle_min = angle_1;
1577 angle_max = angle_2;
1579 p(0,0) = bd_position(0,0);
1580 p(0,1) = bd_position(0,1);
1582 p(1,0) = bd_position(1,0);
1583 p(1,1) = bd_position(1,1);
1585 else if(angle_1 > angle_2)
1587 angle_min = angle_2;
1588 angle_max = angle_1;
1590 p(0,0) = bd_position(1,0);
1591 p(0,1) = bd_position(1,1);
1593 p(1,0) = bd_position(0,0);
1594 p(1,1) = bd_position(0,1);
1600 fn_derivative1[0] = (angle_max-angle_min)*-1.0*sin(angle_min);
1601 fn_derivative1[1] = (angle_max-angle_min)*-1.0*sin(angle_max);
1602 fn_derivative2[0] = (angle_max-angle_min)*cos(angle_min);
1603 fn_derivative2[1] = (angle_max-angle_min)*cos(angle_max);
1607 for(
unsigned i=0;
i<21;
i++)
1609 for(
unsigned j=0;j<21;j++)
1614 double x31, x23, x13, x32, y13 ,y31, y32, y23;
1615 x31 = p(2,0)-p(0,0);
1616 y31 = p(2,1)-p(0,1);
1617 x32 = p(2,0)-p(1,0);
1618 y32 = p(2,1)-p(1,1);
1619 x23 = p(1,0)-p(2,0);
1620 y23 = p(1,1)-p(2,1);
1621 x13 = p(0,0)-p(2,0);
1622 y13 = p(0,1)-p(2,1);
1629 D(3+0,3+1)=fn_derivative1[0];
1631 D(3+1,3+1)=fn_derivative2[0];
1633 D(5+0,5+0)=-1.0*fn_derivative1[1];
1635 D(5+1,5+0)=-1.0*fn_derivative2[1];
1644 D(9+0,9+1)=fn_derivative1[0]*fn_derivative1[0];
1646 D(9+1,9+0)=2.0*x31*y31;
1647 D(9+1,9+1)=2.0*fn_derivative1[0]*fn_derivative2[0];
1648 D(9+1,9+6)=2.0*x32*y32;
1650 D(9+2,9+1)=fn_derivative2[0]*fn_derivative2[0];
1652 D(9+3,9+2)=fn_derivative1[1]*fn_derivative1[1];
1655 D(9+4,9+2)=2.0*fn_derivative1[1]*fn_derivative2[1];
1656 D(9+4,9+3)=2.0*x32*y32;
1657 D(9+4,9+7)=2.0*x31*y31;
1658 D(9+5,9+2)=fn_derivative2[1]*fn_derivative2[1];
1663 D(9+6,9+8)=fn_derivative1[0]*fn_derivative1[1];
1664 D(9+7,9+4)=2.0*x32*y32;
1665 D(9+7,9+5)=2.0*x31*y31;
1666 D(9+7,9+8)=fn_derivative1[0]*fn_derivative2[1]+fn_derivative2[0]*fn_derivative1[1];
1669 D(9+8,9+8)=fn_derivative2[0]*fn_derivative2[1];
1677 for(
unsigned i=0;
i<36;
i++)
1679 for(
unsigned j=0;j<21;j++)
1698 double a1, a2, aa1, aa2, b1, b2, bb1, bb2, c1, c2, cc1, cc2;
1700 for(
unsigned i=0;
i<2;
i++)
1702 A1[
i] = p(2,
i)-p(0,
i);
1703 B2[
i] = p(2,
i)-p(1,
i);
1704 C1[
i] = p(1,
i)-p(2,
i);
1705 C2[
i] = p(0,
i)-p(2,
i);
1707 A2[0] = (angle_max-angle_min)*-1.0*sin(angle_min);
1708 A2[1] = (angle_max-angle_min)*cos(angle_min);
1709 B1[0] = -1.0*(angle_max-angle_min)*-1.0*sin(angle_max);
1710 B1[1] = -1.0*(angle_max-angle_min)*cos(angle_max);
1711 double B2xA2, A1xA2, A1xB2, B1xA2, A1xB1, B1xA1, A2xB2, B1xB2;
1712 B2xA2 = B2[0]*A2[1]-B2[1]*A2[0];
1713 A1xA2 = A1[0]*A2[1]-A1[1]*A2[0];
1714 A1xB2 = A1[0]*B2[1]-A1[1]*B2[0];
1715 B1xA2 = B1[0]*A2[1]-B1[1]*A2[0];
1716 A1xB1 = A1[0]*B1[1]-A1[1]*B1[0];
1717 A2xB2 = A2[0]*B2[1]-A2[1]*B2[0];
1718 B1xA1 = B1[0]*A1[1]-B1[1]*A1[0];
1719 B1xB2 = B1[0]*B2[1]-B1[1]*B2[0];
1720 a1 = B2xA2/A1xA2 - 1.0;
1722 aa1 = -1.0*B1xA2/A1xA2;
1723 aa2 = -1.0*A1xB1/A1xA2;
1725 b2 = B1xA1/B1xB2 - 1.0;
1733 Bt(9+1,3+0)=2.0*a1+aa1/2.0;
1734 Bt(9+2,3+0)=-1.0*(2.0*a1+aa1);
1735 Bt(9+1,3+1)=3.0/2.0+2.0*a2+aa2/2.0;
1736 Bt(9+2,3+1)=-1.0*(1.0+2.0*a2+aa2);
1737 Bt(9+3,3+2)=-1.0*(1.0+2.0*b1-bb1);
1738 Bt(9+4,3+2)=3.0/2.0+2.0*b1-bb1/2.0;
1739 Bt(9+3,3+3)=-1.0*(2.0*b2-bb2);
1740 Bt(9+4,3+3)=2.0*b2-bb2/2.0;
1741 Bt(9+7,3+4)=(c1+cc1)/2.0;
1742 Bt(9+7,3+5)=(c2+cc2)/2.0;
1745 Bt(9+1,9+0)=1.0+(1.0+a1)/(2.0*a2);
1746 Bt(9+2,9+0)=1.0+(1.0+a1)/(a2);
1747 Bt(9+1,9+1)=(a2)/(2.0*(1.0+a1));
1748 Bt(9+2,9+1)=1.0+(a2)/(1.0+a1);
1749 Bt(9+3,9+2)=1.0+(b1)/(1.0+b2);
1750 Bt(9+4,9+2)=(b1)/(2.0*(1.0+b2));
1751 Bt(9+3,9+3)=1.0+(1.0+b2)/(b1);
1752 Bt(9+4,9+3)=1.0+(1.0+b2)/(2.0*b1);
1754 Bt(9+7,9+4)=-1.0*(c1*cc1)/(c1*cc2+c2*cc1);
1757 Bt(9+7,9+5)=-1.0*(c2*cc2)/(c1*cc2+c2*cc1);
1758 Bt(9+1,9+6)=(-1.0)/(2.0*a2*(1.0+a1));
1759 Bt(9+2,9+6)=(-1.0)/(a2*(1.0+a1));
1760 Bt(9+3,9+7)=(-1.0)/(b1*(1.0+b2));
1761 Bt(9+4,9+7)=(-1.0)/(2.0*b1*(1.0+b2));
1762 Bt(9+7,9+8)=(-1.0)/(c1*cc2+c2*cc1);
1768 double m = (p(1,1) - p(2,1))/(p(1,0) - p(2,0));
1769 double k = p(2,1) - m*p(2,0);
1770 s1[0] = ( (p(1,0) - p(2,0))*p(0,0) + (p(1,1) - p(2,1))*(p(0,1)-k) )/((p(1,0) - p(2,0)) + (p(1,1) - p(2,1))*m);
1771 s1[1] = m*s1[0] + k;
1773 if((p(1,0) - p(2,0))==0)
1775 m = (p(1,0) - p(2,0))/(p(1,1) - p(2,1));
1776 k = p(2,0) - m*p(2,1);
1777 s1[1] = ( (p(1,0) - p(2,0))*(p(0,0)-k) + (p(1,1) - p(2,1))*(p(0,1)) )/((p(1,0) - p(2,0))*m + (p(1,1) - p(2,1)));
1778 s1[0] = m*s1[1] + k;
1782 m = (p(0,1) - p(2,1))/(p(0,0) - p(2,0));
1783 k = p(2,1) - m*p(2,0);
1784 s2[0] = ( (p(0,0) - p(2,0))*p(1,0) + (p(0,1) - p(2,1))*(p(1,1)-k) )/((p(0,0) - p(2,0)) + (p(0,1) - p(2,1))*m);
1785 s2[1] = m*s2[0] + k;
1787 if((p(0,0) - p(2,0))==0)
1789 m = (p(0,0) - p(2,0))/(p(0,1) - p(2,1));
1790 k = p(2,0) - m*p(2,1);
1791 s2[1] = ( (p(0,0) - p(2,0))*(p(1,0)-k) + (p(0,1) - p(2,1))*(p(1,1)) )/((p(0,0) - p(2,0))*m + (p(0,1) - p(2,1)));
1792 s2[0] = m*s2[1] + k;
1795 double len1, len2, len3;
1796 len1 = sqrt((p(1,0)-p(2,0))*(p(1,0)-p(2,0)) + (p(1,1)-p(2,1))*(p(1,1)-p(2,1)) );
1797 len2 = sqrt((p(0,0)-p(2,0))*(p(0,0)-p(2,0)) + (p(0,1)-p(2,1))*(p(0,1)-p(2,1)) );
1798 len3 = sqrt((p(1,0)-p(0,0))*(p(1,0)-p(0,0)) + (p(1,1)-p(0,1))*(p(1,1)-p(0,1)) );
1799 ata1 = (len3*len3-len2*len2)/(len1*len1);
1800 ata2 = (len1*len1-len3*len3)/(len2*len2);
1802 Vector<double> F1(21,0.0), F2(21,0.0), F3(21,0.0), H1(21,0.0), H2(21,0.0), H3(21,0.0);
1805 for(
unsigned i=0;
i<21;
i++)
1813 for(
unsigned j=0;j<2;j++)
1823 t[0] = p(2,0)-p(0,0) + 1.0/4.0*(p(0,0)-p(1,0))+1.0/8.0*(angle_max-angle_min)*(-3.0*sin(angle_max)+sin(angle_min));
1824 t[1] = p(2,1)-p(0,1) + 1.0/4.0*(p(0,1)-p(1,1))+1.0/8.0*(angle_max-angle_min)*(3.0*cos(angle_max)-cos(angle_min));
1825 magnitude = sqrt((p(1,0)-p(2,0))*(p(1,0)-p(2,0)) + (p(1,1)-p(2,1))*(p(1,1)-p(2,1)));
1826 aa[0] = (p(1,0)-p(2,0))/(magnitude*magnitude);
1827 aa[1] = (p(1,1)-p(2,1))/(magnitude*magnitude);
1828 e1 = (
t[0]*aa[0] +
t[1]*aa[1]);
1830 magnitude = sqrt((p(0,0)-s1[0])*(p(0,0)-s1[0]) + (p(0,1)-s1[1])*(p(0,1)-s1[1]));
1831 aa[0] = (p(0,0)-s1[0])/(magnitude*magnitude);
1832 aa[1] = (p(0,1)-s1[1])/(magnitude*magnitude);
1833 e2 = (
t[0]*aa[0] +
t[1]*aa[1]);
1836 F2_div(1,1) = 5.0*s[1]*s[1]*6.0*s[1]*s[1]-4.0*s[1]*s[1]*15.0*s[1]+3.0*s[1]*s[1]*10.0;
1837 F2_div(2,1) = (1.0-s[1])*(1.0-s[1])*(1.0-s[1])*(12.0*s[1]+3.0)-3.0*(1.0-s[1])*(1.0-s[1])*(6.0*s[1]*s[1]+3.0*s[1]+1.0);
1838 F2_div(6,1) = s[1]*s[1]*s[1]*(1.0-s[1])*(-3.0)+(4.0-3.0*s[1])*(-s[1]*s[1]*s[1]+3.0*s[1]*s[1]*(1.0-s[1]));
1839 F2_div(7,1) = s[1]*(1.0-s[1])*(1.0-s[1])*(1.0-s[1])*3.0 + ( -3.0*s[1]*(1.0-s[1])*(1.0-s[1]) + (1.0-s[1])*(1.0-s[1])*(1.0-s[1]) )*(1.0+3.0*s[1]);
1840 F2_div(12,1) = -1.0*s[1]*s[1]*s[1]*(1.0-s[1])+3.0/2.0*(1.0-s[1])*(1.0-s[1])*s[1]*s[1];
1841 F2_div(13,1) = -3.0/2.0*s[1]*s[1]*(1.0-s[1])*(1.0-s[1]) + 1.0/2.0*(1.0-s[1])*(1.0-s[1])*(1.0-s[1])*2.0*s[1];
1844 H2[5] = -1.0*b1*(3.0*s[1]*s[1]-2.0*s[1]*s[1]*s[1]);
1845 H2[6] = -1.0/2.0*(2.0*b2+1.0+ata1)*(3.0*s[1]*s[1]-2.0*s[1]*s[1]*s[1]);
1846 H2[7] = -1.0/2.0*(1.0-ata1)*(1.0-3.0*s[1]*s[1]+2.0*s[1]*s[1]*s[1]);
1847 H2[8] = (1.0-3.0*s[1]*s[1]+2.0*s[1]*s[1]*s[1]);
1848 H2[11] = -1.0/2.0*((b1*b1)/(1.0+b2))*(s[1]*s[1]*s[1]-s[1]*s[1]);
1849 H2[12] = 1.0/2.0*(b2+ata1)*(s[1]*s[1]*s[1]-s[1]*s[1]);
1850 H2[13] = -1.0/2.0*( (2.0*c1*cc1)/(c1*cc2+c2*cc1) +1.0-ata1)*(s[1]-2.0*s[1]*s[1]+s[1]*s[1]*s[1]);
1851 H2[14] = -1.0*((c2*cc2)/(c1*cc2+c2*cc1))*(s[1]-2.0*s[1]*s[1]+s[1]*s[1]*s[1]);
1852 H2[16] = 1.0/2.0*(1.0/(1.0+b2))*(s[1]*s[1]*s[1]-s[1]*s[1]);
1853 H2[17] = ((-1.0)/(c1*cc2+c2*cc1))*(s[1]-2.0*s[1]*s[1]+s[1]*s[1]*s[1]);
1855 for(
unsigned i=0;
i<21;
i++)
1857 Bt(18,
i) = e1*F2_div(
i,1)+e2*H2[
i];
1860 t[0] = p(2,0)-p(1,0) + 1.0/4.0*(p(1,0)-p(0,0))-1.0/8.0*(angle_max-angle_min)*(-3.0*sin(angle_min)+sin(angle_max));
1861 t[1] = p(2,1)-p(1,1) + 1.0/4.0*(p(1,1)-p(0,1))-1.0/8.0*(angle_max-angle_min)*(3.0*cos(angle_min)-cos(angle_max));
1862 magnitude = sqrt((p(0,0)-p(2,0))*(p(0,0)-p(2,0)) + (p(0,1)-p(2,1))*(p(0,1)-p(2,1)));
1863 aa[0] = (p(0,0)-p(2,0))/(magnitude*magnitude);
1864 aa[1] = (p(0,1)-p(2,1))/(magnitude*magnitude);
1865 f1 = (
t[0]*aa[0] +
t[1]*aa[1]);
1867 magnitude = sqrt((p(1,0)-s2[0])*(p(1,0)-s2[0]) + (p(1,1)-s2[1])*(p(1,1)-s2[1]));
1868 aa[0] = (p(1,0)-s2[0])/(magnitude*magnitude);
1869 aa[1] = (p(1,1)-s2[1])/(magnitude*magnitude);
1870 f2 = (
t[0]*aa[0] +
t[1]*aa[1]);
1873 F1_div(0,0) = 5.0*s[0]*s[0]*6.0*s[0]*s[0]-4.0*s[0]*s[0]*15.0*s[0]+3.0*s[0]*s[0]*10.0;
1874 F1_div(2,0) = (1.0-s[0])*(1.0-s[0])*(1.0-s[0])*(12.0*s[0]+3.0)-3.0*(1.0-s[0])*(1.0-s[0])*(6.0*s[0]*s[0]+3.0*s[0]+1.0);
1875 F1_div(3,0) = s[0]*s[0]*s[0]*(1.0-s[0])*(-3.0)+(4.0-3.0*s[0])*(-s[0]*s[0]*s[0]+3.0*s[0]*s[0]*(1.0-s[0]));
1876 F1_div(8,0) = s[0]*(1.0-s[0])*(1.0-s[0])*(1.0-s[0])*3.0+(-3.0*s[0]*(1.0-s[0])*(1.0-s[0])+(1.0-s[0])*(1.0-s[0])*(1.0-s[0]))*(1.0+3.0*s[0]);
1877 F1_div(9,0) = -1.0*s[0]*s[0]*s[0]*(1.0-s[0])+3.0/2.0*(1.0-s[0])*(1.0-s[0])*s[0]*s[0];
1878 F1_div(14,0) = -3.0/2.0*s[0]*s[0]*(1.0-s[0])*(1.0-s[0]) + 1.0/2.0*(1.0-s[0])*(1.0-s[0])*(1.0-s[0])*2.0*s[0];
1881 H1[3] = -1.0/2.0*(1.0-ata2+2.0*a1)*(3.0*s[0]*s[0]-2.0*s[0]*s[0]*s[0]);
1882 H1[4] = -1.0*a2*(3.0*s[0]*s[0]-2.0*s[0]*s[0]*s[0]);
1883 H1[7] = 1.0-3.0*s[0]*s[0]+2.0*s[0]*s[0]*s[0];
1884 H1[8] = -1.0/2.0*(1.0+ata2)*(1.0-3.0*s[0]*s[0]+2.0*s[0]*s[0]*s[0]);
1885 H1[9] = 1.0/2.0*(a1-ata2)*(s[0]*s[0]*s[0]-s[0]*s[0]);
1886 H1[10] = -1.0/2.0*(a2*a2/(1.0+a1))*(s[0]*s[0]*s[0]-s[0]*s[0]);
1887 H1[13] = ((-1.0*c1*cc1)/(c1*cc2+c2*cc1))*(s[0]-2.0*s[0]*s[0]+s[0]*s[0]*s[0]);
1888 H1[14] = -1.0*( 1.0/2.0*(1.0+ata2)+(c2*cc2/(c1*cc2+c2*cc1)) )*(s[0]-2.0*s[0]*s[0]+s[0]*s[0]*s[0]);
1889 H1[15] = (s[0]*s[0]*s[0]-s[0]*s[0])/(2.0*(1.0+a1));
1890 H1[17] = -1.0/(c1*cc2+c2*cc1)*(s[0]-2.0*s[0]*s[0]+s[0]*s[0]*s[0]);
1892 for(
unsigned i=0;
i<21;
i++)
1894 Bt(19,
i) = f1*F1_div(
i,0)+f2*H1[
i];
1897 double A = a1 + 1.0/2.0*aa1;
1898 double BB = a2 + 1.0/2.0*aa2;
1899 double C = 2.0*b1-bb1;
1900 double E = 2.0*b2-bb2;
1902 H3[3] = (3.0*s[0]*s[0]-2.0*s[0]*s[0]*s[0]) - A*(-1.0*s[0]*s[0]+s[0]*s[0]*s[0]);
1903 H3[4] = -1.0/2.0*(3.0*s[0]*s[0]-2.0*s[0]*s[0]*s[0]) - (BB+1.0/2.0)*(-1.0*s[0]*s[0]+s[0]*s[0]*s[0]);
1904 H3[5] = -1.0/2.0*(1.0-3.0*s[0]*s[0]+2.0*s[0]*s[0]*s[0]) + 1.0/2.0*(C+1.0)*(s[0]-2.0*s[0]*s[0]+s[0]*s[0]*s[0]);
1905 H3[6] = (1.0-3.0*s[0]*s[0]+2.0*s[0]*s[0]*s[0]) + 1.0/2.0*E*(s[0]-2.0*s[0]*s[0]+s[0]*s[0]*s[0]);
1906 H3[9] = (1.0+a1)/(2.0*a2)*(s[0]*s[0]*s[0]-s[0]*s[0]);
1907 H3[10] = 1.0/2.0*(1.0+ a2/(1.0+a1))*(s[0]*s[0]*s[0]-s[0]*s[0]);
1908 H3[11] = -1.0/2.0*(1.0+ b1/(1.0+b2) )*(s[0]-2.0*s[0]*s[0]+s[0]*s[0]*s[0]);
1909 H3[12] = -1.0*(1.0+b2)/(2.0*b1)*(s[0]-2.0*s[0]*s[0]+s[0]*s[0]*s[0]);
1910 H3[15] = -1.0/(2.0*(1.0+a1)*a2)*(s[0]*s[0]*s[0]-s[0]*s[0]);
1911 H3[16] = 1.0/(2.0*b1*(1.0+b2))*(s[0]-2.0*s[0]*s[0]+s[0]*s[0]*s[0]);
1913 for(
unsigned i=0;
i<21;
i++)
1915 Bt(20,
i) = -1.0*sqrt(2.0)*H3[
i];
1919 F2[1] = s[1]*s[1]*s[1]*(6.0*s[1]*s[1]-15.0*s[1]+10.0);
1920 F2[2] = (1.0-s[1])*(1.0-s[1])*(1.0-s[1])*(6.0*s[1]*s[1]+3.0*s[1]+1.0);
1921 F2[6] = s[1]*s[1]*s[1]*(1.0-s[1])*(4.0-3.0*s[1]);
1922 F2[7] = s[1]*(1.0-s[1])*(1.0-s[1])*(1.0-s[1])*(1.0+3.0*s[1]);
1923 F2[12] = 1.0/2.0*s[1]*s[1]*s[1]*(1.0-s[1])*(1.0-s[1]);
1924 F2[13] = 1.0/2.0*s[1]*s[1]*(1.0-s[1])*(1.0-s[1])*(1.0-s[1]);
1925 for(
unsigned i=0;
i<21;
i++)
1931 F2[1] = s[1]*s[1]*s[1]*(6.0*s[1]*s[1]-15.0*s[1]+10.0);
1932 F2[2] = (1.0-s[1])*(1.0-s[1])*(1.0-s[1])*(6.0*s[1]*s[1]+3.0*s[1]+1.0);
1933 F2[6] = s[1]*s[1]*s[1]*(1.0-s[1])*(4.0-3.0*s[1]);
1934 F2[7] = s[1]*(1.0-s[1])*(1.0-s[1])*(1.0-s[1])*(1.0+3.0*s[1]);
1935 F2[12] = 1.0/2.0*s[1]*s[1]*s[1]*(1.0-s[1])*(1.0-s[1]);
1936 F2[13] = 1.0/2.0*s[1]*s[1]*(1.0-s[1])*(1.0-s[1])*(1.0-s[1]);
1937 for(
unsigned i=0;
i<21;
i++)
1943 F1[0] = s[0]*s[0]*s[0]*(6.0*s[0]*s[0]-15.0*s[0]+10.0);
1944 F1[2] = (1.0-s[0])*(1.0-s[0])*(1.0-s[0])*(6.0*s[0]*s[0]+3.0*s[0]+1.0);
1945 F1[3] = s[0]*s[0]*s[0]*(1.0-s[0])*(4.0-3.0*s[0]);
1946 F1[8] = s[0]*(1.0-s[0])*(1.0-s[0])*(1.0-s[0])*(1.0+3.0*s[0]);
1947 F1[9] = 1.0/2.0*s[0]*s[0]*s[0]*(1.0-s[0])*(1.0-s[0]);
1948 F1[14] = 1.0/2.0*s[0]*s[0]*(1.0-s[0])*(1.0-s[0])*(1.0-s[0]);
1949 for(
unsigned i=0;
i<21;
i++)
1955 F1[0] = s[0]*s[0]*s[0]*(6.0*s[0]*s[0]-15.0*s[0]+10.0);
1956 F1[2] = (1.0-s[0])*(1.0-s[0])*(1.0-s[0])*(6.0*s[0]*s[0]+3.0*s[0]+1.0);
1957 F1[3] = s[0]*s[0]*s[0]*(1.0-s[0])*(4.0-3.0*s[0]);
1958 F1[8] = s[0]*(1.0-s[0])*(1.0-s[0])*(1.0-s[0])*(1.0+3.0*s[0]);
1959 F1[9] = 1.0/2.0*s[0]*s[0]*s[0]*(1.0-s[0])*(1.0-s[0]);
1960 F1[14] = 1.0/2.0*s[0]*s[0]*(1.0-s[0])*(1.0-s[0])*(1.0-s[0]);
1961 for(
unsigned i=0;
i<21;
i++)
1967 F3[0] = s[0]*s[0]*s[0]*(6.0*s[0]*s[0]-15.0*s[0]+10.0);
1968 F3[1] = (1.0-s[0])*(1.0-s[0])*(1.0-s[0])*(6.0*s[0]*s[0]+3.0*s[0]+1.0);
1969 F3[3] = -1.0*(3.0*a1+aa1)*s[0]*s[0]*s[0]*(1.0-s[0])*(1.0-s[0]);
1970 F3[4] = s[0]*s[0]*s[0]*(1.0-s[0])*(2.0-s[0]-(1.0-s[0])*(3.0*a2+aa2));
1971 F3[5] = s[0]*(1.0-s[0])*(1.0-s[0])*(1.0-s[0])*(1.0+s[0]-s[0]*(3.0*b1-bb1));
1972 F3[6] = -1.0*s[0]*s[0]*(1.0-s[0])*(1.0-s[0])*(1.0-s[0])*(3.0*b2-bb2);
1973 F3[10] = 1.0/2.0*s[0]*s[0]*s[0]*(1.0-s[0])*(1.0-s[0]);
1974 F3[11] = 1.0/2.0*s[0]*s[0]*(1.0-s[0])*(1.0-s[0])*(1.0-s[0]);
1975 for(
unsigned i=0;
i<21;
i++)
1981 F3[0] = s[0]*s[0]*s[0]*(6.0*s[0]*s[0]-15.0*s[0]+10.0);
1982 F3[1] = (1.0-s[0])*(1.0-s[0])*(1.0-s[0])*(6.0*s[0]*s[0]+3.0*s[0]+1.0);
1983 F3[3] = -1.0*(3.0*a1+aa1)*s[0]*s[0]*s[0]*(1.0-s[0])*(1.0-s[0]);
1984 F3[4] = s[0]*s[0]*s[0]*(1.0-s[0])*(2.0-s[0]-(1.0-s[0])*(3.0*a2+aa2));
1985 F3[5] = s[0]*(1.0-s[0])*(1.0-s[0])*(1.0-s[0])*(1.0+s[0]-s[0]*(3.0*b1-bb1));
1986 F3[6] = -1.0*s[0]*s[0]*(1.0-s[0])*(1.0-s[0])*(1.0-s[0])*(3.0*b2-bb2);
1987 F3[10] = 1.0/2.0*s[0]*s[0]*s[0]*(1.0-s[0])*(1.0-s[0]);
1988 F3[11] = 1.0/2.0*s[0]*s[0]*(1.0-s[0])*(1.0-s[0])*(1.0-s[0]);
1989 for(
unsigned i=0;
i<21;
i++)
1994 double g1,g2,h1,h2,k1,k2,j1,j2;
1995 t[0] = p(0,0)-p(2,0) + 9.0/16.0*(p(1,0)-p(0,0))+3.0/32.0*(angle_max-angle_min)*(-sin(angle_min)+7.0*sin(angle_max));
1996 t[1] = p(0,1)-p(2,1) + 9.0/16.0*(p(1,1)-p(0,1))+3.0/32.0*(angle_max-angle_min)*(cos(angle_min)-7.0*cos(angle_max));
1997 magnitude = sqrt((p(1,0)-p(2,0))*(p(1,0)-p(2,0)) + (p(1,1)-p(2,1))*(p(1,1)-p(2,1)));
1998 aa[0] = (p(1,0)-p(2,0))/(magnitude*magnitude);
1999 aa[1] = (p(1,1)-p(2,1))/(magnitude*magnitude);
2000 g1 = -1.0*(
t[0]*aa[0] +
t[1]*aa[1]);
2002 magnitude = sqrt((p(0,0)-s1[0])*(p(0,0)-s1[0]) + (p(0,1)-s1[1])*(p(0,1)-s1[1]));
2003 aa[0] = (p(0,0)-s1[0])/(magnitude*magnitude);
2004 aa[1] = (p(0,1)-s1[1])/(magnitude*magnitude);
2005 g2 = -1.0*(
t[0]*aa[0] +
t[1]*aa[1]);
2008 F2_div(1,1) = 5.0*s[1]*s[1]*6.0*s[1]*s[1]-4.0*s[1]*s[1]*15.0*s[1]+3.0*s[1]*s[1]*10.0;
2009 F2_div(2,1) = (1.0-s[1])*(1.0-s[1])*(1.0-s[1])*(12.0*s[1]+3.0)-3.0*(1.0-s[1])*(1.0-s[1])*(6.0*s[1]*s[1]+3.0*s[1]+1.0);
2010 F2_div(6,1) = s[1]*s[1]*s[1]*(1.0-s[1])*(-3.0)+(4.0-3.0*s[1])*(-s[1]*s[1]*s[1]+3.0*s[1]*s[1]*(1.0-s[1]));
2011 F2_div(7,1) = s[1]*(1.0-s[1])*(1.0-s[1])*(1.0-s[1])*3.0+(-3.0*s[1]*(1.0-s[1])*(1.0-s[1])+(1.0-s[1])*(1.0-s[1])*(1.0-s[1]))*(1.0+3.0*s[1]);
2012 F2_div(12,1) = -1.0*s[1]*s[1]*s[1]*(1.0-s[1])+3.0/2.0*(1.0-s[1])*(1.0-s[1])*s[1]*s[1];
2013 F2_div(13,1) = -3.0/2.0*s[1]*s[1]*(1.0-s[1])*(1.0-s[1]) + 1.0/2.0*(1.0-s[1])*(1.0-s[1])*(1.0-s[1])*2.0*s[1];
2016 H2[5] = -1.0*b1*(3.0*s[1]*s[1]-2.0*s[1]*s[1]*s[1]);
2017 H2[6] = -1.0/2.0*(2.0*b2+1.0+ata1)*(3.0*s[1]*s[1]-2.0*s[1]*s[1]*s[1]);
2018 H2[7] = -1.0/2.0*(1.0-ata1)*(1.0-3.0*s[1]*s[1]+2.0*s[1]*s[1]*s[1]);
2019 H2[8] = (1.0-3.0*s[1]*s[1]+2.0*s[1]*s[1]*s[1]);
2020 H2[11] = -1.0/2.0*((b1*b1)/(1.0+b2))*(s[1]*s[1]*s[1]-s[1]*s[1]);
2021 H2[12] = 1.0/2.0*(b2+ata1)*(s[1]*s[1]*s[1]-s[1]*s[1]);
2022 H2[13] = -1.0/2.0*( (2.0*c1*cc1)/(c1*cc2+c2*cc1) +1.0-ata1)*(s[1]-2.0*s[1]*s[1]+s[1]*s[1]*s[1]);
2023 H2[14] = -1.0*((c2*cc2)/(c1*cc2+c2*cc1))*(s[1]-2.0*s[1]*s[1]+s[1]*s[1]*s[1]);
2024 H2[16] = 1.0/2.0*(1.0/(1.0+b2))*(s[1]*s[1]*s[1]-s[1]*s[1]);
2025 H2[17] = ((-1.0)/(c1*cc2+c2*cc1))*(s[1]-2.0*s[1]*s[1]+s[1]*s[1]*s[1]);
2026 for(
unsigned i=0;
i<21;
i++)
2028 Bt(27,
i) = g1*F2_div(
i,1)+g2*H2[
i];
2031 t[0] = p(0,0)-p(2,0) + 1.0/16.0*(p(1,0)-p(0,0))+1.0/32.0*(angle_max-angle_min)*(-3.0*sin(angle_min)+5.0*sin(angle_max));
2032 t[1] = p(0,1)-p(2,1) + 1.0/16.0*(p(1,1)-p(0,1))+1.0/32.0*(angle_max-angle_min)*(3.0*cos(angle_min)-5.0*cos(angle_max));
2033 magnitude = sqrt((p(1,0)-p(2,0))*(p(1,0)-p(2,0)) + (p(1,1)-p(2,1))*(p(1,1)-p(2,1)));
2034 aa[0] = (p(1,0)-p(2,0))/(magnitude*magnitude);
2035 aa[1] = (p(1,1)-p(2,1))/(magnitude*magnitude);
2036 h1 = -1.0*(
t[0]*aa[0] +
t[1]*aa[1]);
2038 magnitude = sqrt((p(0,0)-s1[0])*(p(0,0)-s1[0]) + (p(0,1)-s1[1])*(p(0,1)-s1[1]));
2039 aa[0] = (p(0,0)-s1[0])/(magnitude*magnitude);
2040 aa[1] = (p(0,1)-s1[1])/(magnitude*magnitude);
2041 h2 = -1.0*(
t[0]*aa[0] +
t[1]*aa[1]);
2044 F2_div(1,1) = 5.0*s[1]*s[1]*6.0*s[1]*s[1]-4.0*s[1]*s[1]*15.0*s[1]+3.0*s[1]*s[1]*10.0;
2045 F2_div(2,1) = (1.0-s[1])*(1.0-s[1])*(1.0-s[1])*(12.0*s[1]+3.0)-3.0*(1.0-s[1])*(1.0-s[1])*(6.0*s[1]*s[1]+3.0*s[1]+1.0);
2046 F2_div(6,1) = s[1]*s[1]*s[1]*(1.0-s[1])*(-3.0)+(4.0-3.0*s[1])*(-s[1]*s[1]*s[1]+3.0*s[1]*s[1]*(1.0-s[1]));
2047 F2_div(7,1) = s[1]*(1.0-s[1])*(1.0-s[1])*(1.0-s[1])*3.0+(-3.0*s[1]*(1.0-s[1])*(1.0-s[1])+(1.0-s[1])*(1.0-s[1])*(1.0-s[1]))*(1.0+3.0*s[1]);
2048 F2_div(12,1) = -1.0*s[1]*s[1]*s[1]*(1.0-s[1])+3.0/2.0*(1.0-s[1])*(1.0-s[1])*s[1]*s[1];
2049 F2_div(13,1) = -3.0/2.0*s[1]*s[1]*(1.0-s[1])*(1.0-s[1]) + 1.0/2.0*(1.0-s[1])*(1.0-s[1])*(1.0-s[1])*2.0*s[1];
2052 H2[5] = -1.0*b1*(3.0*s[1]*s[1]-2.0*s[1]*s[1]*s[1]);
2053 H2[6] = -1.0/2.0*(2.0*b2+1.0+ata1)*(3.0*s[1]*s[1]-2.0*s[1]*s[1]*s[1]);
2054 H2[7] = -1.0/2.0*(1.0-ata1)*(1.0-3.0*s[1]*s[1]+2.0*s[1]*s[1]*s[1]);
2055 H2[8] = (1.0-3.0*s[1]*s[1]+2.0*s[1]*s[1]*s[1]);
2056 H2[11] = -1.0/2.0*((b1*b1)/(1.0+b2))*(s[1]*s[1]*s[1]-s[1]*s[1]);
2057 H2[12] = 1.0/2.0*(b2+ata1)*(s[1]*s[1]*s[1]-s[1]*s[1]);
2058 H2[13] = -1.0/2.0*( (2.0*c1*cc1)/(c1*cc2+c2*cc1) +1.0-ata1)*(s[1]-2.0*s[1]*s[1]+s[1]*s[1]*s[1]);
2059 H2[14] = -1.0*((c2*cc2)/(c1*cc2+c2*cc1))*(s[1]-2.0*s[1]*s[1]+s[1]*s[1]*s[1]);
2060 H2[16] = 1.0/2.0*(1.0/(1.0+b2))*(s[1]*s[1]*s[1]-s[1]*s[1]);
2061 H2[17] = ((-1.0)/(c1*cc2+c2*cc1))*(s[1]-2.0*s[1]*s[1]+s[1]*s[1]*s[1]);
2063 for(
unsigned i=0;
i<21;
i++)
2065 Bt(28,
i) = h1*F2_div(
i,1)+h2*H2[
i];
2068 t[0] = p(1,0)-p(2,0) + 1.0/16.0*(p(0,0)-p(1,0))-1.0/32.0*(angle_max-angle_min)*(-3.0*sin(angle_max)+5.0*sin(angle_min));
2069 t[1] = p(1,1)-p(2,1) + 1.0/16.0*(p(0,1)-p(1,1))-1.0/32.0*(angle_max-angle_min)*(3.0*cos(angle_max)-5.0*cos(angle_min));
2070 magnitude = sqrt((p(0,0)-p(2,0))*(p(0,0)-p(2,0)) + (p(0,1)-p(2,1))*(p(0,1)-p(2,1)));
2071 aa[0] = (p(0,0)-p(2,0))/(magnitude*magnitude);
2072 aa[1] = (p(0,1)-p(2,1))/(magnitude*magnitude);
2073 j1 = -1.0*(
t[0]*aa[0] +
t[1]*aa[1]);
2075 magnitude = sqrt((p(1,0)-s2[0])*(p(1,0)-s2[0]) + (p(1,1)-s2[1])*(p(1,1)-s2[1]));
2076 aa[0] = (p(1,0)-s2[0])/(magnitude*magnitude);
2077 aa[1] = (p(1,1)-s2[1])/(magnitude*magnitude);
2078 j2 = -1.0*(
t[0]*aa[0] +
t[1]*aa[1]);
2081 F1_div(0,0) = 5.0*s[0]*s[0]*6.0*s[0]*s[0]-4.0*s[0]*s[0]*15.0*s[0]+3.0*s[0]*s[0]*10.0;
2082 F1_div(2,0) = (1.0-s[0])*(1.0-s[0])*(1.0-s[0])*(12.0*s[0]+3.0)-3.0*(1.0-s[0])*(1.0-s[0])*(6.0*s[0]*s[0]+3.0*s[0]+1.0);
2083 F1_div(3,0) = s[0]*s[0]*s[0]*(1.0-s[0])*(-3.0)+(4.0-3.0*s[0])*(-s[0]*s[0]*s[0]+3.0*s[0]*s[0]*(1.0-s[0]));
2084 F1_div(8,0) = s[0]*(1.0-s[0])*(1.0-s[0])*(1.0-s[0])*3.0+(-3.0*s[0]*(1.0-s[0])*(1.0-s[0])+(1.0-s[0])*(1.0-s[0])*(1.0-s[0]))*(1.0+3.0*s[0]);
2085 F1_div(9,0) = -1.0*s[0]*s[0]*s[0]*(1.0-s[0])+3.0/2.0*(1.0-s[0])*(1.0-s[0])*s[0]*s[0];
2086 F1_div(14,0) = -3.0/2.0*s[0]*s[0]*(1.0-s[0])*(1.0-s[0]) + 1.0/2.0*(1.0-s[0])*(1.0-s[0])*(1.0-s[0])*2.0*s[0];
2088 H1[3] = -1.0/2.0*(1.0-ata2+2.0*a1)*(3.0*s[0]*s[0]-2.0*s[0]*s[0]*s[0]);
2089 H1[4] = -1.0*a2*(3.0*s[0]*s[0]-2.0*s[0]*s[0]*s[0]);
2090 H1[7] = 1.0-3.0*s[0]*s[0]+2.0*s[0]*s[0]*s[0];
2091 H1[8] = -1.0/2.0*(1.0+ata2)*(1.0-3.0*s[0]*s[0]+2.0*s[0]*s[0]*s[0]);
2092 H1[9] = 1.0/2.0*(a1-ata2)*(s[0]*s[0]*s[0]-s[0]*s[0]);
2093 H1[10] = -1.0/2.0*(a2*a2/(1.0+a1))*(s[0]*s[0]*s[0]-s[0]*s[0]);
2094 H1[13] = ((-1.0*c1*cc1)/(c1*cc2+c2*cc1))*(s[0]-2.0*s[0]*s[0]+s[0]*s[0]*s[0]);
2095 H1[14] = -1.0*( 1.0/2.0*(1.0+ata2)+(c2*cc2/(c1*cc2+c2*cc1)) )*(s[0]-2.0*s[0]*s[0]+s[0]*s[0]*s[0]);
2096 H1[15] = (s[0]*s[0]*s[0]-s[0]*s[0])/(2.0*(1.0+a1));
2097 H1[17] = -1.0/(c1*cc2+c2*cc1)*(s[0]-2.0*s[0]*s[0]+s[0]*s[0]*s[0]);
2098 for(
unsigned i=0;
i<21;
i++)
2100 Bt(29,
i) = j1*F1_div(
i,0)+j2*H1[
i];
2103 t[0] = p(1,0)-p(2,0) + 9.0/16.0*(p(0,0)-p(1,0))-3.0/32.0*(angle_max-angle_min)*(-sin(angle_max)+7.0*sin(angle_min));
2104 t[1] = p(1,1)-p(2,1) + 9.0/16.0*(p(0,1)-p(1,1))-3.0/32.0*(angle_max-angle_min)*(cos(angle_max)-7.0*cos(angle_min));
2105 magnitude = sqrt((p(0,0)-p(2,0))*(p(0,0)-p(2,0)) + (p(0,1)-p(2,1))*(p(0,1)-p(2,1)));
2106 aa[0] = (p(0,0)-p(2,0))/(magnitude*magnitude);
2107 aa[1] = (p(0,1)-p(2,1))/(magnitude*magnitude);
2108 k1 = -1.0*(
t[0]*aa[0] +
t[1]*aa[1]);
2110 magnitude = sqrt((p(1,0)-s2[0])*(p(1,0)-s2[0]) + (p(1,1)-s2[1])*(p(1,1)-s2[1]));
2111 aa[0] = (p(1,0)-s2[0])/(magnitude*magnitude);
2112 aa[1] = (p(1,1)-s2[1])/(magnitude*magnitude);
2113 k2 = -1.0*(
t[0]*aa[0] +
t[1]*aa[1]);
2116 F1_div(0,0) = 5.0*s[0]*s[0]*6.0*s[0]*s[0]-4.0*s[0]*s[0]*15.0*s[0]+3.0*s[0]*s[0]*10.0;
2117 F1_div(2,0) = (1.0-s[0])*(1.0-s[0])*(1.0-s[0])*(12.0*s[0]+3.0)-3.0*(1.0-s[0])*(1.0-s[0])*(6.0*s[0]*s[0]+3.0*s[0]+1.0);
2118 F1_div(3,0) = s[0]*s[0]*s[0]*(1.0-s[0])*(-3.0)+(4.0-3.0*s[0])*(-s[0]*s[0]*s[0]+3.0*s[0]*s[0]*(1.0-s[0]));
2119 F1_div(8,0) = s[0]*(1.0-s[0])*(1.0-s[0])*(1.0-s[0])*3.0+(-3.0*s[0]*(1.0-s[0])*(1.0-s[0])+(1.0-s[0])*(1.0-s[0])*(1.0-s[0]))*(1.0+3.0*s[0]);
2120 F1_div(9,0) = -1.0*s[0]*s[0]*s[0]*(1.0-s[0])+3.0/2.0*(1.0-s[0])*(1.0-s[0])*s[0]*s[0];
2121 F1_div(14,0) = -3.0/2.0*s[0]*s[0]*(1.0-s[0])*(1.0-s[0]) + 1.0/2.0*(1.0-s[0])*(1.0-s[0])*(1.0-s[0])*2.0*s[0];
2124 H1[3] = -1.0/2.0*(1.0-ata2+2.0*a1)*(3.0*s[0]*s[0]-2.0*s[0]*s[0]*s[0]);
2125 H1[4] = -1.0*a2*(3.0*s[0]*s[0]-2.0*s[0]*s[0]*s[0]);
2126 H1[7] = 1.0-3.0*s[0]*s[0]+2.0*s[0]*s[0]*s[0];
2127 H1[8] = -1.0/2.0*(1.0+ata2)*(1.0-3.0*s[0]*s[0]+2.0*s[0]*s[0]*s[0]);
2128 H1[9] = 1.0/2.0*(a1-ata2)*(s[0]*s[0]*s[0]-s[0]*s[0]);
2129 H1[10] = -1.0/2.0*(a2*a2/(1.0+a1))*(s[0]*s[0]*s[0]-s[0]*s[0]);
2130 H1[13] = ((-1.0*c1*cc1)/(c1*cc2+c2*cc1))*(s[0]-2.0*s[0]*s[0]+s[0]*s[0]*s[0]);
2131 H1[14] = -1.0*( 1.0/2.0*(1.0+ata2)+(c2*cc2/(c1*cc2+c2*cc1)) )*(s[0]-2.0*s[0]*s[0]+s[0]*s[0]*s[0]);
2132 H1[15] = (s[0]*s[0]*s[0]-s[0]*s[0])/(2.0*(1.0+a1));
2133 H1[17] = -1.0/(c1*cc2+c2*cc1)*(s[0]-2.0*s[0]*s[0]+s[0]*s[0]*s[0]);
2134 for(
unsigned i=0;
i<21;
i++)
2136 Bt(30,
i) = k1*F1_div(
i,0)+k2*H1[
i];
2140 H3[3] = (3.0*s[0]*s[0]-2.0*s[0]*s[0]*s[0]) - A*(-1.0*s[0]*s[0]+s[0]*s[0]*s[0]);
2141 H3[4] = -1.0/2.0*(3.0*s[0]*s[0]-2.0*s[0]*s[0]*s[0]) - (BB+1.0/2.0)*(-1.0*s[0]*s[0]+s[0]*s[0]*s[0]);
2142 H3[5] = -1.0/2.0*(1.0-3.0*s[0]*s[0]+2.0*s[0]*s[0]*s[0]) + 1.0/2.0*(C+1.0)*(s[0]-2.0*s[0]*s[0]+s[0]*s[0]*s[0]);
2143 H3[6] = (1.0-3.0*s[0]*s[0]+2.0*s[0]*s[0]*s[0]) + 1.0/2.0*E*(s[0]-2.0*s[0]*s[0]+s[0]*s[0]*s[0]);
2144 H3[9] = (1.0+a1)/(2.0*a2)*(s[0]*s[0]*s[0]-s[0]*s[0]);
2145 H3[10] = 1.0/2.0*(1.0+ a2/(1.0+a1))*(s[0]*s[0]*s[0]-s[0]*s[0]);
2146 H3[11] = -1.0/2.0*(1.0+ b1/(1.0+b2) )*(s[0]-2.0*s[0]*s[0]+s[0]*s[0]*s[0]);
2147 H3[12] = -1.0*(1.0+b2)/(2.0*b1)*(s[0]-2.0*s[0]*s[0]+s[0]*s[0]*s[0]);
2148 H3[15] = -1.0/(2.0*(1.0+a1)*a2)*(s[0]*s[0]*s[0]-s[0]*s[0]);
2149 H3[16] = 1.0/(2.0*b1*(1.0+b2))*(s[0]-2.0*s[0]*s[0]+s[0]*s[0]*s[0]);
2151 for(
unsigned i=0;
i<21;
i++)
2152 for(
unsigned i=0;
i<21;
i++)
2154 Bt(31,
i) = -1.0*sqrt(2.0)*H3[
i];
2158 H3[3] = (3.0*s[0]*s[0]-2.0*s[0]*s[0]*s[0]) - A*(-1.0*s[0]*s[0]+s[0]*s[0]*s[0]);
2159 H3[4] = -1.0/2.0*(3.0*s[0]*s[0]-2.0*s[0]*s[0]*s[0]) - (BB+1.0/2.0)*(-1.0*s[0]*s[0]+s[0]*s[0]*s[0]);
2160 H3[5] = -1.0/2.0*(1.0-3.0*s[0]*s[0]+2.0*s[0]*s[0]*s[0]) + 1.0/2.0*(C+1.0)*(s[0]-2.0*s[0]*s[0]+s[0]*s[0]*s[0]);
2161 H3[6] = (1.0-3.0*s[0]*s[0]+2.0*s[0]*s[0]*s[0]) + 1.0/2.0*E*(s[0]-2.0*s[0]*s[0]+s[0]*s[0]*s[0]);
2162 H3[9] = (1.0+a1)/(2.0*a2)*(s[0]*s[0]*s[0]-s[0]*s[0]);
2163 H3[10] = 1.0/2.0*(1.0+ a2/(1.0+a1))*(s[0]*s[0]*s[0]-s[0]*s[0]);
2164 H3[11] = -1.0/2.0*(1.0+ b1/(1.0+b2) )*(s[0]-2.0*s[0]*s[0]+s[0]*s[0]*s[0]);
2165 H3[12] = -1.0*(1.0+b2)/(2.0*b1)*(s[0]-2.0*s[0]*s[0]+s[0]*s[0]*s[0]);
2166 H3[15] = -1.0/(2.0*(1.0+a1)*a2)*(s[0]*s[0]*s[0]-s[0]*s[0]);
2167 H3[16] = 1.0/(2.0*b1*(1.0+b2))*(s[0]-2.0*s[0]*s[0]+s[0]*s[0]*s[0]);
2169 for(
unsigned i=0;
i<21;
i++)
2171 Bt(32,
i) = -1.0*sqrt(2.0)*H3[
i];
2177 for(
unsigned i=0;
i<21;
i++)
2179 for(
unsigned j=0;j<36;j++)
2193 basis_curve(s,basis);
2199 for(
unsigned i=0;
i<36;
i++)
2201 for(
unsigned j=0;j<36;j++)
2203 psi[
i] += A(
i,j)*basis[j];
2206 for(
unsigned i=0;
i<36;
i++)
2208 psi_curve[
i] = psi[
i];
2218 Cshape(s,psi_curve);
2222 dbasis_local_curve(s,basis,dbasis);
2227 for(
unsigned i=0;
i<36;
i++)
2229 for(
unsigned j=0;j<36;j++)
2231 for(
unsigned k=0;k<2;k++)
2233 dpsi(
i,k) += A(
i,j)*dbasis(j,k);
2237 for(
unsigned i=0;
i<36;
i++)
2239 for(
unsigned k=0;k<2;k++)
2241 dpsi_curve(
i,k) = dpsi(
i,k);
2252 dCshape_local(s,psi_curve,dpsi_curve);
2256 DShape dbasis(36,2), d2basis(36,3);
2257 d2basis_local_curve(s,basis,dbasis,d2basis);
2262 for(
unsigned i=0;
i<36;
i++)
2264 for(
unsigned j=0;j<36;j++)
2266 for(
unsigned k=0;k<3;k++)
2268 d2psi(
i,k) += A(
i,j)*d2basis(j,k);
2272 for(
unsigned i=0;
i<36;
i++)
2274 for(
unsigned k=0;k<3;k++)
2276 d2psi_curve(
i,k) = d2psi(
i,k);
2287 for(
unsigned i=0;
i<36;
i++)
2289 for(
unsigned j=0;j<36;j++)
2293 A(1,0) = 6496.0/27.0;
2294 A(1,2) = 55376.0/27.0;
2295 A(1,3) = 15296.0/3.0;
2296 A(1,4) = 86464.0/27.0;
2298 A(1,8) = -6896.0/9.0;
2299 A(1,10) = -136424.0/27.0;
2300 A(1,11) = -187040.0/27.0;
2301 A(1,12) = -27880.0/27.0;
2302 A(1,15) = 7750.0/9.0;
2303 A(1,17) = 98371.0/27.0;
2304 A(1,18) = 41027.0/27.0;
2305 A(1,21) = -10501.0/27.0;
2306 A(1,23) = -17323.0/27.0;
2307 A(1,26) = 490.0/9.0;
2309 A(0,3) = 86464.0/27.0;
2310 A(0,4) = 15296.0/3.0;
2311 A(0,5) = 55376.0/27.0;
2312 A(0,7) = 6496.0/27.0;
2313 A(0,10) = -27880.0/27.0;
2314 A(0,11) = -187040.0/27.0;
2315 A(0,12) = -136424.0/27.0;
2316 A(0,14) = -6896.0/9.0;
2317 A(0,17) = 41027.0/27.0;
2318 A(0,18) = 98371.0/27.0;
2319 A(0,20) = 7750.0/9.00;
2320 A(0,23) = -17323.0/27.0;
2321 A(0,25) = -10501.0/27.0;
2322 A(0,29) = 490.00/9.0;
2323 A(2,0) = -6496.00/27.0;
2324 A(2,2) = 14176.00/27.00;
2325 A(2,3) = -2944.00/27.00;
2326 A(2,4) = -2944.00/27.00;
2327 A(2,5) = 14176.00/27.00;
2328 A(2,7) = -6496.00/27.00;
2329 A(2,8) = 24784.00/27.00;
2330 A(2,10) = -5680.00/27.00;
2331 A(2,11) = 12736.00/9.00;
2332 A(2,12) = -5680.00/27.00;
2333 A(2,14) = 24784.00/27.00;
2334 A(2,15) = -11846.00/9.00;
2335 A(2,17) = -26758.00/27.00;
2336 A(2,18) = -26758.00/27.00;
2337 A(2,20) = -11846.00/9.00;
2338 A(2,21) = 22789.00/27.00;
2339 A(2,23) = 18262.00/27.00;
2340 A(2,25) = 22789.00/27.00;
2341 A(2,26) = -5566.00/27.00;
2342 A(2,29) = -5566.00/27.00;
2344 A(6,0) = -400.00/9.00;
2345 A(6,2) = -3080.00/9.00;
2347 A(6,4) = -4496.00/9.00;
2348 A(6,5) = -232.00/9.00;
2349 A(6,8) = 416.00/3.00;
2350 A(6,10) = 7448.00/9.00;
2351 A(6,11) = 9872.00/9.00;
2352 A(6,12) = 1472.00/9.00;
2353 A(6,15) = -457.00/3.00;
2354 A(6,17) = -1177.00/2.00;
2355 A(6,18) = -4337.00/18.00;
2356 A(6,21) = 607.00/9.00;
2357 A(6,23) = 619.00/6.00;
2358 A(6,26) = -28.00/3.00;
2359 A(5,1) = -896.00/9.00;
2360 A(5,2) = -392.00/9.00;
2361 A(5,3) = 2384.00/9.00;
2362 A(5,4) = 2512.00/9.00;
2363 A(5,5) = 232.00/9.00;
2364 A(5,9) = 2336.00/9.00;
2365 A(5,10) = -8.00/9.00;
2366 A(5,11) = -3920.00/9.00;
2367 A(5,12) = -976.00/9.00;
2368 A(5,16) = -2104.00/9.00;
2369 A(5,17) = 123.00/2.00;
2370 A(5,18) = 1981.00/18.00;
2371 A(5,22) = 766.00/9.00;
2372 A(5,23) = -307.00/18.00;
2373 A(5,27) = -31.00/3.00;
2374 A(4,2) = 232.00/9.00;
2375 A(4,3) = 2512.00/9.00;
2376 A(4,4) = 2384.00/9.00;
2377 A(4,5) = -392.00/9.00;
2378 A(4,6) = -896.00/9.00;
2379 A(4,10) = -976.00/9.00;
2380 A(4,11) = -3920.00/9.00;
2381 A(4,12) = -8.00/9.00;
2382 A(4,13) = 2336.00/9.00;
2383 A(4,17) = 1981.00/18.00;
2384 A(4,18) = 123.00/2.00;
2385 A(4,19) = -2104.00/9.00;
2386 A(4,23) = -307.00/18.00;
2387 A(4,24) = 766.00/9.00;
2388 A(4,28) = -31.00/3.00;
2389 A(3,2) = -232.00/9.00;
2390 A(3,3) = -4496.00/9.00;
2392 A(3,5) = -3080.00/9.00;
2393 A(3,7) = -400.00/9.00;
2395 A(3,10) = 1472.00/9.00;
2396 A(3,11) = 9872.00/9.00;
2397 A(3,12) = 7448.00/9.00;
2398 A(3,14) = 416.00/3.00;
2399 A(3,17) = -4337.00/18.00;
2400 A(3,18) = -1177.00/2.00;
2401 A(3,20) = -457.00/3.00;
2402 A(3,23) = 619.00/6.00;
2403 A(3,25) = 607.00/9.00;
2404 A(3,29) = -28.00/3.00;
2405 A(8,0) = -400.00/9.00;
2406 A(8,2) = 1456.00/9.00;
2407 A(8,3) = -992.00/9.00;
2408 A(8,4) = -5248.00/9.00;
2409 A(8,5) = -4096.00/9.00;
2410 A(8,6) = -896.00/9.00;
2411 A(8,8) = 1552.00/9.00;
2412 A(8,10) = -464.00/3.00;
2413 A(8,11) = 2464.00/3.00;
2414 A(8,12) = 3424.00/3.00;
2415 A(8,13) = 3040.00/9.00;
2416 A(8,15) = -761.00/3.00;
2417 A(8,17) = -1831.00/9.00;
2419 A(8,19) = -1288.00/3.00;
2420 A(8,21) = 1528.00/9.00;
2421 A(8,23) = 2266.00/9.00;
2422 A(8,24) = 2210.00/9.00;
2423 A(8,26) = -406.00/9.00;
2424 A(8,28) = -499.00/9.00;
2426 A(7,1) = -896.00/9.00;
2427 A(7,2) = -4096.00/9.00;
2428 A(7,3) = -5248.00/9.00;
2429 A(7,4) = -992.00/9.00;
2430 A(7,5) = 1456.00/9.00;
2431 A(7,7) = -400.00/9.00;
2432 A(7,9) = 3040.00/9.00;
2433 A(7,10) = 3424.00/3.00;
2434 A(7,11) = 2464.00/3.00;
2435 A(7,12) = -464.00/3.00;
2436 A(7,14) = 1552.00/9.00;
2437 A(7,16) = -1288.00/3.00;
2439 A(7,18) = -1831.00/9.00;
2440 A(7,20) = -761.00/3.00;
2441 A(7,22) = 2210.00/9.00;
2442 A(7,23) = 2266.00/9.00;
2443 A(7,25) = 1528.00/9.00;
2444 A(7,27) = -499.00/9.00;
2445 A(7,29) = -406.00/9.00;
2447 A(14,0) = 8.00/3.00;
2448 A(14,2) = 52.00/3.00;
2451 A(14,5) = 4.00/3.00;
2453 A(14,10) = -124.00/3.00;
2454 A(14,11) = -160.00/3.00;
2456 A(14,15) = 17.00/2.00;
2457 A(14,17) = 349.00/12.00;
2458 A(14,18) = 47.00/4.00;
2459 A(14,21) = -11.00/3.00;
2460 A(14,23) = -61.00/12.00;
2461 A(14,26) = 1.00/2.00;
2462 A(13,1) = 32.00/3.00;
2463 A(13,2) = 8.00/3.00;
2464 A(13,3) = -80.00/3.00;
2465 A(13,4) = -80.00/3.00;
2466 A(13,5) = -8.00/3.00;
2467 A(13,9) = -80.00/3.00;
2468 A(13,10) = 8.00/3.00;
2469 A(13,11) = 128.00/3.00;
2470 A(13,12) = 32.00/3.00;
2471 A(13,16) = 70.00/3.0;
2472 A(13,17) = -43.0/6.0;
2473 A(13,18) = -65.0/6.0;
2474 A(13,22) = -25.0/3.0;
2475 A(13,23) = 11.0/6.0;
2481 A(12,10) = -28.0/3.0;
2482 A(12,11) = -64.0/3.0;
2483 A(12,12) = -16.0/3.0;
2484 A(12,17) = 29.0/4.0;
2485 A(12,18) = 65.0/12.0;
2486 A(12,23) = -17.0/12.0;
2491 A(11,10) = -16.0/3.0;
2492 A(11,11) = -64.0/3.0;
2493 A(11,12) = -28.0/3.0;
2494 A(11,17) = 65.0/12.0;
2495 A(11,18) = 29.0/4.0;
2496 A(11,23) = -17.0/12.0;
2499 A(10,3) = -80.0/3.0;
2500 A(10,4) = -80.0/3.0;
2503 A(10,10) = 32.0/3.0;
2504 A(10,11) = 128.0/3.0;
2506 A(10,13) = -80.0/3.0;
2507 A(10,17) = -65.0/6.0;
2508 A(10,18) = -43.0/6.0;
2509 A(10,19) = 70.0/3.0;
2510 A(10,23) = 11.0/6.0;
2511 A(10,24) = -25.0/3.0;
2519 A(9,11) = -160.0/3.0;
2520 A(9,12) = -124.0/3.0;
2523 A(9,18) = 349.0/12.0;
2525 A(9,23) = -61.0/12.0;
2526 A(9,25) = -11.0/3.0;
2535 A(17,12) = -8.0/3.0;
2536 A(17,15) = -33.0/2.0;
2537 A(17,17) = 51.0/2.0;
2538 A(17,18) = 19.0/3.0;
2539 A(17,21) = 73.0/6.0;
2540 A(17,23) = -25.0/6.0;
2541 A(17,26) = -25.0/6.0;
2543 A(16,1) = -32.0/3.0;
2544 A(16,2) = -160.0/3.0;
2545 A(16,3) = -320.0/3.0;
2546 A(16,4) = -320.0/3.0;
2547 A(16,5) = -160.0/3.0;
2548 A(16,6) = -32.0/3.0;
2549 A(16,9) = 112.0/3.0;
2550 A(16,10) = 448.0/3.0;
2552 A(16,12) = 448.0/3.0;
2553 A(16,13) = 112.0/3.0;
2558 A(16,22) = 95.0/3.0;
2559 A(16,23) = 190.0/3.0;
2560 A(16,24) = 95.0/3.0;
2561 A(16,27) = -28.0/3.0;
2562 A(16,28) = -28.0/3.0;
2568 A(15,10) = -8.0/3.0;
2571 A(15,14) = 32.0/3.0;
2572 A(15,17) = 19.0/3.0;
2573 A(15,18) = 51.0/2.0;
2574 A(15,20) = -33.0/2.0;
2575 A(15,23) = -25.0/6.0;
2576 A(15,25) = 73.0/6.0;
2577 A(15,29) = -25.0/6.0;
2609 A(20,3) = 128.0*sqrt(2.0);
2610 A(20,4) = 128.0*sqrt(2.0);
2611 A(20,10) = -32.0*sqrt(2.0);
2612 A(20,11) = -192.0*sqrt(2.0);
2613 A(20,12) = -32.0*sqrt(2.0);
2614 A(20,17) = 40.0*sqrt(2.0);
2615 A(20,18) = 40.0*sqrt(2.0);
2616 A(20,23) = -8.0*sqrt(2.0);
2617 A(24,3) = -65536.0/27.0;
2618 A(24,4) = -114688.0/27.0;
2619 A(24,5) = -40960.0/27.0;
2620 A(24,7) = -8192.0/27.0;
2621 A(24,10) = 16384.0/27.0;
2622 A(24,11) = 53248./9.0;
2623 A(24,12) = 38912.0/9.0;
2624 A(24,14) = 26624.0/27.0;
2625 A(24,17) = -32768.0/27.0;
2626 A(24,18) = -10240.0/3.0;
2627 A(24,20) = -10240.0/9.0;
2628 A(24,23) = 16384.0/27.0;
2629 A(24,25) = 14336.0/27.0;
2630 A(24,29) = -2048.0/27.0;
2631 A(23,2) = 53248.0/27.0;
2632 A(23,3) = 40960.0/9.0;
2633 A(23,4) = 69632.0/27.0;
2634 A(23,5) = -8192.0/27.0;
2635 A(23,7) = 8192.0/27.0;
2636 A(23,10) = -48128.0/9.0;
2637 A(23,11) = -22528.0/3.0;
2639 A(23,14) = -10240.0/9.0;
2640 A(23,17) = 14336.0/3.0;
2641 A(23,18) = 8192.0/3.0;
2642 A(23,20) = 14336.0/9.0;
2643 A(23,23) = -37888.0/27.0;
2644 A(23,25) = -26624.0/27.0;
2645 A(23,29) = 2048.0/9.0;
2646 A(22,0) = 8192.0/27.0;
2647 A(22,2) = -8192.0/27.0;
2648 A(22,3) = 69632.0/27.0;
2649 A(22,4) = 40960.0/9.0;
2650 A(22,5) = 53248.0/27.0;
2651 A(22,8) = -10240.0/9.0;
2653 A(22,11) = -22528.0/3.0;
2654 A(22,12) = -48128.0/9.0;
2655 A(22,15) = 14336.0/9.0;
2656 A(22,17) = 8192.0/3.0;
2657 A(22,18) = 14336.0/3.0;
2658 A(22,21) = -26624.0/27.0;
2659 A(22,23) = -37888.0/27.0;
2660 A(22,26) = 2048.0/9.0;
2661 A(21,0) = -8192.0/27.0;
2662 A(21,2) = -40960.0/27.0;
2663 A(21,3) = -114688.0/27.0;
2664 A(21,4) = -65536.0/27.0;
2665 A(21,8) = 26624.0/27.0;
2666 A(21,10) = 38912.0/9.0;
2667 A(21,11) = 53248.0/9.0;
2668 A(21,12) = 16384.0/27.0;
2669 A(21,15) = -10240.0/9.0;
2670 A(21,17) = -10240.0/3.0;
2671 A(21,18) = -32768.0/27.0;
2672 A(21,21) = 14336.0/27.0;
2673 A(21,23) = 16384.0/27.0;
2674 A(21,26) = -2048.0/27.0;
2675 A(26,2) = -71680.0/27.0;
2676 A(26,3) = -145408.0/27.0;
2677 A(26,4) = -88064.0/27.0;
2678 A(26,5) = -2048.0/9.0;
2679 A(26,10) = 150016.0/27.0;
2680 A(26,11) = 183296.0/27.0;
2681 A(26,12) = 31232.0/27.0;
2682 A(26,17) = -94208.0/27.0;
2683 A(26,18) = -40960.0/27.0;
2684 A(26,23) = 15872.0/27.0;
2685 A(25,2) = -2048.0/9.0;
2686 A(25,3) = -88064.0/27.0;
2687 A(25,4) = -145408.0/27.0;
2688 A(25,5) = -71680.0/27.0;
2689 A(25,10) = 31232.0/27.0;
2690 A(25,11) = 183296.0/27.0;
2691 A(25,12) = 150016.0/27.0;
2692 A(25,17) = -40960.0/27.0;
2693 A(25,18) = -94208.0/27.0;
2694 A(25,23) = 15872.0/27.0;
2695 A(30,4) = -2048.0/9.0;
2696 A(30,5) = -4096.0/9.0;
2697 A(30,6) = -2048.0/9.0;
2698 A(30,11) = 512.0/3.0;
2699 A(30,12) = 7168.0/9.0;
2700 A(30,13) = 5632.0/9.0;
2701 A(30,17) = -256.0/9.0;
2702 A(30,18) = -3584.0/9.0;
2703 A(30,19) = -1792.0/3.0;
2706 A(30,23) = 512.0/9.0;
2707 A(30,24) = 2048.0/9.0;
2708 A(30,28) = -256.0/9.0;
2709 A(29,2) = -2048.0/9.0;
2710 A(29,3) = -8192.0/9.0;
2711 A(29,4) = -4096.0/3.0;
2712 A(29,5) = -8192.0/9.0;
2713 A(29,6) = -2048.0/9.0;
2714 A(29,10) = 6656.0/9.0;
2715 A(29,11) = 6656.0/3.0;
2716 A(29,12) = 6656.0/3.0;
2717 A(29,13) = 6656.0/9.0;
2718 A(29,17) = -7936.0/9.0;
2719 A(29,18) = -15872.0/9.0;
2720 A(29,19) = -7936.0/9.0;
2721 A(29,23) = 4096.0/9.0;
2722 A(29,24) = 4096.0/9.0;
2723 A(29,28) = -256.0/3.0;
2724 A(28,1) = -2048.0/9.0;
2725 A(28,2) = -8192.0/9.0;
2726 A(28,3) = -4096.0/3.0;
2727 A(28,4) = -8192.0/9.0;
2728 A(28,5) = -2048.0/9.0;
2729 A(28,9) = 6656.0/9.0;
2730 A(28,10) = 6656.0/3.0;
2731 A(28,11) = 6656.0/3.0;
2732 A(28,12) = 6656.0/9.0;
2733 A(28,16) = -7936.0/9.0;
2734 A(28,17) = -15872.0/9.0;
2735 A(28,18) = -7936.0/9.0;
2736 A(28,22) = 4096.0/9.0;
2737 A(28,23) = 4096.0/9.0;
2738 A(28,27) = -256.0/3.0;
2739 A(27,1) = -2048.0/9.0;
2740 A(27,2) = -4096.0/9.0;
2741 A(27,3) = -2048.0/9.0;
2742 A(27,9) = 5632.0/9.0;
2743 A(27,10) = 7168.0/9.0;
2744 A(27,11) = 512.0/3.0;
2745 A(27,16) = -1792.0/3.0;
2746 A(27,17) = -3584.0/9.0;
2747 A(27,18) = -256.0/9.0;
2748 A(27,22) = 2048.0/9.0;
2749 A(27,23) = 512.0/9.0;
2750 A(27,27) = -256.0/9.0;
2751 A(32,2) = 1024.0*sqrt(2.0)/9.0;
2752 A(32,3) = 1024.0*sqrt(2.0)/9.0;
2753 A(32,10) = -1792.0*sqrt(2.0)/9.0;
2754 A(32,11) = -256.0*sqrt(2.0)/3.0;
2755 A(32,17) = 896*sqrt(2.0)/9.0;
2756 A(32,18) = 128.0*sqrt(2.0)/9.0;
2757 A(32,23) = -128.0*sqrt(2.0)/9.0;
2758 A(31,4) = 1024.0*sqrt(2.0)/9.0;
2759 A(31,5) = 1024.0*sqrt(2.0)/9.0;
2760 A(31,11) = -256.0*sqrt(2.0)/3.0;
2761 A(31,12) = -1792.0*sqrt(2.0)/9.0;
2762 A(31,17) = 128.0*sqrt(2.0)/9.0;
2763 A(31,18) = 896.0*sqrt(2.0)/9.0;
2764 A(31,23) = -128.0*sqrt(2.0)/9.0;
2769 A(34,11) = -10240.0;
2778 A(33,11) = -10240.0;
2790 A(35,17) = -10240.0;
2791 A(35,18) = -10240.0;
2802 psi_curve[7] = s[0]*s[0]*s[0]*s[0]*s[0]*s[0]*s[0];
2803 psi_curve[6] = s[0]*s[0]*s[0]*s[0]*s[0]*s[0]*s[1];
2804 psi_curve[5] = s[0]*s[0]*s[0]*s[0]*s[0]*s[1]*s[1];
2805 psi_curve[4] = s[0]*s[0]*s[0]*s[0]*s[1]*s[1]*s[1];
2806 psi_curve[3] = s[0]*s[0]*s[0]*s[1]*s[1]*s[1]*s[1];
2807 psi_curve[2] = s[0]*s[0]*s[1]*s[1]*s[1]*s[1]*s[1];
2808 psi_curve[1] = s[0]*s[1]*s[1]*s[1]*s[1]*s[1]*s[1];
2809 psi_curve[0] = s[1]*s[1]*s[1]*s[1]*s[1]*s[1]*s[1];
2810 psi_curve[14] = s[0]*s[0]*s[0]*s[0]*s[0]*s[0];
2811 psi_curve[13] = s[0]*s[0]*s[0]*s[0]*s[0]*s[1];
2812 psi_curve[12] = s[0]*s[0]*s[0]*s[0]*s[1]*s[1];
2813 psi_curve[11] = s[0]*s[0]*s[0]*s[1]*s[1]*s[1];
2814 psi_curve[10] = s[0]*s[0]*s[1]*s[1]*s[1]*s[1];
2815 psi_curve[9] = s[0]*s[1]*s[1]*s[1]*s[1]*s[1];
2816 psi_curve[8] = s[1]*s[1]*s[1]*s[1]*s[1]*s[1];
2817 psi_curve[20] = s[0]*s[0]*s[0]*s[0]*s[0];
2818 psi_curve[19] = s[0]*s[0]*s[0]*s[0]*s[1];
2819 psi_curve[18] = s[0]*s[0]*s[0]*s[1]*s[1];
2820 psi_curve[17] = s[0]*s[0]*s[1]*s[1]*s[1];
2821 psi_curve[16] = s[0]*s[1]*s[1]*s[1]*s[1];
2822 psi_curve[15] = s[1]*s[1]*s[1]*s[1]*s[1];
2823 psi_curve[25] = s[0]*s[0]*s[0]*s[0];
2824 psi_curve[24] = s[0]*s[0]*s[0]*s[1];
2825 psi_curve[23] = s[0]*s[0]*s[1]*s[1];
2826 psi_curve[22] = s[0]*s[1]*s[1]*s[1];
2827 psi_curve[21] = s[1]*s[1]*s[1]*s[1];
2828 psi_curve[29] = s[0]*s[0]*s[0];
2829 psi_curve[28] = s[0]*s[0]*s[1];
2830 psi_curve[27] = s[0]*s[1]*s[1];
2831 psi_curve[26] = s[1]*s[1]*s[1];
2832 psi_curve[32] = s[0]*s[0];
2833 psi_curve[31] = s[0]*s[1];
2834 psi_curve[30] = s[1]*s[1];
2835 psi_curve[34] = s[0];
2836 psi_curve[33] = s[1];
2837 psi_curve[35] = 1.0;
2846 basis_curve(s,psi_curve);
2849 dpsi_curve(7,0) = 7.0*s[0]*s[0]*s[0]*s[0]*s[0]*s[0];
2850 dpsi_curve(6,0) = 6.0*s[0]*s[0]*s[0]*s[0]*s[0]*s[1];
2851 dpsi_curve(5,0) = 5.0*s[0]*s[0]*s[0]*s[0]*s[1]*s[1];
2852 dpsi_curve(4,0) = 4.0*s[0]*s[0]*s[0]*s[1]*s[1]*s[1];
2853 dpsi_curve(3,0) = 3.0*s[0]*s[0]*s[1]*s[1]*s[1]*s[1];
2854 dpsi_curve(2,0) = 2.0*s[0]*s[1]*s[1]*s[1]*s[1]*s[1];
2855 dpsi_curve(1,0) = 1.0*s[1]*s[1]*s[1]*s[1]*s[1]*s[1];
2856 dpsi_curve(0,0) = 0.0;
2857 dpsi_curve(14,0) = 6.0*s[0]*s[0]*s[0]*s[0]*s[0];
2858 dpsi_curve(13,0) = 5.0*s[0]*s[0]*s[0]*s[0]*s[1];
2859 dpsi_curve(12,0) = 4.0*s[0]*s[0]*s[0]*s[1]*s[1];
2860 dpsi_curve(11,0) = 3.0*s[0]*s[0]*s[1]*s[1]*s[1];
2861 dpsi_curve(10,0) = 2.0*s[0]*s[1]*s[1]*s[1]*s[1];
2862 dpsi_curve(9,0) = 1.0*s[1]*s[1]*s[1]*s[1]*s[1];
2863 dpsi_curve(8,0) = 0.0;
2864 dpsi_curve(20,0) = 5.0*s[0]*s[0]*s[0]*s[0];
2865 dpsi_curve(19,0) = 4.0*s[0]*s[0]*s[0]*s[1];
2866 dpsi_curve(18,0) = 3.0*s[0]*s[0]*s[1]*s[1];
2867 dpsi_curve(17,0) = 2.0*s[0]*s[1]*s[1]*s[1];
2868 dpsi_curve(16,0) = 1.0*s[1]*s[1]*s[1]*s[1];
2869 dpsi_curve(15,0) = 0.0;
2870 dpsi_curve(25,0) = 4.0*s[0]*s[0]*s[0];
2871 dpsi_curve(24,0) = 3.0*s[0]*s[0]*s[1];
2872 dpsi_curve(23,0) = 2.0*s[0]*s[1]*s[1];
2873 dpsi_curve(22,0) = 1.0*s[1]*s[1]*s[1];
2874 dpsi_curve(21,0) = 0.0;
2875 dpsi_curve(29,0) = 3.0*s[0]*s[0];
2876 dpsi_curve(28,0) = 2.0*s[0]*s[1];
2877 dpsi_curve(27,0) = 1.0*s[1]*s[1];
2878 dpsi_curve(26,0) = 0.0;
2879 dpsi_curve(32,0) = 2.0*s[0];
2880 dpsi_curve(31,0) = 1.0*s[1];
2881 dpsi_curve(30,0) = 0.0;
2882 dpsi_curve(34,0) = 1.0;
2883 dpsi_curve(33,0) = 0.0;
2884 dpsi_curve(35,0) = 0.0;
2886 dpsi_curve(7,1) = 0.0;
2887 dpsi_curve(6,1) = s[0]*s[0]*s[0]*s[0]*s[0]*s[0]*1.0;
2888 dpsi_curve(5,1) = s[0]*s[0]*s[0]*s[0]*s[0]*s[1]*2.0;
2889 dpsi_curve(4,1) = s[0]*s[0]*s[0]*s[0]*s[1]*s[1]*3.0;
2890 dpsi_curve(3,1) = s[0]*s[0]*s[0]*s[1]*s[1]*s[1]*4.0;
2891 dpsi_curve(2,1) = s[0]*s[0]*s[1]*s[1]*s[1]*s[1]*5.0;
2892 dpsi_curve(1,1) = s[0]*s[1]*s[1]*s[1]*s[1]*s[1]*6.0;
2893 dpsi_curve(0,1) = s[1]*s[1]*s[1]*s[1]*s[1]*s[1]*7.0;
2894 dpsi_curve(14,1) = 0.0;
2895 dpsi_curve(13,1) = s[0]*s[0]*s[0]*s[0]*s[0]*1.0;
2896 dpsi_curve(12,1) = s[0]*s[0]*s[0]*s[0]*s[1]*2.0;
2897 dpsi_curve(11,1) = s[0]*s[0]*s[0]*s[1]*s[1]*3.0;
2898 dpsi_curve(10,1) = s[0]*s[0]*s[1]*s[1]*s[1]*4.0;
2899 dpsi_curve(9,1) = s[0]*s[1]*s[1]*s[1]*s[1]*5.0;
2900 dpsi_curve(8,1) = s[1]*s[1]*s[1]*s[1]*s[1]*6.0;
2901 dpsi_curve(20,1) = 0.0;
2902 dpsi_curve(19,1) = s[0]*s[0]*s[0]*s[0]*1.0;
2903 dpsi_curve(18,1) = s[0]*s[0]*s[0]*s[1]*2.0;
2904 dpsi_curve(17,1) = s[0]*s[0]*s[1]*s[1]*3.0;
2905 dpsi_curve(16,1) = s[0]*s[1]*s[1]*s[1]*4.0;
2906 dpsi_curve(15,1) = s[1]*s[1]*s[1]*s[1]*5.0;
2907 dpsi_curve(25,1) = 0.0;
2908 dpsi_curve(24,1) = s[0]*s[0]*s[0]*1.0;
2909 dpsi_curve(23,1) = s[0]*s[0]*s[1]*2.0;
2910 dpsi_curve(22,1) = s[0]*s[1]*s[1]*3.0;
2911 dpsi_curve(21,1) = s[1]*s[1]*s[1]*4.0;
2912 dpsi_curve(29,1) = 0.0;
2913 dpsi_curve(28,1) = s[0]*s[0]*1.0;
2914 dpsi_curve(27,1) = s[0]*s[1]*2.0;
2915 dpsi_curve(26,1) = s[1]*s[1]*3.0;
2916 dpsi_curve(32,1) = 0.0;
2917 dpsi_curve(31,1) = s[0]*1.0;
2918 dpsi_curve(30,1) = s[1]*2.0;
2919 dpsi_curve(34,1) = 0.0;
2920 dpsi_curve(33,1) = 1.0;
2921 dpsi_curve(35,1) = 0.0;
2930 dbasis_local_curve(s,psi_curve,dpsi_curve);
2932 d2psi_curve(7,0) = 7.0*6.0*s[0]*s[0]*s[0]*s[0]*s[0];
2933 d2psi_curve(6,0) = 6.0*5.0*s[0]*s[0]*s[0]*s[0]*s[1];
2934 d2psi_curve(5,0) = 5.0*4.0*s[0]*s[0]*s[0]*s[1]*s[1];
2935 d2psi_curve(4,0) = 4.0*3.0*s[0]*s[0]*s[1]*s[1]*s[1];
2936 d2psi_curve(3,0) = 3.0*2.0*s[0]*s[1]*s[1]*s[1]*s[1];
2937 d2psi_curve(2,0) = 2.0*1.0*s[1]*s[1]*s[1]*s[1]*s[1];
2938 d2psi_curve(1,0) = 0.0;
2939 d2psi_curve(0,0) = 0.0;
2940 d2psi_curve(14,0) = 6.0*5.0*s[0]*s[0]*s[0]*s[0];
2941 d2psi_curve(13,0) = 5.0*4.0*s[0]*s[0]*s[0]*s[1];
2942 d2psi_curve(12,0) = 4.0*3.0*s[0]*s[0]*s[1]*s[1];
2943 d2psi_curve(11,0) = 3.0*2.0*s[0]*s[1]*s[1]*s[1];
2944 d2psi_curve(10,0) = 2.0*1.0*s[1]*s[1]*s[1]*s[1];
2945 d2psi_curve(9,0) = 0.0;
2946 d2psi_curve(8,0) = 0.0;
2947 d2psi_curve(20,0) = 5.0*4.0*s[0]*s[0]*s[0];
2948 d2psi_curve(19,0) = 4.0*3.0*s[0]*s[0]*s[1];
2949 d2psi_curve(18,0) = 3.0*2.0*s[0]*s[1]*s[1];
2950 d2psi_curve(17,0) = 2.0*1.0*s[1]*s[1]*s[1];
2951 d2psi_curve(16,0) = 0.0;
2952 d2psi_curve(15,0) = 0.0;
2953 d2psi_curve(25,0) = 4.0*3.0*s[0]*s[0];
2954 d2psi_curve(24,0) = 3.0*2.0*s[0]*s[1];
2955 d2psi_curve(23,0) = 2.0*1.0*s[1]*s[1];
2956 d2psi_curve(22,0) = 0.0;
2957 d2psi_curve(21,0) = 0.0;
2958 d2psi_curve(29,0) = 3.0*2.0*s[0];
2959 d2psi_curve(28,0) = 2.0*1.0*s[1];
2960 d2psi_curve(27,0) = 0.0;
2961 d2psi_curve(26,0) = 0.0;
2962 d2psi_curve(32,0) = 2.0*1.0;
2963 d2psi_curve(31,0) = 0.0;
2964 d2psi_curve(30,0) = 0.0;
2965 d2psi_curve(34,0) = 0.0;
2966 d2psi_curve(33,0) = 0.0;
2967 d2psi_curve(35,0) = 0.0;
2969 d2psi_curve(7,1) = 0.0;
2970 d2psi_curve(6,1) = 0.0;
2971 d2psi_curve(5,1) = s[0]*s[0]*s[0]*s[0]*s[0]*1.0*2.0;
2972 d2psi_curve(4,1) = s[0]*s[0]*s[0]*s[0]*s[1]*2.0*3.0;
2973 d2psi_curve(3,1) = s[0]*s[0]*s[0]*s[1]*s[1]*3.0*4.0;
2974 d2psi_curve(2,1) = s[0]*s[0]*s[1]*s[1]*s[1]*4.0*5.0;
2975 d2psi_curve(1,1) = s[0]*s[1]*s[1]*s[1]*s[1]*5.0*6.0;
2976 d2psi_curve(0,1) = s[1]*s[1]*s[1]*s[1]*s[1]*6.0*7.0;
2977 d2psi_curve(14,1) = 0.0;
2978 d2psi_curve(13,1) = 0.0;
2979 d2psi_curve(12,1) = s[0]*s[0]*s[0]*s[0]*1.0*2.0;
2980 d2psi_curve(11,1) = s[0]*s[0]*s[0]*s[1]*2.0*3.0;
2981 d2psi_curve(10,1) = s[0]*s[0]*s[1]*s[1]*3.0*4.0;
2982 d2psi_curve(9,1) = s[0]*s[1]*s[1]*s[1]*4.0*5.0;
2983 d2psi_curve(8,1) = s[1]*s[1]*s[1]*s[1]*5.0*6.0;
2984 d2psi_curve(20,1) = 0.0;
2985 d2psi_curve(19,1) = 0.0;
2986 d2psi_curve(18,1) = s[0]*s[0]*s[0]*1.0*2.0;
2987 d2psi_curve(17,1) = s[0]*s[0]*s[1]*2.0*3.0;
2988 d2psi_curve(16,1) = s[0]*s[1]*s[1]*3.0*4.0;
2989 d2psi_curve(15,1) = s[1]*s[1]*s[1]*4.0*5.0;
2990 d2psi_curve(25,1) = 0.0;
2991 d2psi_curve(24,1) = 0.0;
2992 d2psi_curve(23,1) = s[0]*s[0]*1.0*2.0;
2993 d2psi_curve(22,1) = s[0]*s[1]*2.0*3.0;
2994 d2psi_curve(21,1) = s[1]*s[1]*3.0*4.0;
2995 d2psi_curve(29,1) = 0.0;
2996 d2psi_curve(28,1) = 0.0;
2997 d2psi_curve(27,1) = s[0]*1.0*2.0;
2998 d2psi_curve(26,1) = s[1]*2.0*3.0;
2999 d2psi_curve(32,1) = 0.0;
3000 d2psi_curve(31,1) = 0.0;
3001 d2psi_curve(30,1) = 1.0*2.0;
3002 d2psi_curve(34,1) = 0.0;
3003 d2psi_curve(33,1) = 0.0;
3004 d2psi_curve(35,1) = 0.0;
3006 d2psi_curve(7,2) = 0.0;
3007 d2psi_curve(6,2) = 6.0*s[0]*s[0]*s[0]*s[0]*s[0]*1.0;
3008 d2psi_curve(5,2) = 5.0*s[0]*s[0]*s[0]*s[0]*s[1]*2.0;
3009 d2psi_curve(4,2) = 4.0*s[0]*s[0]*s[0]*s[1]*s[1]*3.0;
3010 d2psi_curve(3,2) = 3.0*s[0]*s[0]*s[1]*s[1]*s[1]*4.0;
3011 d2psi_curve(2,2) = 2.0*s[0]*s[1]*s[1]*s[1]*s[1]*5.0;
3012 d2psi_curve(1,2) = s[1]*s[1]*s[1]*s[1]*s[1]*6.0;
3013 d2psi_curve(0,2) = 0.0;
3014 d2psi_curve(14,2) = 0.0;
3015 d2psi_curve(13,2) = 5.0*s[0]*s[0]*s[0]*s[0]*1.0;
3016 d2psi_curve(12,2) = 4.0*s[0]*s[0]*s[0]*s[1]*2.0;
3017 d2psi_curve(11,2) = 3.0*s[0]*s[0]*s[1]*s[1]*3.0;
3018 d2psi_curve(10,2) = 2.0*s[0]*s[1]*s[1]*s[1]*4.0;
3019 d2psi_curve(9,2) = s[1]*s[1]*s[1]*s[1]*5.0;
3020 d2psi_curve(8,2) = 0.0;
3021 d2psi_curve(20,2) = 0.0;
3022 d2psi_curve(19,2) = 4.0*s[0]*s[0]*s[0]*1.0;
3023 d2psi_curve(18,2) = 3.0*s[0]*s[0]*s[1]*2.0;
3024 d2psi_curve(17,2) = 2.0*s[0]*s[1]*s[1]*3.0;
3025 d2psi_curve(16,2) = s[1]*s[1]*s[1]*4.0;
3026 d2psi_curve(15,2) = 0.0;
3027 d2psi_curve(25,2) = 0.0;
3028 d2psi_curve(24,2) = 3.0*s[0]*s[0]*1.0;
3029 d2psi_curve(23,2) = 2.0*s[0]*s[1]*2.0;
3030 d2psi_curve(22,2) = s[1]*s[1]*3.0;
3031 d2psi_curve(21,2) = 0.0;
3032 d2psi_curve(29,2) = 0.0;
3033 d2psi_curve(28,2) = 2.0*s[0]*1.0;
3034 d2psi_curve(27,2) = s[1]*2.0;
3035 d2psi_curve(26,2) = 0.0;
3036 d2psi_curve(32,2) = 0.0;
3037 d2psi_curve(31,2) = 1.0;
3038 d2psi_curve(30,2) = 0.0;
3039 d2psi_curve(34,2) = 0.0;
3040 d2psi_curve(33,2) = 0.0;
3041 d2psi_curve(35,2) = 0.0;
3055 template<
unsigned NNODE_1D>
3113 const unsigned el_dim = dim();
3117 for(
unsigned i=0;
i<el_dim;
i++) {s[
i] = integral_pt()->knot(ipt,
i);}
3130 const unsigned el_dim = dim();
3134 for(
unsigned i=0;
i<el_dim;
i++) {s[
i] = integral_pt()->knot(ipt,
i);}
3137 dbasis_local(s,psi,dpsids);
3150 const unsigned el_dim = dim();
3154 for(
unsigned i=0;
i<el_dim;
i++) {s[
i] = integral_pt()->knot(ipt,
i);}
3157 d2basis_local(s,psi,dpsids,d2psids);
3167 const unsigned el_dim = dim();
3171 for(
unsigned i=0;
i<el_dim;
i++) {s[
i] = integral_pt()->knot(ipt,
i);}
3184 const unsigned el_dim = dim();
3188 for(
unsigned i=0;
i<el_dim;
i++) {s[
i] = integral_pt()->knot(ipt,
i);}
3191 dbasis_c0_local(s,psi,dpsids);
3205 const unsigned el_dim = dim();
3209 for(
unsigned i=0;
i<el_dim;
i++) {s[
i] = integral_pt()->knot(ipt,
i);}
3211 d2basis_c0_local(s,psi,dpsids,d2psids);
3222 const unsigned el_dim = dim();
3226 for(
unsigned i=0;
i<el_dim;
i++) {s[
i] = integral_pt()->knot(ipt,
i);}
3239 const unsigned el_dim = dim();
3243 for(
unsigned i=0;
i<el_dim;
i++) {s[
i] = integral_pt()->knot(ipt,
i);}
3245 dtest_local(s,phi,dphids);
3258 const unsigned el_dim = dim();
3262 for(
unsigned i=0;
i<el_dim;
i++) {s[
i] = integral_pt()->knot(ipt,
i);}
3264 d2test_local(s,phi,dphids,d2phids);
3278 const unsigned el_dim = dim();
3281 dbasis_c0_local(s,psi,dpsi);
3284 unsigned n_node = 3;
3285 Shape psi_x(n_node);
3287 DShape d2psi_x(n_node,3);
3289 d2shape_local(s,psi_x,dpsi_x,d2psi_x);
3295 const double det = this->local_to_eulerian_mapping2(dpsi_x,jacobian,inverse_jacobian);
3298 transform_derivatives(inverse_jacobian,dpsi);
3314 const unsigned el_dim = dim();
3316 const unsigned n_deriv = N2deriv[el_dim];
3318 d2basis_c0_local(s,psi,dpsi,d2psi);
3321 unsigned n_node = 3;
3322 Shape psi_x(n_node);
3324 DShape d2psi_x(n_node,3);
3326 d2shape_local(s,psi_x,dpsi_x,d2psi_x);
3332 const double det = local_to_eulerian_mapping2(dpsi_x,jacobian,inverse_jacobian);
3338 myassemble_local_to_eulerian_jacobian2(d2psi_x,jacobian2);
3341 transform_second_derivatives(jacobian,inverse_jacobian,jacobian2,dpsi,d2psi);
3358 const unsigned el_dim = dim();
3361 dbasis_local(s,psi,dpsi);
3364 unsigned n_node = 3;
3365 Shape psi_x(n_node);
3367 DShape d2psi_x(n_node,3);
3369 d2shape_local(s,psi_x,dpsi_x,d2psi_x);
3375 const double det = this->local_to_eulerian_mapping2(dpsi_x,jacobian,inverse_jacobian);
3391 const unsigned el_dim = dim();
3395 d2basis_local(s,psi,dpsi,d2psi);
3398 unsigned n_node = 3;
3399 Shape psi_x(n_node);
3401 DShape d2psi_x(n_node,3);
3403 d2shape_local(s,psi_x,dpsi_x,d2psi_x);
3409 const double det = local_to_eulerian_mapping2(dpsi_x,jacobian,inverse_jacobian);
3425 const unsigned el_dim = dim();
3430 dbasis_c0_local_at_knot(ipt,psi,dpsi);
3433 unsigned n_node = 3;
3434 Shape psi_x(n_node);
3436 dshape_local_at_knot(ipt,psi_x,dpsi_x);
3439 dtest_local_at_knot(ipt,test,dtest);
3444 const double det = local_to_eulerian_mapping2(dpsi_x,inverse_jacobian);
3447 transform_derivatives(inverse_jacobian,dpsi);
3467 const unsigned el_dim = dim();
3470 d2basis_local_at_knot(ipt,psi,dpsi,d2psi);
3473 unsigned n_node = nnode();
3474 Shape psi_x(n_node);
3476 DShape d2psi_x(n_node,3);
3477 dshape_local_at_knot(ipt,psi_x,dpsi_x);
3480 d2test_local_at_knot(ipt,test,dtest,d2test);
3486 const double det = local_to_eulerian_mapping2(dpsi_x,jacobian,inverse_jacobian);
3502 const unsigned el_dim = dim();
3506 return local_to_eulerian_mapping2(dpsids,jacobian,inverse_jacobian);
3516 const unsigned el_dim = dim();
3519 const unsigned n_shape = 3;
3522 const unsigned n_shape_type = 1;
3525 for(
unsigned i=0;
i<el_dim;
i++)
3528 for(
unsigned j=0;j<el_dim;j++)
3531 jacobian(
i,j) = 0.0;
3533 for(
unsigned l=0;l<n_shape;l++)
3535 for(
unsigned k=0;k<n_shape_type;k++)
3541 jacobian(
i,j) += raw_nodal_position_gen(l,k,j)*dpsids(l,k,
i);
3548 return invert_jacobian_mapping(jacobian,inverse_jacobian);
3558 const unsigned n_node = 3;
3559 const unsigned n_position_type = 1;
3561 const unsigned n_dim_node = nodal_dimension();
3562 const unsigned n_dim_element = dim();
3566 Shape psi(n_node,n_position_type);
3567 DShape dpsids(n_node,n_position_type,n_dim_element);
3569 this->dshape_local(s,psi,dpsids);
3576 for(
unsigned i=0;
i<n_dim_element;
i++)
3578 for(
unsigned j=0;j<n_dim_node;j++)
3581 interpolated_G(
i,j) = 0.0;
3582 for(
unsigned l=0;l<n_node;l++)
3584 for(
unsigned k=0;k<n_position_type;k++)
3586 interpolated_G(
i,j) += raw_nodal_position_gen(l,k,j)*dpsids(l,k,
i);
3594 for(
unsigned i=0;
i<n_dim_element;
i++)
3596 for(
unsigned j=0;j<n_dim_element;j++)
3600 for(
unsigned k=0;k<n_dim_node;k++)
3602 G(
i,j) += interpolated_G(
i,k)*interpolated_G(j,k);
3609 switch(n_dim_element)
3612 throw OomphLibError(
"Cannot calculate J_eulerian() for point element\n",
3613 "FiniteElement::J_eulerian()",
3614 OOMPH_EXCEPTION_LOCATION);
3620 det = G(0,0)*G(1,1) - G(0,1)*G(1,0);
3623 det = G(0,0)*G(1,1)*G(2,2) + G(0,1)*G(1,2)*G(2,0) + G(0,2)*G(1,0)*G(2,1)
3624 - G(0,0)*G(1,2)*G(2,1) - G(0,1)*G(1,0)*G(2,2) - G(0,2)*G(1,1)*G(2,0);
3627 oomph_info <<
"More than 3 dimensions in J_eulerian()" << std::endl;
3632 check_jacobian(det);
3650 const unsigned el_dim = dim();
3654 const unsigned n_shape = 3;
3655 unsigned n_shape_type = 1;
3657 const unsigned n_row = N2deriv[el_dim];
3661 for(
unsigned i=0;
i<n_row;
i++)
3664 for(
unsigned j=0;j<el_dim;j++)
3667 jacobian2(
i,j) = 0.0;
3669 for(
unsigned l=0;l<n_shape;l++)
3672 for(
unsigned k=0;k<n_shape_type;k++)
3677 jacobian2(
i,j) += raw_nodal_position_gen(l,k,j)*d2psids(l,k,
i);
3692 const unsigned n_node = 3;
3694 const unsigned n_position_type = 1;
3697 const unsigned nodal_dim = nodal_dimension();
3705 for(
unsigned i=0;
i<nodal_dim;
i++)
3710 for(
unsigned l=0;l<n_node;l++)
3712 for(
unsigned k=0;k<n_position_type;k++)
3714 x[
i] += nodal_position_gen(l,k,
i)*psi[l];
3725 template<
unsigned DIM,
unsigned NNODE_1D>
3734 this->set_nnodal_position_type(6);
3736 this->set_integration_scheme(new_integral_pt);
3780 unsigned n_node = 3;
3783 for(
unsigned l=0;l<n_node;l++)
3785 for(
unsigned k=0;k<1;k++)
3787 for(
unsigned j=0;j<DIM;j++)
3789 node_position(l,j) = this->raw_nodal_position_gen(l,k,j);
3802 unsigned n_node = 3;
3806 for(
unsigned l=0;l<n_node;l++)
3808 for(
unsigned k=0;k<1;k++)
3810 for(
unsigned j=0;j<DIM;j++)
3812 node_position(l,j) = this->raw_nodal_position_gen(l,k,j);
3825 unsigned n_node = 3;
3828 for(
unsigned l=0;l<n_node;l++)
3830 for(
unsigned k=0;k<1;k++)
3832 for(
unsigned j=0;j<DIM;j++)
3834 node_position(l,j) = this->raw_nodal_position_gen(l,k,j);
3903 template<
unsigned NNODE_1D>
4000 const unsigned el_dim = dim();
4004 for(
unsigned i=0;
i<el_dim;
i++) {s[
i] = integral_pt()->knot(ipt,
i);}
4006 basis_straight(s,psi);
4018 const unsigned el_dim = dim();
4022 for(
unsigned i=0;
i<el_dim;
i++) {s[
i] = integral_pt()->knot(ipt,
i);}
4024 dbasis_local_straight(s,psi,dpsids);
4039 const unsigned el_dim = dim();
4043 for(
unsigned i=0;
i<el_dim;
i++) {s[
i] = integral_pt()->knot(ipt,
i);}
4045 d2basis_local_straight(s,psi,dpsids,d2psids);
4056 const unsigned el_dim = dim();
4060 for(
unsigned i=0;
i<el_dim;
i++) {s[
i] = integral_pt()->knot(ipt,
i);}
4074 const unsigned el_dim = dim();
4078 for(
unsigned i=0;
i<el_dim;
i++) {s[
i] = integral_pt()->knot(ipt,
i);}
4080 dbasis_local_curve(s,psi,dpsids);
4094 const unsigned el_dim = dim();
4098 for(
unsigned i=0;
i<el_dim;
i++) {s[
i] = integral_pt()->knot(ipt,
i);}
4100 d2basis_local_curve(s,psi,dpsids,d2psids);
4110 const unsigned el_dim = dim();
4114 for(
unsigned i=0;
i<el_dim;
i++) {s[
i] = integral_pt()->knot(ipt,
i);}
4127 const unsigned el_dim = dim();
4131 for(
unsigned i=0;
i<el_dim;
i++) {s[
i] = integral_pt()->knot(ipt,
i);}
4133 dbasis_c0_local(s,psi,dpsids);
4146 const unsigned el_dim = dim();
4150 for(
unsigned i=0;
i<el_dim;
i++) {s[
i] = integral_pt()->knot(ipt,
i);}
4152 d2basis_c0_local(s,psi,dpsids,d2psids);
4162 const unsigned el_dim = dim();
4166 for(
unsigned i=0;
i<el_dim;
i++) {s[
i] = integral_pt()->knot(ipt,
i);}
4168 shape_geom(s,psi,phi);
4180 const unsigned el_dim = dim();
4184 for(
unsigned i=0;
i<el_dim;
i++) {s[
i] = integral_pt()->knot(ipt,
i);}
4187 dshape_local_geom(s,psi,dpsids,phi,dphids);
4201 const unsigned el_dim = dim();
4205 for(
unsigned i=0;
i<el_dim;
i++) {s[
i] = integral_pt()->knot(ipt,
i);}
4207 d2shape_local_geom(s,psi,dpsids,d2psids,phi,dphids,d2phids);
4217 const unsigned el_dim = dim();
4221 for(
unsigned i=0;
i<el_dim;
i++) {s[
i] = integral_pt()->knot(ipt,
i);}
4234 const unsigned el_dim = dim();
4238 for(
unsigned i=0;
i<el_dim;
i++) {s[
i] = integral_pt()->knot(ipt,
i);}
4240 dtest_local(s,phi,dphids);
4253 const unsigned el_dim = dim();
4257 for(
unsigned i=0;
i<el_dim;
i++) {s[
i] = integral_pt()->knot(ipt,
i);}
4259 d2test_local(s,phi,dphids,d2phids);
4272 const unsigned el_dim = dim();
4276 dshape_local_at_knot(ipt,psi,dpsi);
4279 unsigned n_node = 3;
4280 Shape psi_x(n_node);
4286 dshape_local_at_knot_geom(ipt,psi_x,dpsi_x,phi,dphi);
4289 dtest_local_at_knot(ipt,test,dtest);
4295 const double det = local_to_eulerian_mapping2(dpsi_x,dphi,jacobian,inverse_jacobian);
4298 transform_derivatives(inverse_jacobian,dpsi);
4321 const unsigned el_dim = dim();
4323 d2basis_local_at_knot_straight(ipt,psi,dpsi,d2psi);
4326 unsigned n_node = 3;
4327 Shape psi_x(n_node);
4329 DShape d2psi_x(n_node,3);
4333 d2shape_local_at_knot_geom(ipt,psi_x,dpsi_x,d2psi_x,phi,dphi,d2phi);
4336 d2test_local_at_knot(ipt,test,dtest,d2test);
4342 const double det = local_to_eulerian_mapping2(dpsi_x,dphi,jacobian,inverse_jacobian);
4358 const unsigned el_dim = dim();
4362 return local_to_eulerian_mapping2(dpsids,dphids,jacobian,inverse_jacobian);
4373 const unsigned el_dim = dim();
4376 for(
unsigned i=0;
i<el_dim;
i++)
4379 for(
unsigned j=0;j<el_dim;j++)
4382 jacobian(
i,j) = 0.0;
4383 jacobian(
i,j) = dphids(j,
i);
4387 return invert_jacobian_mapping(jacobian,inverse_jacobian);
4400 const unsigned el_dim = dim();
4402 const unsigned n_row = N2deriv[el_dim];
4406 for(
unsigned i=0;
i<n_row;
i++)
4409 for(
unsigned j=0;j<el_dim;j++)
4412 jacobian2(
i,j) = 0.0;
4413 jacobian2(
i,j) = d2psids(j,
i);
4426 const unsigned n_node = 3;
4431 shape_geom(s,psi,phi);
4444 const unsigned n_node = 3;
4446 const unsigned n_dim_node = this->nodal_dimension();
4447 const unsigned n_dim_element = this->dim();
4451 Shape psi(n_node), phi(2);
4452 DShape dpsids(n_node,n_dim_element), dphi(2,2);
4454 this->dshape_local_geom(s,psi,dpsids,phi,dphi);
4461 for(
unsigned i=0;
i<n_dim_element;
i++)
4463 for(
unsigned j=0;j<n_dim_node;j++)
4465 interpolated_G(
i,j) = dphi(j,
i);
4471 for(
unsigned i=0;
i<n_dim_element;
i++)
4473 for(
unsigned j=0;j<n_dim_element;j++)
4477 for(
unsigned k=0;k<n_dim_node;k++)
4479 G(
i,j) += interpolated_G(
i,k)*interpolated_G(j,k);
4486 switch(n_dim_element)
4489 throw OomphLibError(
"Cannot calculate J_eulerian() for point element\n",
4490 "FiniteElement::J_eulerian()",
4491 OOMPH_EXCEPTION_LOCATION);
4497 det = G(0,0)*G(1,1) - G(0,1)*G(1,0);
4500 det = G(0,0)*G(1,1)*G(2,2) + G(0,1)*G(1,2)*G(2,0) + G(0,2)*G(1,0)*G(2,1)
4501 - G(0,0)*G(1,2)*G(2,1) - G(0,1)*G(1,0)*G(2,2) - G(0,2)*G(1,1)*G(2,0);
4504 oomph_info <<
"More than 3 dimensions in J_eulerian()" << std::endl;
4509 this->check_jacobian(det);
4521 unsigned n_node = 3;
4524 for(
unsigned i=0;
i<n_node;
i++)
4527 bool bd_node1 = node_pt(
i)->is_on_boundary(1);
4533 unsigned bd_element;
4556 const unsigned el_dim = dim();
4559 dbasis_c0_local(s,psi,dpsi);
4562 unsigned n_node = 3;
4563 Shape psi_x(n_node);
4565 DShape d2psi_x(n_node,3);
4569 d2shape_local_geom(s,psi_x,dpsi_x,d2psi_x,phi,dphi,d2phi);
4574 const double det = this->local_to_eulerian_mapping2(dpsi_x,dphi,jacobian,inverse_jacobian);
4576 transform_derivatives(inverse_jacobian,dpsi);
4593 const unsigned el_dim = dim();
4595 const unsigned n_deriv = N2deriv[el_dim];
4597 d2basis_c0_local(s,psi,dpsi,d2psi);
4600 unsigned n_node = 3;
4601 Shape psi_x(n_node);
4603 DShape d2psi_x(n_node,3);
4607 d2shape_local_geom(s,psi_x,dpsi_x,d2psi_x,phi,dphi,d2phi);
4612 const double det = local_to_eulerian_mapping2(dpsi_x,dphi,jacobian,inverse_jacobian);
4616 myassemble_local_to_eulerian_jacobian2(d2phi,jacobian2);
4618 transform_second_derivatives(jacobian,inverse_jacobian,jacobian2,dpsi,d2psi);
4634 const unsigned el_dim = dim();
4637 dbasis_local_curve(s,psi,dpsi);
4640 unsigned n_node = 3;
4641 Shape psi_x(n_node);
4643 DShape d2psi_x(n_node,3);
4647 d2shape_local_geom(s,psi_x,dpsi_x,d2psi_x,phi,dphi,d2phi);
4652 const double det = this->local_to_eulerian_mapping2(dpsi_x,dphi,jacobian,inverse_jacobian);
4654 transform_derivatives(inverse_jacobian,dpsi);
4669 const unsigned el_dim = dim();
4671 const unsigned n_deriv = N2deriv[el_dim];
4673 d2basis_local_curve(s,psi,dpsi,d2psi);
4676 unsigned n_node = 3;
4677 Shape psi_x(n_node);
4679 DShape d2psi_x(n_node,3);
4683 d2shape_local_geom(s,psi_x,dpsi_x,d2psi_x,phi,dphi,d2phi);
4688 const double det = local_to_eulerian_mapping2(dpsi_x,dphi,jacobian,inverse_jacobian);
4692 myassemble_local_to_eulerian_jacobian2(d2phi,jacobian2);
4694 transform_second_derivatives(jacobian,inverse_jacobian,jacobian2,dpsi,d2psi);
4708 unsigned bd_element;
4715 value[0] = raw_nodal_value(0,0);
4716 value[1] = raw_nodal_value(1,0);
4717 value[2] = raw_nodal_value(2,0);
4718 value[3] = raw_nodal_value(0,1);
4719 value[4] = raw_nodal_value(0,2);
4720 value[5] = raw_nodal_value(1,1);
4721 value[6] = raw_nodal_value(1,2);
4722 value[7] = raw_nodal_value(2,1);
4723 value[8] = raw_nodal_value(2,2);
4724 value[9] = raw_nodal_value(0,3);
4725 value[10] = raw_nodal_value(0,5);
4726 value[11] = raw_nodal_value(0,4);
4727 value[12] = raw_nodal_value(1,3);
4728 value[13] = raw_nodal_value(1,5);
4729 value[14] = raw_nodal_value(1,4);
4730 value[15] = raw_nodal_value(2,3);
4731 value[16] = raw_nodal_value(2,5);
4732 value[17] = raw_nodal_value(2,4);
4733 value[18] = raw_nodal_value(3,0);
4734 value[19] = raw_nodal_value(4,0);
4735 value[20] = raw_nodal_value(5,0);
4739 get_value_transform_matrix(
D,B,position,bd_element,bd_position,x);
4741 for(
unsigned i=0;
i<21;
i++)
4743 for(
unsigned j=0;j<36;j++)
4745 for(
unsigned k=0;k<21;k++)
4747 M(
i,j) +=
D(
i,k)*
B(k,j);
4752 for(
unsigned i=0;
i<21;
i++)
4754 for(
unsigned j=0;j<21;j++)
4757 temp[
i] += value[j]*
D(j,
i);
4761 for(
unsigned i=0;
i<36;
i++)
4763 for(
unsigned j=0;j<21;j++)
4765 u_value[
i] += temp[j]*
B(j,
i);
4781 unsigned bd_element;
4784 unsigned n_position_type = 6;
4787 get_value_transform_matrix(
D,B,position,bd_element,bd_position,x);
4789 double angle_1 = atan(bd_position(0,1)/bd_position(0,0));
4790 double angle_2 = atan(bd_position(1,1)/bd_position(1,0));
4791 if(angle_1 > angle_2)
4793 for(
unsigned k=0;k<n_position_type;k++)
4796 nodal_eqn(0,k) = nodal_local_eqn(2,i);
4797 nodal_eqn(1,k) = nodal_local_eqn(0,i);
4798 nodal_eqn(2,k) = nodal_local_eqn(1,i);
4799 nodal_eqn(3,k) = nodal_local_eqn(5,i);
4800 nodal_eqn(4,k) = nodal_local_eqn(3,i);
4801 nodal_eqn(5,k) = nodal_local_eqn(4,i);
4802 nodal_eqn(nnode()-3,k) = nodal_local_eqn(nnode()-3,i);
4803 nodal_eqn(nnode()-2,k) = nodal_local_eqn(nnode()-2,i);
4804 nodal_eqn(nnode()-1,k) = nodal_local_eqn(nnode()-1,i);
4807 else if(angle_1 < angle_2)
4809 if(position(0,0)==bd_position(0,0) && position(0,1)==bd_position(0,1))
4811 for(
unsigned k=0;k<n_position_type;k++)
4813 nodal_eqn(0,k) = nodal_local_eqn(0,2+k);
4814 nodal_eqn(1,k) = nodal_local_eqn(1,2+k);
4815 nodal_eqn(2,k) = nodal_local_eqn(2,2+k);
4816 nodal_eqn(3,k) = nodal_local_eqn(3,2+k);
4817 nodal_eqn(4,k) = nodal_local_eqn(4,2+k);
4818 nodal_eqn(5,k) = nodal_local_eqn(5,2+k);
4819 nodal_eqn(nnode()-3,k) = nodal_local_eqn(nnode()-2,2+k);
4820 nodal_eqn(nnode()-2,k) = nodal_local_eqn(nnode()-1,2+k);
4821 nodal_eqn(nnode()-1,k) = nodal_local_eqn(nnode()-3,2+k);
4826 for(
unsigned k=0;k<n_position_type;k++)
4828 nodal_eqn(0,k) = nodal_local_eqn(1,2+k);
4829 nodal_eqn(1,k) = nodal_local_eqn(2,2+k);
4830 nodal_eqn(2,k) = nodal_local_eqn(0,2+k);
4831 nodal_eqn(3,k) = nodal_local_eqn(4,2+k);
4832 nodal_eqn(4,k) = nodal_local_eqn(5,2+k);
4833 nodal_eqn(5,k) = nodal_local_eqn(3,2+k);
4834 nodal_eqn(nnode()-3,k) = nodal_local_eqn(nnode()-1,2+k);
4835 nodal_eqn(nnode()-2,k) = nodal_local_eqn(nnode()-3,2+k);
4836 nodal_eqn(nnode()-1,k) = nodal_local_eqn(nnode()-2,2+k);
4851 unsigned bd_element = is_boundary_element();
4853 const unsigned n_position_type = nnodal_position_type();
4858 DShape dpsi(3,6,2), d2psi(3,6,3);
4861 d2basis_local_straight(s,psi,dpsi,d2psi);
4864 for(
unsigned l=0;l<3;l++)
4866 for(
unsigned k=0;k<n_position_type;k++)
4869 double u_val = raw_nodal_value(l,k);
4870 interpolated_u[0] += u_val*psi(l,k);
4873 for(
unsigned j=0;j<2;j++)
4875 interpolated_dudxi(0,j) += u_val*dpsi(l,k,j);
4877 for(
unsigned j=0;j<3;j++)
4879 interpolated_d2udxi(0,j) += u_val*d2psi(l,k,j);
4885 else if(bd_element==1)
4889 get_nodal_value_curve1(u_value,M);
4892 Shape psi_curve(36),basis(36);
4893 DShape dpsi_curve(36,2), d2psi_curve(36,3), dbasis(36,2), d2basis(36,3);
4896 d2basis_eulerian_curve(s,psi_curve,dpsi_curve,d2psi_curve);
4897 for(
unsigned i=0;
i<36;
i++)
4899 interpolated_u[0] += u_value[
i]*psi_curve[
i];
4901 for(
unsigned j=0;j<2;j++)
4903 interpolated_dudxi(0,j) += u_value[
i]*dpsi_curve(
i,j);
4905 for(
unsigned j=0;j<3;j++)
4907 interpolated_d2udxi(0,j) += u_value[
i]*d2psi_curve(
i,j);
4923 unsigned bd_element = is_boundary_element();
4926 const unsigned n_position_type = nnodal_position_type();
4932 DShape dpsi(3,6,2), d2psi(3,6,3);
4934 d2basis_local_straight(s,psi,dpsi,d2psi);
4937 for(
unsigned l=0;l<3;l++)
4939 for(
unsigned k=0;k<n_position_type;k++)
4942 double u_val = raw_nodal_value(l,2+k);
4943 interpolated_u[0] += u_val*psi(l,k);
4945 for(
unsigned j=0;j<2;j++)
4947 interpolated_dudxi(0,j) += u_val*dpsi(l,k,j);
4949 for(
unsigned j=0;j<3;j++)
4951 interpolated_d2udxi(0,j) += u_val*d2psi(l,k,j);
4957 else if(bd_element==1)
4964 unsigned bd_element;
4968 get_value_transform_matrix(
D,B,position,bd_element,bd_position,x);
4972 double angle_1 = atan(bd_position(0,1)/bd_position(0,0));
4973 double angle_2 = atan(bd_position(1,1)/bd_position(1,0));
4974 if(angle_1 > angle_2)
4977 for(
unsigned k=0;k<n_position_type;k++)
4979 nodal_value(0,k) = raw_nodal_value(2,2+k);
4980 nodal_value(1,k) = raw_nodal_value(0,2+k);
4981 nodal_value(2,k) = raw_nodal_value(1,2+k);
4983 value[0] = nodal_value(0,0);
4984 value[1] = nodal_value(1,0);
4985 value[2] = nodal_value(2,0);
4986 value[3] = nodal_value(0,1);
4987 value[4] = nodal_value(0,2);
4988 value[5] = nodal_value(1,1);
4989 value[6] = nodal_value(1,2);
4990 value[7] = nodal_value(2,1);
4991 value[8] = nodal_value(2,2);
4992 value[9] = nodal_value(0,3);
4993 value[10] = nodal_value(0,5);
4994 value[11] = nodal_value(0,4);
4995 value[12] = nodal_value(1,3);
4996 value[13] = nodal_value(1,5);
4997 value[14] = nodal_value(1,4);
4998 value[15] = nodal_value(2,3);
4999 value[16] = nodal_value(2,5);
5000 value[17] = nodal_value(2,4);
5001 value[18] = raw_nodal_value(nnode()-3,2+0);
5002 value[19] = raw_nodal_value(nnode()-2,2+0);
5003 value[20] = raw_nodal_value(nnode()-1,2+0);
5005 else if(angle_1 < angle_2)
5007 if(position(0,0)==bd_position(0,0) && position(0,1)==bd_position(0,1))
5009 value[0] = raw_nodal_value(0,2+0);
5010 value[1] = raw_nodal_value(1,2+0);
5011 value[2] = raw_nodal_value(2,2+0);
5012 value[3] = raw_nodal_value(0,2+1);
5013 value[4] = raw_nodal_value(0,2+2);
5014 value[5] = raw_nodal_value(1,2+1);
5015 value[6] = raw_nodal_value(1,2+2);
5016 value[7] = raw_nodal_value(2,2+1);
5017 value[8] = raw_nodal_value(2,2+2);
5018 value[9] = raw_nodal_value(0,2+3);
5019 value[10] = raw_nodal_value(0,2+5);
5020 value[11] = raw_nodal_value(0,2+4);
5021 value[12] = raw_nodal_value(1,2+3);
5022 value[13] = raw_nodal_value(1,2+5);
5023 value[14] = raw_nodal_value(1,2+4);
5024 value[15] = raw_nodal_value(2,2+3);
5025 value[16] = raw_nodal_value(2,2+5);
5026 value[17] = raw_nodal_value(2,2+4);
5027 value[18] = raw_nodal_value(nnode()-2,2+0);
5028 value[19] = raw_nodal_value(nnode()-1,2+0);
5029 value[20] = raw_nodal_value(nnode()-3,2+0);
5034 for(
unsigned k=0;k<n_position_type;k++)
5036 nodal_value(2,k) = raw_nodal_value(0,2+k);
5037 nodal_value(0,k) = raw_nodal_value(1,2+k);
5038 nodal_value(1,k) = raw_nodal_value(2,2+k);
5040 value[0] = nodal_value(0,0);
5041 value[1] = nodal_value(1,0);
5042 value[2] = nodal_value(2,0);
5043 value[3] = nodal_value(0,1);
5044 value[4] = nodal_value(0,2);
5045 value[5] = nodal_value(1,1);
5046 value[6] = nodal_value(1,2);
5047 value[7] = nodal_value(2,1);
5048 value[8] = nodal_value(2,2);
5049 value[9] = nodal_value(0,3);
5050 value[10] = nodal_value(0,5);
5051 value[11] = nodal_value(0,4);
5052 value[12] = nodal_value(1,3);
5053 value[13] = nodal_value(1,5);
5054 value[14] = nodal_value(1,4);
5055 value[15] = nodal_value(2,3);
5056 value[16] = nodal_value(2,5);
5057 value[17] = nodal_value(2,4);
5058 value[18] = raw_nodal_value(nnode()-1,2+0);
5059 value[19] = raw_nodal_value(nnode()-3,2+0);
5060 value[20] = raw_nodal_value(nnode()-2,2+0);
5064 for(
unsigned i=0;
i<21;
i++)
5066 for(
unsigned j=0;j<21;j++)
5069 temp[
i] += value[j]*
D(j,
i);
5073 for(
unsigned i=0;
i<36;
i++)
5075 for(
unsigned j=0;j<21;j++)
5077 u_value[
i] += temp[j]*
B(j,
i);
5082 Shape psi_curve(36),basis(36);
5083 DShape dpsi_curve(36,2), d2psi_curve(36,3), dbasis(36,2), d2basis(36,3);
5085 d2basis_eulerian_curve(s,psi_curve,dpsi_curve,d2psi_curve);
5087 for(
unsigned i=0;
i<36;
i++)
5089 interpolated_u[0] += u_value[
i]*psi_curve[
i];
5091 for(
unsigned j=0;j<2;j++)
5093 interpolated_dudxi(0,j) += u_value[
i]*dpsi_curve(
i,j);
5095 for(
unsigned j=0;j<3;j++)
5097 interpolated_d2udxi(0,j) += u_value[
i]*d2psi_curve(
i,j);
5110 unsigned n_node = nnode()-3;
5115 this->dbasis_c0_eulerian(s,psi,dpsi);
5118 for(
unsigned l=0;l<n_node;l++)
5120 interpolated_u[0] += this->raw_nodal_value(l,0)*psi[l];
5121 interpolated_u[1] += this->raw_nodal_value(l,1)*psi[l];
5123 for(
unsigned j=0;j<2;j++)
5125 interpolated_dudxi(0,j) += this->raw_nodal_value(l,0)*dpsi(l,j);
5126 interpolated_dudxi(1,j) += this->raw_nodal_value(l,1)*dpsi(l,j);
5137 template<
unsigned DIM,
unsigned NNODE_1D>
5143 template<
unsigned NNODE_1D>
5148 static const unsigned NodeOnFace[3][NNODE_1D];
5165 "Triangles are currently only implemented for\n";
5167 "three vertices and three internal nodes, i.e. NNODE_1D=2,3 only\n";
5170 "CurvedTElement::CurvedTElement()",
5171 OOMPH_EXCEPTION_LOCATION);
5175 unsigned n_node = (NNODE_1D*(NNODE_1D+1))/2 + 3;
5176 this->set_n_node(n_node);
5178 this->set_dimension(2);
5180 this->set_nnodal_position_type(6);
5182 this->set_integration_scheme(new_integral_pt);
5216 std::ostringstream error_message;
5218 <<
"Element only has three vertex nodes; called with node number " 5221 "TElement::vertex_node_pt()",
5222 OOMPH_EXCEPTION_LOCATION);
5225 return this->node_pt(j);
5233 unsigned n_node = 3;
5235 for(
unsigned l=0;l<n_node;l++)
5237 for(
unsigned k=0;k<1;k++)
5239 for(
unsigned j=0;j<2;j++)
5241 node_position(l,j) = this->raw_nodal_position_gen(l,k,j);
5249 for(
unsigned i=0;
i<n_node;
i++)
5252 bool bd_node1 = this->node_pt(
i)->is_on_boundary(1);
5256 for(
unsigned k=0;k<1;k++)
5258 for(
unsigned j=0;j<2;j++)
5260 bd_node_position(count-1,j) = this->raw_nodal_position_gen(
i,k,j);
5266 for(
unsigned k=0;k<1;k++)
5268 for(
unsigned j=0;j<2;j++)
5270 x[j] = this->raw_nodal_position_gen(
i,k,j);
5290 classify_boundary_node(node_position,bd_element,bd_node_position,x);
5307 unsigned bd_element;
5308 classify_boundary_node(node_position,bd_element,bd_node_position,x);
5321 unsigned bd_element;
5322 classify_boundary_node(node_position,bd_element,bd_node_position,x);
5335 unsigned bd_element;
5336 classify_boundary_node(node_position,bd_element,bd_node_position,x);
5370 unsigned bd_element;
5371 classify_boundary_node(node_position,bd_element,bd_node_position,x);
5386 unsigned bd_element;
5387 classify_boundary_node(node_position,bd_element,bd_node_position,x);
5401 unsigned bd_element;
5402 classify_boundary_node(node_position,bd_element,bd_node_position,x);
5403 GeometricTElement<2>::d2Lshape_local(s,psi,dpsids,d2psids,phi,dphids,d2phids,node_position,bd_element,bd_node_position,x);
5461 void build_face_element(
const int &face_index,
5470 template<
unsigned NNODE_1D>
5485 template<
unsigned NNODE_1D>
5487 public virtual TElement<1,NNODE_1D>
void local_coordinate_of_node(const unsigned &j, Vector< double > &s) const
Return local coordinates of node j.
void myassemble_local_to_eulerian_jacobian2(const DShape &d2psids, DenseMatrix< double > &jacobian2) const
void my_interpolated_x(const Vector< double > &s, Vector< double > &x) const
Return FE interpolated position x[] at local coordinate s as Vector.
void broken_copy(const std::string &class_name)
Issue error message and terminate execution.
void dbasis_c0_local_at_knot(const unsigned &ipt, Shape &psi, DShape &dpsids) const
Return the C0-basis function and its derivatives w.r.t. the local coordinates at the ipt-th integrati...
void d2basis_local_curve(const Vector< double > &s, Shape &psi_curve, DShape &dpsi_curve, DShape &d2psi_curve) const
double local_to_eulerian_mapping2(const DShape &dpsids, DShape &dphids, DenseMatrix< double > &inverse_jacobian) const
Calculate the mapping from local to Eulerian coordinates, given the derivatives of the shape function...
void get_nodal_value_curve1(Vector< double > &u_value, DenseMatrix< double > &M)
Return raw nodal value for nodes specified on the reference triangle.
void local_coordinate_of_node(const unsigned &j, Vector< double > &s) const
Return local coordinates of node j.
void my_interpolated_u_normal1(const Vector< double > s, Vector< double > &interpolated_u, DenseMatrix< double > &interpolated_dudxi, DenseMatrix< double > &interpolated_d2udxi, DenseMatrix< double > &M)
virtual double local_to_eulerian_mapping2(const DShape &dpsids, DenseMatrix< double > &jacobian, DenseMatrix< double > &inverse_jacobian) const
void Cshape(const Vector< double > &s, Shape &psi_curve) const
void d2shape_local_at_knot_geom(const unsigned &ipt, Shape &psi, DShape &dpsids, DShape &d2psids, Shape &phi, DShape &dphids, DShape &d2phids) const
virtual void basis_curve(const Vector< double > &s, Shape &psi) const
void Bshape(const Vector< double > &s, Shape &psi, DenseMatrix< double > &position) const
unsigned nnode_1d() const
Number of nodes along each element edge.
void basis_c0(const Vector< double > &s, Shape &psi) const
Calculate the c0-basis functions at local coordinate s.
double dbasis_eulerian(const Vector< double > &s, Shape &psi, DShape &dpsi) const
Compute the c1-basis functions and also first derivatives w.r.t. global coordinates at local coordina...
virtual void dbasis_local_curve(const Vector< double > &s, Shape &psi, DShape &dpsids) const
virtual void d2test_local(const Vector< double > &s, Shape &phi, DShape &dphids, DShape &d2phids) const
void d2basis_c0_local_at_knot(const unsigned &ipt, Shape &psi, DShape &dpsids, DShape &d2psids) const
void dtest_local(const Vector< double > &s, Shape &psi, DShape &dpsids) const
Compute the test functions and derivatives w.r.t. local coordinates at local coordinate s...
virtual void basis(const Vector< double > &s, Shape &psi) const
virtual void d2basis_local_straight(const Vector< double > &s, Shape &psi, DShape &dpsids, DShape &d2psids) const
void d2test_local(const Vector< double > &s, Shape &psi, DShape &dpsids, DShape &d2psids) const
Computer the geometric shape functions, derivatives and second derivatives w.r.t local coordinates at...
void d2basis_local(const Vector< double > &s, Shape &psi, DShape &dpsids, DShape &d2psids) const
Compute the c1-basis functions and.
virtual void shape_geom(const Vector< double > &s, Shape &psi, Shape &phi) const
double dshape_and_dtest_eulerian_at_knot(const unsigned &ipt, Shape &psi, DShape &dpsi, Shape &test, DShape &dtest) const
void d2basis_c0_local_at_knot(const unsigned &ipt, Shape &psi, DShape &dpsids, DShape &d2psids) const
FaceGeometry()
Constructor: Call the constructor for the appropriate lower-dimensional QElement. ...
void dbasis_c0_local_at_knot(const unsigned &ipt, Shape &psi, DShape &dpsids) const
Return the c0-shape function and its derivatives w.r.t. the local coordinates at the ipt-th integrati...
double d2basis_c0_eulerian(const Vector< double > &s, Shape &psi, DShape &dpsi, DShape &d2psi) const
Compute the c0-shape functions and also the first and the second derivatives w.r.t.global coordinates at local coordinate s; Returns Jacobian of mapping from global to local coordinates. Most general form of the function, but may be over-loaded, if desired.
double dbasis_c0_eulerian(const Vector< double > &s, Shape &psi, DShape &dpsi) const
Compute the curved-element shape functions and also first derivatives w.r.t. local coordinates at loc...
void basis(const Vector< double > &s, Shape &psi) const
Calculate the c1-basis functions at local coordinate s.
A general Finite Element class.
void dbasis_local_at_knot_straight(const unsigned &ipt, Shape &psi, DShape &dpsids) const
Return the c1-shape function associated with a straight-sided boundary and its derivatives w...
void dshape_local(const Vector< double > &s, Shape &psi, DShape &dpsids) const
Compute the geometric shape functions and derivatives w.r.t. local coordinates at local coordinate s...
virtual double local_to_eulerian_mapping2(const DShape &dpsids, DShape &dphids, DenseMatrix< double > &jacobian, DenseMatrix< double > &inverse_jacobian) const
void dBshape_local(const Vector< double > &s, Shape &psi, DShape &dpsids, DenseMatrix< double > &position) const
void operator=(const BellElement &)
Broken assignment operator.
Nodes are derived from Data, but, in addition, have a definite (Eulerian) position in a space of a gi...
void basis_c0_at_knot(const unsigned &ipt, Shape &psi) const
Return the C0-basis function stored at the ipt-th integration point.
void dbasis_c0_local(const Vector< double > &s, Shape &psi, DShape &dpsids) const
Compute the c0-basis functions and derivatives w.r.t. local coordinates at local coordinate s...
void d2basis_local_straight(const Vector< double > &s, Shape &psi, DShape &dpsids, DShape &d2psids) const
Compute the c1-shape functions associated with a straight-sided.
virtual void classify_boundary_node(DenseMatrix< double > &node_position, unsigned &bd_element, DenseMatrix< double > &bd_node_position, Vector< double > &x) const
void d2basis_local_at_knot_straight(const unsigned &ipt, Shape &psi, DShape &dpsids, DShape &d2psids) const
void d2shape_local(const Vector< double > &s, Shape &psi, DShape &dpsids, DShape &d2psids) const
Computer the geometric shape functions, derivatives and second derivatives w.r.t local coordinates at...
BellElementBase()
Constructor: Call constructors for FiniteElement.
void dbasis_local_straight(const Vector< double > &s, Shape &psi, DShape &dpsids) const
Compute the c1-shape functions associated with a straight-sided boundary and derivatives w...
double d2basis_eulerian(const Vector< double > &s, Shape &psi, DShape &dpsi, DShape &d2psi) const
Compute the c1-basis functions and also first and second derivatives w.r.t. global coordinates at ipt...
void local_coordinate_of_node(const unsigned &j, Vector< double > &s) const
Return local coordinates of node j.
virtual void get_value_transform_matrix(DenseMatrix< double > &D, DenseMatrix< double > &B, DenseMatrix< double > &node_position, unsigned &bd_element, DenseMatrix< double > &bd_node_position, Vector< double > &x) const
void dLshape_local(const Vector< double > &s, Shape &psi, DShape &dpsids) const
Derivatives of shape functions for specific TElement<2,2>
void basis_c0(const Vector< double > &s, Shape &psi) const
Calculate the c0-shape functions at local coordinate s.
double J_eulerian1(const Vector< double > &s) const
Calculate the Jacobian of the mapping between local and global coordinates at the position s...
void basis_curve(const Vector< double > &s, Shape &psi_curve) const
virtual void d2basis_local(const Vector< double > &s, Shape &psi, DShape &dpsids, DShape &d2psids) const
void dLshape_local(const Vector< double > &s, Shape &psi, DShape &dpsids, Shape &phi, DShape &dphids, DenseMatrix< double > &position, unsigned &bd_element, DenseMatrix< double > &bd_position, Vector< double > &x) const
void test(const Vector< double > &s, Shape &psi) const
Calculate the test functions at local coordinate s.
void myassemble_local_to_eulerian_jacobian2(const DShape &d2psids, DenseMatrix< double > &jacobian2) const
void dbasis_local_curve(const Vector< double > &s, Shape &psi, DShape &dpsids) const
Compute the c1-shape functions associated with a curved-sided boundary and derivatives w...
void shape_geom(const Vector< double > &s, Shape &psi, Shape &phi) const
Calculate the linear shape functions at local coordinate s.
virtual void basis_c0(const Vector< double > &s, Shape &psi) const
void get_coefficient(DenseMatrix< double > &A) const
void d2shape_local_geom(const Vector< double > &s, Shape &psi, DShape &dpsids, DShape &d2psids, Shape &phi, DShape &dphids, DShape &d2phids) const
Compute the linear functions and derivatives w.r.t. local coordinates at local coordinate s...
void set_of_value(DenseMatrix< double > &D, DenseMatrix< double > &B, DenseMatrix< double > &position, unsigned &bd_element, DenseMatrix< double > &bd_position, Vector< double > &x) const
C1CurvedElement()
Constructor: Call constructors for C1CurvedElement.
void Lshape(const Vector< double > &s, Shape &psi, Shape &phi, DenseMatrix< double > &position, unsigned &bd_element, DenseMatrix< double > &bd_position, Vector< double > &x) const
void my_interpolated_x(const Vector< double > &s, Vector< double > &x) const
Return FE interpolated position x[] at local coordinate s as Vector.
void d2Bshape_local(const Vector< double > &s, Shape &psi, DShape &dpsids, DShape &d2psids, DenseMatrix< double > &position) const
void basis_c0_at_knot(const unsigned &ipt, Shape &psi) const
Return the c0-shape function stored at the ipt-th integration.
virtual void dtest_local(const Vector< double > &s, Shape &phi, DShape &dphids) const
void d2test_local_at_knot(const unsigned &ipt, Shape &phi, DShape &dphids, DShape &d2phids) const
void d2Lshape_local(const Vector< double > &s, Shape &psi, DShape &dpsids, DShape &d2psids, Shape &phi, DShape &dphids, DShape &d2phids, DenseMatrix< double > &position, unsigned &bd_element, DenseMatrix< double > &bd_position, Vector< double > &x) const
virtual void dbasis_c0_local(const Vector< double > &s, Shape &psi, DShape &dpsids) const
void get_nodal_eqn_curve(DenseMatrix< int > &nodal_eqn)
void dshape_local_geom(const Vector< double > &s, Shape &psi, DShape &dpsids, Shape &phi, DShape &dphids) const
Compute the linear functions and derivatives w.r.t. local coordinates at local coordinate s...
virtual void basis_c0(const Vector< double > &s, Shape &psi) const
virtual void d2shape_local_geom(const Vector< double > &s, Shape &psi, DShape &dpsids, DShape &d2psids, Shape &phi, DShape &dphids, DShape &d2phids) const
void dbasis_local_curve(const Vector< double > &s, Shape &psi_curve, DShape &dpsi_curve) const
virtual void dbasis_local(const Vector< double > &s, Shape &psi, DShape &dpsids) const
double magnitude(const Vector< double > &a)
Get the magnitude of a vector.
Node * vertex_node_pt(const unsigned &j) const
Pointer to the j-th vertex node in the element.
double dshape_and_dtest_eulerian_at_knot(const unsigned &ipt, Shape &psi, DShape &dpsi, Shape &test, DShape &dtest) const
void dtest_local_at_knot(const unsigned &ipt, Shape &phi, DShape &dphids) const
Return the test function and its derivatives w.r.t. the local coordinates at the ipt-th integration p...
C1CurvedElementBase()
Constructor: Call constructors for FiniteElement.
BellElement(const BellElement &)
Broken copy constructor.
void get_value_transform_matrix(DenseMatrix< double > &D, DenseMatrix< double > &B, DenseMatrix< double > &node_position, unsigned &bd_element, DenseMatrix< double > &bd_node_position, Vector< double > &x) const
virtual void basis_straight(const Vector< double > &s, Shape &psi) const
void dtest_local_at_knot(const unsigned &ipt, Shape &phi, DShape &dphids) const
Return the test function and its derivatives w.r.t. the local coordinates at the ipt-th integration p...
void shape(const Vector< double > &s, Shape &psi) const
Calculate the geometric shape functions at local coordinate s.
void basis_straight(const Vector< double > &s, Shape &psi) const
void basis_at_knot_straight(const unsigned &ipt, Shape &psi) const
Return the c1-shape function associated with a straight-sided.
virtual void d2basis_local_curve(const Vector< double > &s, Shape &psi, DShape &dpsids, DShape &d2psids) const
void Lshape(const Vector< double > &s, Shape &psi) const
Shape function for specific TElement<2,2>
virtual void d2basis_c0_local(const Vector< double > &s, Shape &psi, DShape &dpsids, DShape &d2psids) const
void shape(const double &s, double *Psi)
Definition for 1D Lagrange shape functions. The value of all the shape functions at the local coordin...
virtual void dshape_local_geom(const Vector< double > &s, Shape &psi, DShape &dpsids, Shape &phi, DShape &dphids) const
double d2basis_c0_eulerian(const Vector< double > &s, Shape &psi, DShape &dpsi, DShape &d2psi) const
Compute the c0-basis functions and also first and second derivatives w.r.t. local coordinates at ipt-...
BellElement()
Constructor: Call constructors for BellElement.
void dbasis_c0_local(const Vector< double > &s, Shape &psi, DShape &dpsids) const
Compute the c0-shape functions and derivatives w.r.t. local coordinates at local coordinate s...
double d2shape_and_d2test_eulerian_at_knot(const unsigned &ipt, Shape &psi, DShape &dpsi, DShape &d2psi, Shape &test, DShape &dtest, DShape &d2test) const
Compute the c1-shape functions that associated with the straight- boundary element and also first and...
void operator=(const C1CurvedElement &)
Broken assignment operator.
double dbasis_c0_eulerian(const Vector< double > &s, Shape &psi, DShape &dpsi) const
Compute the c0-shape functions and also first derivatives w.r.t. global coordinates at local coordina...
void dbasis_local(const Vector< double > &s, Shape &psi, DShape &dpsids) const
Compute the c1-basis functions and derivatives w.r.t. global coordinates at local coordinate s...
void dshape_local_at_knot_geom(const unsigned &ipt, Shape &psi, DShape &dpsids, Shape &phi, DShape &dphids) const
Return the geometric shape function and its derivatives w.r.t. the local coordinates at the ipt-th in...
void d2basis_local_curve(const Vector< double > &s, Shape &psi, DShape &dpsids, DShape &d2psids) const
Compute the c1-shape functions associated with a curved-sided.
void shape_at_knot_geom(const unsigned &ipt, Shape &psi, Shape &phi) const
Return the geometric shape function stored at the ipt-th integration point.
void my_interpolated_u_tangential(const Vector< double > s, Vector< double > &interpolated_u, DenseMatrix< double > &interpolated_dudxi) const
Return FE interpolated value u[] at local coordinate s as Vector.
void basis_at_knot(const unsigned &ipt, Shape &psi) const
Return the C1-basis function stored at the ipt-th integration point.
void dbasis_local_at_knot_curve(const unsigned &ipt, Shape &psi, DShape &dpsids) const
void my_interpolated_u_normal(const Vector< double > s, Vector< double > &interpolated_u, DenseMatrix< double > &interpolated_dudxi, DenseMatrix< double > &interpolated_d2udxi) const
void broken_assign(const std::string &class_name)
Issue error message and terminate execution.
unsigned is_boundary_element() const
void d2basis_c0_local(const Vector< double > &s, Shape &psi, DShape &dpsids, DShape &d2psids) const
Computer the c0-shape functions, derivatives and second derivatives w.r.t local coordinates at local ...
void test(const Vector< double > &s, Shape &psi) const
Calculate the test functions at local coordinate s.
void d2basis_local_at_knot_curve(const unsigned &ipt, Shape &psi, DShape &dpsids, DShape &d2psids) const
void basis_curve(const Vector< double > &s, Shape &psi) const
void local_coordinate_of_node(const unsigned &j, Vector< double > &s) const
Return local coordinates of node j.
void d2test_local_at_knot(const unsigned &ipt, Shape &phi, DShape &dphids, DShape &d2phids) const
std::string string(const unsigned &i)
Return the i-th string or "" if the relevant string hasn't been defined.
A class for Linear triangular shape function with 3 vertex nodes.
virtual void d2basis_c0_local(const Vector< double > &s, Shape &psi, DShape &dpsids, DShape &d2psids) const
double d2basis_eulerian_curve(const Vector< double > &s, Shape &psi, DShape &dpsi, DShape &d2psi) const
Compute the cuved-element shape functions and also first and second derivatives w.r.t. global coordinates at ipt-th integration point.
void local_coordinate_of_node(const unsigned &j, Vector< double > &s) const
Return local coordinates of node j.
double dbasis_eulerian_curve(const Vector< double > &s, Shape &psi, DShape &dpsi) const
Compute the curved-element shape functions and also first derivatives w.r.t. global coordinates at lo...
double d2shape_and_d2test_eulerian_at_knot(const unsigned &ipt, Shape &psi, DShape &dpsi, DShape &d2psi, Shape &test, DShape &dtest, DShape &d2test) const
Compute the c1-shape functions and also first and second derivatives w.r.t. global coordinates at ipt...
void d2Cshape_local(const Vector< double > &s, Shape &psi_curve, DShape &dpsi_curve, DShape &d2psi_curve) const
double J_eulerian1(const Vector< double > &s) const
Calculate the Jacobian of the mapping between local and global coordinates at the position s...
virtual void dbasis_local_straight(const Vector< double > &s, Shape &psi, DShape &dpsids) const
void dtest_local(const Vector< double > &s, Shape &psi, DShape &dpsids) const
Compute the test functions and derivatives w.r.t. local coordinates at local coordinate s...
void d2test_local(const Vector< double > &s, Shape &psi, DShape &dpsids, DShape &d2psids) const
Computer the test functions, derivatives and second derivatives w.r.t local coordinates at local coor...
void test_at_knot(const unsigned &ipt, Shape &phi) const
Return the test function stored at the ipt-th integration point.
void d2basis_c0_local(const Vector< double > &s, Shape &psi, DShape &dpsids, DShape &d2psids) const
Computer the c0-basis functions, derivatives and second derivatives w.r.t local coordinates at local ...
void d2Lshape_local(const Vector< double > &s, Shape &psi, DShape &dpsids, DShape &d2psids) const
unsigned nvertex_node() const
Number of vertex nodes in the element: One more than spatial dimension.
void d2basis_local_at_knot(const unsigned &ipt, Shape &psi, DShape &dpsids, DShape &d2psids) const
virtual void dbasis_c0_local(const Vector< double > &s, Shape &psi, DShape &dpsids) const
virtual void d2test_local(const Vector< double > &s, Shape &phi, DShape &dphids, DShape &d2phids) const
virtual void test(const Vector< double > &s, Shape &phi) const
void basis_at_knot_curve(const unsigned &ipt, Shape &psi) const
Return the c1-shape function associated with a curvilinear boundary stored at the ipt-th integration ...
void dCshape_local(const Vector< double > &s, Shape &psi_curve, DShape &dpsi_curve) const
void classify_boundary_node(DenseMatrix< double > &node_position, unsigned &bd_element, DenseMatrix< double > &bd_node_position, Vector< double > &x) const
void test_at_knot(const unsigned &ipt, Shape &phi) const
Return the test function stored at the ipt-th integration point.
C1CurvedElement(const C1CurvedElement &)
Broken copy constructor.
virtual void dtest_local(const Vector< double > &s, Shape &phi, DShape &dphids) const
double local_to_eulerian_mapping2(const DShape &dpsids, DenseMatrix< double > &inverse_jacobian) const
Calculate the mapping from local to Eulerian coordinates, given the derivatives of the shape function...
~C1CurvedElement()
Destructor.
void dbasis_local_at_knot(const unsigned &ipt, Shape &psi, DShape &dpsids) const
Return the C1-basis function and its derivatives w.r.t. the global coordinates at the ipt-th integrat...
virtual void test(const Vector< double > &s, Shape &phi) const
unsigned ninternal_node() const
Number of internal nodes.