1*59599516SKenneth E. Jansen /*-------------------------------------------------------------------------
2*59599516SKenneth E. Jansen Scientific Computation Research Center, RPI, Troy NY
3*59599516SKenneth E. Jansen (C) Copyright 1995, RPI-SCOREC
4*59599516SKenneth E. Jansen
5*59599516SKenneth E. Jansen Project : shapeFuntions
6*59599516SKenneth E. Jansen Author(s): Saikat Dey
7*59599516SKenneth E. Jansen Creation : Oct., 95
8*59599516SKenneth E. Jansen Modifi. :
9*59599516SKenneth E. Jansen Function :
10*59599516SKenneth E. Jansen derivative of edge mode for simplex. maple generated code
11*59599516SKenneth E. Jansen -------------------------------------------------------------------------*/
12*59599516SKenneth E. Jansen
13*59599516SKenneth E. Jansen #ifdef __cplusplus
14*59599516SKenneth E. Jansen extern "C" {
15*59599516SKenneth E. Jansen #endif
16*59599516SKenneth E. Jansen
EnDrv(int ip,double r,double s,double drv[2])17*59599516SKenneth E. Jansen int EnDrv(int ip, double r, double s, double drv[2]) {
18*59599516SKenneth E. Jansen double t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14,t15,t16,t17,t18;
19*59599516SKenneth E. Jansen double t19,t20,t21,t22,t23,t24,t25,t26,t27,t28,t29,t30,t31,t32,t33,t34,t35;
20*59599516SKenneth E. Jansen
21*59599516SKenneth E. Jansen /* p=2 */
22*59599516SKenneth E. Jansen if( ip==0 ) {
23*59599516SKenneth E. Jansen drv[0] = 0.0;
24*59599516SKenneth E. Jansen drv[1] = 0.0;
25*59599516SKenneth E. Jansen /* p=3 */
26*59599516SKenneth E. Jansen } else if( ip==1 ) {
27*59599516SKenneth E. Jansen drv[0] = -1.0;
28*59599516SKenneth E. Jansen drv[1] = 1.0;
29*59599516SKenneth E. Jansen /* p=4 */
30*59599516SKenneth E. Jansen } else if( ip==2 ) {
31*59599516SKenneth E. Jansen drv[0] = -3.0*s+2.0*r;
32*59599516SKenneth E. Jansen drv[1] = 2.0*s-3.0*r;
33*59599516SKenneth E. Jansen /* p=5 */
34*59599516SKenneth E. Jansen } else if( ip==3 ) {
35*59599516SKenneth E. Jansen t1 = s*s;
36*59599516SKenneth E. Jansen t2 = r*s;
37*59599516SKenneth E. Jansen t3 = r*r;
38*59599516SKenneth E. Jansen drv[0] = -6.0*t1+12.0*t2-3.0*t3;
39*59599516SKenneth E. Jansen drv[1] = 3.0*t1-12.0*t2+6.0*t3;
40*59599516SKenneth E. Jansen /* p=6 */
41*59599516SKenneth E. Jansen } else if( ip==4 ) {
42*59599516SKenneth E. Jansen t1 = s*s;
43*59599516SKenneth E. Jansen t2 = t1*s;
44*59599516SKenneth E. Jansen t3 = r*t1;
45*59599516SKenneth E. Jansen t4 = r*r;
46*59599516SKenneth E. Jansen t5 = t4*s;
47*59599516SKenneth E. Jansen t6 = t4*r;
48*59599516SKenneth E. Jansen drv[0] = -10.0*t2+40.0*t3-30.0*t5+4.0*t6;
49*59599516SKenneth E. Jansen drv[1] = 4.0*t2-30.0*t3+40.0*t5-10.0*t6;
50*59599516SKenneth E. Jansen /* p=7 */
51*59599516SKenneth E. Jansen } else if( ip==5 ) {
52*59599516SKenneth E. Jansen t1 = s*s;
53*59599516SKenneth E. Jansen t2 = t1*t1;
54*59599516SKenneth E. Jansen t4 = r*t1*s;
55*59599516SKenneth E. Jansen t5 = r*r;
56*59599516SKenneth E. Jansen t6 = t5*t1;
57*59599516SKenneth E. Jansen t8 = t5*r*s;
58*59599516SKenneth E. Jansen t9 = t5*t5;
59*59599516SKenneth E. Jansen drv[0] = -15.0*t2+100.0*t4-150.0*t6+60.0*t8-5.0*t9;
60*59599516SKenneth E. Jansen drv[1] = 5.0*t2-60.0*t4+150.0*t6-100.0*t8+15.0*t9;
61*59599516SKenneth E. Jansen /* p=8 */
62*59599516SKenneth E. Jansen } else if( ip==6 ) {
63*59599516SKenneth E. Jansen t1 = s*s;
64*59599516SKenneth E. Jansen t2 = t1*t1;
65*59599516SKenneth E. Jansen t3 = t2*s;
66*59599516SKenneth E. Jansen t4 = r*t2;
67*59599516SKenneth E. Jansen t5 = r*r;
68*59599516SKenneth E. Jansen t7 = t5*t1*s;
69*59599516SKenneth E. Jansen t9 = t5*r*t1;
70*59599516SKenneth E. Jansen t10 = t5*t5;
71*59599516SKenneth E. Jansen t11 = t10*s;
72*59599516SKenneth E. Jansen t12 = t10*r;
73*59599516SKenneth E. Jansen drv[0] = -21.0*t3+210.0*t4-525.0*t7+420.0*t9-105.0*t11+6.0*t12;
74*59599516SKenneth E. Jansen drv[1] = 6.0*t3-105.0*t4+420.0*t7-525.0*t9+210.0*t11-21.0*t12;
75*59599516SKenneth E. Jansen /* p=9 */
76*59599516SKenneth E. Jansen } else if( ip==7 ) {
77*59599516SKenneth E. Jansen t1 = s*s;
78*59599516SKenneth E. Jansen t2 = t1*t1;
79*59599516SKenneth E. Jansen t3 = t2*t1;
80*59599516SKenneth E. Jansen t5 = r*t2*s;
81*59599516SKenneth E. Jansen t6 = r*r;
82*59599516SKenneth E. Jansen t7 = t6*t2;
83*59599516SKenneth E. Jansen t10 = t6*r*t1*s;
84*59599516SKenneth E. Jansen t11 = t6*t6;
85*59599516SKenneth E. Jansen t12 = t11*t1;
86*59599516SKenneth E. Jansen t14 = t11*r*s;
87*59599516SKenneth E. Jansen t15 = t11*t6;
88*59599516SKenneth E. Jansen drv[0] = -28.0*t3+392.0*t5-1470.0*t7+1960.0*t10-980.0*t12+168.0*t14-7.0*
89*59599516SKenneth E. Jansen t15;
90*59599516SKenneth E. Jansen drv[1] = 7.0*t3-168.0*t5+980.0*t7-1960.0*t10+1470.0*t12-392.0*t14+28.0*
91*59599516SKenneth E. Jansen t15;
92*59599516SKenneth E. Jansen /* p=10 */
93*59599516SKenneth E. Jansen } else if( ip==8 ) {
94*59599516SKenneth E. Jansen t1 = s*s;
95*59599516SKenneth E. Jansen t2 = t1*s;
96*59599516SKenneth E. Jansen t3 = t1*t1;
97*59599516SKenneth E. Jansen t4 = t3*t2;
98*59599516SKenneth E. Jansen t6 = r*t3*t1;
99*59599516SKenneth E. Jansen t7 = r*r;
100*59599516SKenneth E. Jansen t9 = t7*t3*s;
101*59599516SKenneth E. Jansen t10 = t7*r;
102*59599516SKenneth E. Jansen t11 = t10*t3;
103*59599516SKenneth E. Jansen t12 = t7*t7;
104*59599516SKenneth E. Jansen t13 = t12*t2;
105*59599516SKenneth E. Jansen t15 = t12*r*t1;
106*59599516SKenneth E. Jansen t17 = t12*t7*s;
107*59599516SKenneth E. Jansen t18 = t12*t10;
108*59599516SKenneth E. Jansen drv[0] = -36.0*t4+672.0*t6-3528.0*t9+7056.0*t11-5880.0*t13+2016.0*t15
109*59599516SKenneth E. Jansen -252.0*t17+8.0*t18;
110*59599516SKenneth E. Jansen drv[1] = 8.0*t4-252.0*t6+2016.0*t9-5880.0*t11+7056.0*t13-3528.0*t15+672.0
111*59599516SKenneth E. Jansen *t17-36.0*t18;
112*59599516SKenneth E. Jansen /* p=11 */
113*59599516SKenneth E. Jansen } else if( ip==9 ) {
114*59599516SKenneth E. Jansen t1 = s*s;
115*59599516SKenneth E. Jansen t2 = t1*t1;
116*59599516SKenneth E. Jansen t3 = t2*t2;
117*59599516SKenneth E. Jansen t4 = t1*s;
118*59599516SKenneth E. Jansen t6 = r*t2*t4;
119*59599516SKenneth E. Jansen t7 = r*r;
120*59599516SKenneth E. Jansen t9 = t7*t2*t1;
121*59599516SKenneth E. Jansen t10 = t7*r;
122*59599516SKenneth E. Jansen t12 = t10*t2*s;
123*59599516SKenneth E. Jansen t13 = t7*t7;
124*59599516SKenneth E. Jansen t14 = t13*t2;
125*59599516SKenneth E. Jansen t16 = t13*r*t4;
126*59599516SKenneth E. Jansen t18 = t13*t7*t1;
127*59599516SKenneth E. Jansen t20 = t13*t10*s;
128*59599516SKenneth E. Jansen t21 = t13*t13;
129*59599516SKenneth E. Jansen drv[0] = -45.0*t3+1080.0*t6-7560.0*t9+21168.0*t12-26460.0*t14+15120.0*t16
130*59599516SKenneth E. Jansen -3780.0*t18+360.0*t20-9.0*t21;
131*59599516SKenneth E. Jansen drv[1] = 9.0*t3-360.0*t6+3780.0*t9-15120.0*t12+26460.0*t14-21168.0*t16+
132*59599516SKenneth E. Jansen 7560.0*t18-1080.0*t20+45.0*t21;
133*59599516SKenneth E. Jansen /* p=12 */
134*59599516SKenneth E. Jansen } else if( ip==10 ) {
135*59599516SKenneth E. Jansen t1 = s*s;
136*59599516SKenneth E. Jansen t2 = t1*t1;
137*59599516SKenneth E. Jansen t3 = t2*t2;
138*59599516SKenneth E. Jansen t4 = t3*s;
139*59599516SKenneth E. Jansen t5 = r*t3;
140*59599516SKenneth E. Jansen t6 = r*r;
141*59599516SKenneth E. Jansen t7 = t1*s;
142*59599516SKenneth E. Jansen t9 = t6*t2*t7;
143*59599516SKenneth E. Jansen t10 = t6*r;
144*59599516SKenneth E. Jansen t12 = t10*t2*t1;
145*59599516SKenneth E. Jansen t13 = t6*t6;
146*59599516SKenneth E. Jansen t15 = t13*t2*s;
147*59599516SKenneth E. Jansen t17 = t13*r*t2;
148*59599516SKenneth E. Jansen t19 = t13*t6*t7;
149*59599516SKenneth E. Jansen t21 = t13*t10*t1;
150*59599516SKenneth E. Jansen t22 = t13*t13;
151*59599516SKenneth E. Jansen t23 = t22*s;
152*59599516SKenneth E. Jansen t24 = t22*r;
153*59599516SKenneth E. Jansen drv[0] = -55.0*t4+1650.0*t5-14850.0*t9+55440.0*t12-97020.0*t15+83160.0*
154*59599516SKenneth E. Jansen t17-34650.0*t19+6600.0*t21-495.0*t23+10.0*t24;
155*59599516SKenneth E. Jansen drv[1] = 10.0*t4-495.0*t5+6600.0*t9-34650.0*t12+83160.0*t15-97020.0*t17+
156*59599516SKenneth E. Jansen 55440.0*t19-14850.0*t21+1650.0*t23-55.0*t24;
157*59599516SKenneth E. Jansen /* p=13 */
158*59599516SKenneth E. Jansen } else if( ip==11 ) {
159*59599516SKenneth E. Jansen t1 = s*s;
160*59599516SKenneth E. Jansen t2 = t1*t1;
161*59599516SKenneth E. Jansen t3 = t2*t2;
162*59599516SKenneth E. Jansen t4 = t3*t1;
163*59599516SKenneth E. Jansen t6 = r*t3*s;
164*59599516SKenneth E. Jansen t7 = r*r;
165*59599516SKenneth E. Jansen t8 = t7*t3;
166*59599516SKenneth E. Jansen t9 = t7*r;
167*59599516SKenneth E. Jansen t10 = t1*s;
168*59599516SKenneth E. Jansen t12 = t9*t2*t10;
169*59599516SKenneth E. Jansen t13 = t7*t7;
170*59599516SKenneth E. Jansen t15 = t13*t2*t1;
171*59599516SKenneth E. Jansen t18 = t13*r*t2*s;
172*59599516SKenneth E. Jansen t20 = t13*t7*t2;
173*59599516SKenneth E. Jansen t22 = t13*t9*t10;
174*59599516SKenneth E. Jansen t23 = t13*t13;
175*59599516SKenneth E. Jansen t24 = t23*t1;
176*59599516SKenneth E. Jansen t26 = t23*r*s;
177*59599516SKenneth E. Jansen t27 = t23*t7;
178*59599516SKenneth E. Jansen t28 = -66.0*t4+2420.0*t6-27225.0*t8+130680.0*t12-304920.0*t15+365904.0*
179*59599516SKenneth E. Jansen t18-228690.0*t20+72600.0*t22-10890.0*t24+660.0*t26-11.0*t27;
180*59599516SKenneth E. Jansen t29 = 11.0*t4-660.0*t6+10890.0*t8-72600.0*t12+228690.0*t15-365904.0*t18+
181*59599516SKenneth E. Jansen 304920.0*t20-130680.0*t22+27225.0*t24-2420.0*t26+66.0*t27;
182*59599516SKenneth E. Jansen drv[0] = t28;
183*59599516SKenneth E. Jansen drv[1] = t29;
184*59599516SKenneth E. Jansen /* p=14 */
185*59599516SKenneth E. Jansen } else if( ip==12 ) {
186*59599516SKenneth E. Jansen t1 = s*s;
187*59599516SKenneth E. Jansen t2 = t1*s;
188*59599516SKenneth E. Jansen t3 = t1*t1;
189*59599516SKenneth E. Jansen t4 = t3*t3;
190*59599516SKenneth E. Jansen t5 = t4*t2;
191*59599516SKenneth E. Jansen t7 = r*t4*t1;
192*59599516SKenneth E. Jansen t8 = r*r;
193*59599516SKenneth E. Jansen t10 = t8*t4*s;
194*59599516SKenneth E. Jansen t11 = t8*r;
195*59599516SKenneth E. Jansen t12 = t11*t4;
196*59599516SKenneth E. Jansen t13 = t8*t8;
197*59599516SKenneth E. Jansen t15 = t13*t3*t2;
198*59599516SKenneth E. Jansen t18 = t13*r*t3*t1;
199*59599516SKenneth E. Jansen t21 = t13*t8*t3*s;
200*59599516SKenneth E. Jansen t23 = t13*t11*t3;
201*59599516SKenneth E. Jansen t24 = t13*t13;
202*59599516SKenneth E. Jansen t25 = t24*t2;
203*59599516SKenneth E. Jansen t27 = t24*r*t1;
204*59599516SKenneth E. Jansen t29 = t24*t8*s;
205*59599516SKenneth E. Jansen t30 = t24*t11;
206*59599516SKenneth E. Jansen t31 = -78.0*t5+3432.0*t7-47190.0*t10+283140.0*t12-849420.0*t15+1359072.0*
207*59599516SKenneth E. Jansen t18-1189188.0*t21+566280.0*t23-141570.0*t25+17160.0*t27-858.0*t29+12.0*t30;
208*59599516SKenneth E. Jansen t32 = 12.0*t5-858.0*t7+17160.0*t10-141570.0*t12+566280.0*t15-1189188.0*
209*59599516SKenneth E. Jansen t18+1359072.0*t21-849420.0*t23+283140.0*t25-47190.0*t27+3432.0*t29-78.0*t30;
210*59599516SKenneth E. Jansen drv[0] = t31;
211*59599516SKenneth E. Jansen drv[1] = t32;
212*59599516SKenneth E. Jansen /* p=15 */
213*59599516SKenneth E. Jansen } else if( ip==13 ) {
214*59599516SKenneth E. Jansen t1 = s*s;
215*59599516SKenneth E. Jansen t2 = t1*t1;
216*59599516SKenneth E. Jansen t3 = t2*t2;
217*59599516SKenneth E. Jansen t4 = t3*t2;
218*59599516SKenneth E. Jansen t5 = t1*s;
219*59599516SKenneth E. Jansen t7 = r*t3*t5;
220*59599516SKenneth E. Jansen t8 = r*r;
221*59599516SKenneth E. Jansen t10 = t8*t3*t1;
222*59599516SKenneth E. Jansen t11 = t8*r;
223*59599516SKenneth E. Jansen t13 = t11*t3*s;
224*59599516SKenneth E. Jansen t14 = t8*t8;
225*59599516SKenneth E. Jansen t15 = t14*t3;
226*59599516SKenneth E. Jansen t18 = t14*r*t2*t5;
227*59599516SKenneth E. Jansen t21 = t14*t8*t2*t1;
228*59599516SKenneth E. Jansen t24 = t14*t11*t2*s;
229*59599516SKenneth E. Jansen t25 = t14*t14;
230*59599516SKenneth E. Jansen t26 = t25*t2;
231*59599516SKenneth E. Jansen t28 = t25*r*t5;
232*59599516SKenneth E. Jansen t30 = t25*t8*t1;
233*59599516SKenneth E. Jansen t32 = t25*t11*s;
234*59599516SKenneth E. Jansen t33 = t25*t14;
235*59599516SKenneth E. Jansen t34 = -91.0*t4+4732.0*t7-78078.0*t10+572572.0*t13-2147145.0*t15+4416984.0
236*59599516SKenneth E. Jansen *t18-5153148.0*t21+3435432.0*t24-1288287.0*t26+260260.0*t28-26026.0*t30+1092.0*
237*59599516SKenneth E. Jansen t32-13.0*t33;
238*59599516SKenneth E. Jansen t35 = 13.0*t4-1092.0*t7+26026.0*t10-260260.0*t13+1288287.0*t15-3435432.0*
239*59599516SKenneth E. Jansen t18+5153148.0*t21-4416984.0*t24+2147145.0*t26-572572.0*t28+78078.0*t30-4732.0*
240*59599516SKenneth E. Jansen t32+91.0*t33;
241*59599516SKenneth E. Jansen drv[0] = t34;
242*59599516SKenneth E. Jansen drv[1] = t35;
243*59599516SKenneth E. Jansen } else
244*59599516SKenneth E. Jansen return 0;
245*59599516SKenneth E. Jansen return 1;
246*59599516SKenneth E. Jansen }
247*59599516SKenneth E. Jansen
248*59599516SKenneth E. Jansen #ifdef __cplusplus
249*59599516SKenneth E. Jansen }
250*59599516SKenneth E. Jansen #endif
251