xref: /phasta/shapeFunction/src/En.c (revision cc72a73fd2b79f4dd0a850fa4af718cd73554811)
159599516SKenneth E. Jansen /*-------------------------------------------------------------------------
259599516SKenneth E. Jansen   Scientific Computation Research Center, RPI, Troy NY
359599516SKenneth E. Jansen   (C) Copyright 1995, RPI-SCOREC
459599516SKenneth E. Jansen 
559599516SKenneth E. Jansen   Project  : shapeFuntions
659599516SKenneth E. Jansen   Author(s): Saikat Dey
759599516SKenneth E. Jansen   Creation : Oct., 95
859599516SKenneth E. Jansen   Modifi.  :
959599516SKenneth E. Jansen   Function :
1059599516SKenneth E. Jansen              mode shape for a simplex edge of order ip, Maple generated.
1159599516SKenneth E. Jansen -------------------------------------------------------------------------*/
1259599516SKenneth E. Jansen 
1359599516SKenneth E. Jansen #ifdef __cplusplus
1459599516SKenneth E. Jansen extern "C" {
1559599516SKenneth E. Jansen #endif
1659599516SKenneth E. Jansen 
En(int ip,double r,double s)1759599516SKenneth E. Jansen double En(int ip, double r, double s) {
1859599516SKenneth E. Jansen    double f = 0.0;
19*cc72a73fSCristian Rivera    double t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14,t15,t18;
20*cc72a73fSCristian Rivera    double t21,t22,t23,t24,t25,t26;
2159599516SKenneth E. Jansen 
2259599516SKenneth E. Jansen    /* p=2 */
2359599516SKenneth E. Jansen    if( ip==0 ) {
2459599516SKenneth E. Jansen       f = 1.0;
2559599516SKenneth E. Jansen    /* p=3 */
2659599516SKenneth E. Jansen    } else if( ip==1 ) {
2759599516SKenneth E. Jansen       f = s-r;
2859599516SKenneth E. Jansen    /* p=4 */
2959599516SKenneth E. Jansen    } else if( ip==2 ) {
3059599516SKenneth E. Jansen       t1 = s*s;
3159599516SKenneth E. Jansen       t3 = r*r;
3259599516SKenneth E. Jansen       f = t1-3.0*r*s+t3;
3359599516SKenneth E. Jansen    /* p=5 */
3459599516SKenneth E. Jansen    } else if( ip==3 ) {
3559599516SKenneth E. Jansen       t1 = s*s;
3659599516SKenneth E. Jansen       t4 = r*r;
3759599516SKenneth E. Jansen       f = t1*s-6.0*r*t1+6.0*t4*s-t4*r;
3859599516SKenneth E. Jansen    /* p=6 */
3959599516SKenneth E. Jansen    } else if( ip==4 ) {
4059599516SKenneth E. Jansen       t1 = s*s;
4159599516SKenneth E. Jansen       t2 = t1*t1;
4259599516SKenneth E. Jansen       t5 = r*r;
4359599516SKenneth E. Jansen       t9 = t5*t5;
4459599516SKenneth E. Jansen       f = t2-10.0*r*t1*s+20.0*t5*t1-10.0*t5*r*s+t9;
4559599516SKenneth E. Jansen    /* p=7 */
4659599516SKenneth E. Jansen    } else if( ip==5 ) {
4759599516SKenneth E. Jansen       t1 = s*s;
4859599516SKenneth E. Jansen       t2 = t1*t1;
4959599516SKenneth E. Jansen       t5 = r*r;
5059599516SKenneth E. Jansen       t10 = t5*t5;
5159599516SKenneth E. Jansen       f = t2*s-15.0*t2*r+50.0*t5*t1*s-50.0*t5*r*t1+15.0*t10*s-t10*r;
5259599516SKenneth E. Jansen    /* p=8 */
5359599516SKenneth E. Jansen    } else if( ip==6 ) {
5459599516SKenneth E. Jansen       t1 = s*s;
5559599516SKenneth E. Jansen       t2 = t1*t1;
5659599516SKenneth E. Jansen       t6 = r*r;
5759599516SKenneth E. Jansen       t11 = t6*t6;
5859599516SKenneth E. Jansen       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
5959599516SKenneth E. Jansen *r*s+t11*t6;
6059599516SKenneth E. Jansen    /* p=9 */
6159599516SKenneth E. Jansen    } else if( ip==7 ) {
6259599516SKenneth E. Jansen       t1 = s*s;
6359599516SKenneth E. Jansen       t2 = t1*s;
6459599516SKenneth E. Jansen       t3 = t1*t1;
6559599516SKenneth E. Jansen       t7 = r*r;
6659599516SKenneth E. Jansen       t10 = t7*r;
6759599516SKenneth E. Jansen       t12 = t7*t7;
6859599516SKenneth E. Jansen       f = t3*t2-28.0*r*t3*t1+196.0*t7*t3*s-490.0*t10*t3+490.0*t12*t2-196.0*
6959599516SKenneth E. Jansen t12*r*t1+28.0*t12*t7*s-t12*t10;
7059599516SKenneth E. Jansen    /* p=10 */
7159599516SKenneth E. Jansen    } else if( ip==8 ) {
7259599516SKenneth E. Jansen       t1 = s*s;
7359599516SKenneth E. Jansen       t2 = t1*t1;
7459599516SKenneth E. Jansen       t3 = t2*t2;
7559599516SKenneth E. Jansen       t4 = t1*s;
7659599516SKenneth E. Jansen       t7 = r*r;
7759599516SKenneth E. Jansen       t10 = t7*r;
7859599516SKenneth E. Jansen       t13 = t7*t7;
7959599516SKenneth E. Jansen       t21 = t13*t13;
8059599516SKenneth E. Jansen       f = t3-36.0*r*t2*t4+336.0*t7*t2*t1-1176.0*t10*t2*s+1764.0*t13*t2-1176.0
8159599516SKenneth E. Jansen *t13*r*t4+336.0*t13*t7*t1-36.0*t13*t10*s+t21;
8259599516SKenneth E. Jansen    /* p=11 */
8359599516SKenneth E. Jansen    } else if( ip==9 ) {
8459599516SKenneth E. Jansen       t1 = s*s;
8559599516SKenneth E. Jansen       t2 = t1*t1;
8659599516SKenneth E. Jansen       t3 = t2*t2;
8759599516SKenneth E. Jansen       t6 = r*r;
8859599516SKenneth E. Jansen       t7 = t1*s;
8959599516SKenneth E. Jansen       t10 = t6*r;
9059599516SKenneth E. Jansen       t13 = t6*t6;
9159599516SKenneth E. Jansen       t22 = t13*t13;
9259599516SKenneth E. Jansen       f = t3*s-45.0*t3*r+540.0*t6*t2*t7-2520.0*t10*t2*t1+5292.0*t13*t2*s
9359599516SKenneth E. Jansen -5292.0*t13*r*t2+2520.0*t13*t6*t7-540.0*t13*t10*t1+45.0*t22*s-t22*r;
9459599516SKenneth E. Jansen    /* p=12 */
9559599516SKenneth E. Jansen    } else if( ip==10 ) {
9659599516SKenneth E. Jansen       t1 = s*s;
9759599516SKenneth E. Jansen       t2 = t1*t1;
9859599516SKenneth E. Jansen       t3 = t2*t2;
9959599516SKenneth E. Jansen       t7 = r*r;
10059599516SKenneth E. Jansen       t9 = t7*r;
10159599516SKenneth E. Jansen       t10 = t1*s;
10259599516SKenneth E. Jansen       t13 = t7*t7;
10359599516SKenneth E. Jansen       t23 = t13*t13;
10459599516SKenneth E. Jansen       f = t3*t1-55.0*r*t3*s+825.0*t7*t3-4950.0*t9*t2*t10+13860.0*t13*t2*t1
10559599516SKenneth E. Jansen -19404.0*t13*r*t2*s+13860.0*t13*t7*t2-4950.0*t13*t9*t10+825.0*t23*t1-55.0*t23*r
10659599516SKenneth E. Jansen *s+t23*t7;
10759599516SKenneth E. Jansen    /* p=13 */
10859599516SKenneth E. Jansen    } else if( ip==11 ) {
10959599516SKenneth E. Jansen       t1 = s*s;
11059599516SKenneth E. Jansen       t2 = t1*s;
11159599516SKenneth E. Jansen       t3 = t1*t1;
11259599516SKenneth E. Jansen       t4 = t3*t3;
11359599516SKenneth E. Jansen       t8 = r*r;
11459599516SKenneth E. Jansen       t11 = t8*r;
11559599516SKenneth E. Jansen       t13 = t8*t8;
11659599516SKenneth E. Jansen       t24 = t13*t13;
11759599516SKenneth E. Jansen       f = t2*t4-66.0*r*t4*t1+1210.0*t8*t4*s-9075.0*t11*t4+32670.0*t13*t3*t2
11859599516SKenneth E. Jansen -60984.0*t13*r*t3*t1+60984.0*t13*t8*t3*s-32670.0*t13*t11*t3+9075.0*t24*t2
11959599516SKenneth E. Jansen -1210.0*t24*r*t1+66.0*t24*t8*s-t24*t11;
12059599516SKenneth E. Jansen    /* p=14 */
12159599516SKenneth E. Jansen    } else if( ip==12 ) {
12259599516SKenneth E. Jansen       t1 = s*s;
12359599516SKenneth E. Jansen       t2 = t1*t1;
12459599516SKenneth E. Jansen       t3 = t2*t2;
12559599516SKenneth E. Jansen       t5 = t1*s;
12659599516SKenneth E. Jansen       t8 = r*r;
12759599516SKenneth E. Jansen       t11 = t8*r;
12859599516SKenneth E. Jansen       t14 = t8*t8;
12959599516SKenneth E. Jansen       t25 = t14*t14;
13059599516SKenneth E. Jansen       f = t3*t2-78.0*r*t3*t5+1716.0*t8*t3*t1-15730.0*t11*t3*s+70785.0*t14*t3
13159599516SKenneth E. Jansen -169884.0*t14*r*t2*t5+226512.0*t14*t8*t2*t1-169884.0*t14*t11*t2*s+70785.0*t25*
13259599516SKenneth E. Jansen t2-15730.0*t25*r*t5+1716.0*t25*t8*t1-78.0*t25*t11*s+t25*t14;
13359599516SKenneth E. Jansen    /* p=15 */
13459599516SKenneth E. Jansen    } else if( ip==13 ) {
13559599516SKenneth E. Jansen       t1 = s*s;
13659599516SKenneth E. Jansen       t2 = t1*t1;
13759599516SKenneth E. Jansen       t3 = t2*s;
13859599516SKenneth E. Jansen       t4 = t2*t2;
13959599516SKenneth E. Jansen       t8 = r*r;
14059599516SKenneth E. Jansen       t9 = t1*s;
14159599516SKenneth E. Jansen       t12 = t8*r;
14259599516SKenneth E. Jansen       t15 = t8*t8;
14359599516SKenneth E. Jansen       t18 = t15*r;
14459599516SKenneth E. Jansen       t26 = t15*t15;
14559599516SKenneth E. Jansen       f = t4*t3-91.0*r*t2*t4+2366.0*t8*t4*t9-26026.0*t12*t4*t1+143143.0*t15*
14659599516SKenneth E. Jansen t4*s-429429.0*t18*t4+736164.0*t15*t8*t2*t9-736164.0*t15*t12*t2*t1+429429.0*t26*
14759599516SKenneth E. Jansen t3-143143.0*t26*r*t2+26026.0*t26*t8*t9-2366.0*t26*t12*t1+91.0*t26*t15*s-t26*t18
14859599516SKenneth E. Jansen ;
14959599516SKenneth E. Jansen     }
15059599516SKenneth E. Jansen     return f ;
15159599516SKenneth E. Jansen }
15259599516SKenneth E. Jansen 
15359599516SKenneth E. Jansen #ifdef __cplusplus
15459599516SKenneth E. Jansen }
15559599516SKenneth E. Jansen #endif
156