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