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