xref: /phasta/shapeFunction/src/En.c (revision 9b8a2b5301dae5602a16bed4b9abe8b4e50204bd)
1 /*-------------------------------------------------------------------------
2   Scientific Computation Research Center, RPI, Troy NY
3   (C) Copyright 1995, RPI-SCOREC
4 
5   Project  : shapeFuntions
6   Author(s): Saikat Dey
7   Creation : Oct., 95
8   Modifi.  :
9   Function :
10              mode shape for a simplex edge of order ip, Maple generated.
11 -------------------------------------------------------------------------*/
12 
13 #ifdef __cplusplus
14 extern "C" {
15 #endif
16 
17 double En(int ip, double r, double s) {
18    double f = 0.0;
19    double t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14,t15,t18;
20    double t21,t22,t23,t24,t25,t26;
21 
22    /* p=2 */
23    if( ip==0 ) {
24       f = 1.0;
25    /* p=3 */
26    } else if( ip==1 ) {
27       f = s-r;
28    /* p=4 */
29    } else if( ip==2 ) {
30       t1 = s*s;
31       t3 = r*r;
32       f = t1-3.0*r*s+t3;
33    /* p=5 */
34    } else if( ip==3 ) {
35       t1 = s*s;
36       t4 = r*r;
37       f = t1*s-6.0*r*t1+6.0*t4*s-t4*r;
38    /* p=6 */
39    } else if( ip==4 ) {
40       t1 = s*s;
41       t2 = t1*t1;
42       t5 = r*r;
43       t9 = t5*t5;
44       f = t2-10.0*r*t1*s+20.0*t5*t1-10.0*t5*r*s+t9;
45    /* p=7 */
46    } else if( ip==5 ) {
47       t1 = s*s;
48       t2 = t1*t1;
49       t5 = r*r;
50       t10 = t5*t5;
51       f = t2*s-15.0*t2*r+50.0*t5*t1*s-50.0*t5*r*t1+15.0*t10*s-t10*r;
52    /* p=8 */
53    } else if( ip==6 ) {
54       t1 = s*s;
55       t2 = t1*t1;
56       t6 = r*r;
57       t11 = t6*t6;
58       f = t2*t1-21.0*r*t2*s+105.0*t6*t2-175.0*t6*r*t1*s+105.0*t11*t1-21.0*t11
59 *r*s+t11*t6;
60    /* p=9 */
61    } else if( ip==7 ) {
62       t1 = s*s;
63       t2 = t1*s;
64       t3 = t1*t1;
65       t7 = r*r;
66       t10 = t7*r;
67       t12 = t7*t7;
68       f = t3*t2-28.0*r*t3*t1+196.0*t7*t3*s-490.0*t10*t3+490.0*t12*t2-196.0*
69 t12*r*t1+28.0*t12*t7*s-t12*t10;
70    /* p=10 */
71    } else if( ip==8 ) {
72       t1 = s*s;
73       t2 = t1*t1;
74       t3 = t2*t2;
75       t4 = t1*s;
76       t7 = r*r;
77       t10 = t7*r;
78       t13 = t7*t7;
79       t21 = t13*t13;
80       f = t3-36.0*r*t2*t4+336.0*t7*t2*t1-1176.0*t10*t2*s+1764.0*t13*t2-1176.0
81 *t13*r*t4+336.0*t13*t7*t1-36.0*t13*t10*s+t21;
82    /* p=11 */
83    } else if( ip==9 ) {
84       t1 = s*s;
85       t2 = t1*t1;
86       t3 = t2*t2;
87       t6 = r*r;
88       t7 = t1*s;
89       t10 = t6*r;
90       t13 = t6*t6;
91       t22 = t13*t13;
92       f = t3*s-45.0*t3*r+540.0*t6*t2*t7-2520.0*t10*t2*t1+5292.0*t13*t2*s
93 -5292.0*t13*r*t2+2520.0*t13*t6*t7-540.0*t13*t10*t1+45.0*t22*s-t22*r;
94    /* p=12 */
95    } else if( ip==10 ) {
96       t1 = s*s;
97       t2 = t1*t1;
98       t3 = t2*t2;
99       t7 = r*r;
100       t9 = t7*r;
101       t10 = t1*s;
102       t13 = t7*t7;
103       t23 = t13*t13;
104       f = t3*t1-55.0*r*t3*s+825.0*t7*t3-4950.0*t9*t2*t10+13860.0*t13*t2*t1
105 -19404.0*t13*r*t2*s+13860.0*t13*t7*t2-4950.0*t13*t9*t10+825.0*t23*t1-55.0*t23*r
106 *s+t23*t7;
107    /* p=13 */
108    } else if( ip==11 ) {
109       t1 = s*s;
110       t2 = t1*s;
111       t3 = t1*t1;
112       t4 = t3*t3;
113       t8 = r*r;
114       t11 = t8*r;
115       t13 = t8*t8;
116       t24 = t13*t13;
117       f = t2*t4-66.0*r*t4*t1+1210.0*t8*t4*s-9075.0*t11*t4+32670.0*t13*t3*t2
118 -60984.0*t13*r*t3*t1+60984.0*t13*t8*t3*s-32670.0*t13*t11*t3+9075.0*t24*t2
119 -1210.0*t24*r*t1+66.0*t24*t8*s-t24*t11;
120    /* p=14 */
121    } else if( ip==12 ) {
122       t1 = s*s;
123       t2 = t1*t1;
124       t3 = t2*t2;
125       t5 = t1*s;
126       t8 = r*r;
127       t11 = t8*r;
128       t14 = t8*t8;
129       t25 = t14*t14;
130       f = t3*t2-78.0*r*t3*t5+1716.0*t8*t3*t1-15730.0*t11*t3*s+70785.0*t14*t3
131 -169884.0*t14*r*t2*t5+226512.0*t14*t8*t2*t1-169884.0*t14*t11*t2*s+70785.0*t25*
132 t2-15730.0*t25*r*t5+1716.0*t25*t8*t1-78.0*t25*t11*s+t25*t14;
133    /* p=15 */
134    } else if( ip==13 ) {
135       t1 = s*s;
136       t2 = t1*t1;
137       t3 = t2*s;
138       t4 = t2*t2;
139       t8 = r*r;
140       t9 = t1*s;
141       t12 = t8*r;
142       t15 = t8*t8;
143       t18 = t15*r;
144       t26 = t15*t15;
145       f = t4*t3-91.0*r*t2*t4+2366.0*t8*t4*t9-26026.0*t12*t4*t1+143143.0*t15*
146 t4*s-429429.0*t18*t4+736164.0*t15*t8*t2*t9-736164.0*t15*t12*t2*t1+429429.0*t26*
147 t3-143143.0*t26*r*t2+26026.0*t26*t8*t9-2366.0*t26*t12*t1+91.0*t26*t15*s-t26*t18
148 ;
149     }
150     return f ;
151 }
152 
153 #ifdef __cplusplus
154 }
155 #endif
156