inf_fe_jacobi_20_00_eval.C
Go to the documentation of this file.00001 // The libMesh Finite Element Library. 00002 // Copyright (C) 2002-2012 Benjamin S. Kirk, John W. Peterson, Roy H. Stogner 00003 00004 // This library is free software; you can redistribute it and/or 00005 // modify it under the terms of the GNU Lesser General Public 00006 // License as published by the Free Software Foundation; either 00007 // version 2.1 of the License, or (at your option) any later version. 00008 00009 // This library is distributed in the hope that it will be useful, 00010 // but WITHOUT ANY WARRANTY; without even the implied warranty of 00011 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00012 // Lesser General Public License for more details. 00013 00014 // You should have received a copy of the GNU Lesser General Public 00015 // License along with this library; if not, write to the Free Software 00016 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 00017 00018 00019 // Local Includes 00020 #include "libmesh/libmesh_config.h" 00021 #ifdef LIBMESH_ENABLE_INFINITE_ELEMENTS 00022 #include "libmesh/inf_fe.h" 00023 00024 namespace libMesh 00025 { 00026 00027 // Anonymous namespace for local helper functions 00028 namespace { 00029 00030 Real jacobi_20_00_eval(Real v, unsigned i) 00031 { 00032 libmesh_assert (-1.-1.e-5 <= v && v < 1.); 00033 00034 switch (i) 00035 { 00036 case 0: 00037 return 1.; 00038 00039 case 1: 00040 return 2.+2.*v; 00041 00042 case 2: 00043 return -1.25+ 00044 (2.5+3.75*v)*v; 00045 00046 case 3: 00047 return .25+ 00048 (-1.5+ 00049 (5.25+7.*v)*v)*v; 00050 00051 case 4: 00052 return -.875+ 00053 (-3.5+ 00054 (-5.25+ 00055 (10.5+13.125*v)*v)*v)*v; 00056 00057 case 5: 00058 return 1.625+ 00059 (1.25+ 00060 (-11.25+ 00061 (-15.+ 00062 (20.625+24.75*v)*v)*v)*v)*v; 00063 00064 case 6: 00065 return -1.078125+(4.21875+ 00066 (6.328125+ 00067 (-30.9375+ 00068 (-38.671875+ 00069 (40.21875+46.921875*v)*v)*v)*v)*v)*v; 00070 00071 case 7: 00072 return .453125+(-1.09375+ 00073 (18.046875+ 00074 (24.0625+ 00075 (-78.203125+ 00076 (-93.84375+ 00077 (78.203125+89.375*v)*v)*v)*v)*v)*v)*v; 00078 00079 case 8: 00080 return -.9453125+(-4.8125+ 00081 (-7.21875+ 00082 (62.5625+ 00083 (78.203125+ 00084 (-187.6875+ 00085 (-218.96875+ 00086 (151.9375+170.9296875*v)*v)*v)*v)*v)*v)*v)*v; 00087 00088 case 9: 00089 return 1.4921875+(.984375+ 00090 (-25.59375+ 00091 (-34.125+ 00092 (191.953125+ 00093 (230.34375+ 00094 (-435.09375+ 00095 (-497.25+ 00096 (295.2421875+328.046875*v)*v)*v)*v)*v)*v)*v)*v)*v; 00097 00098 case 10: 00099 return -1.041015625+(5.33203125+ 00100 (7.998046875+ 00101 (-106.640625+ 00102 (-133.30078125+ 00103 (543.8671875+ 00104 (634.51171875+ 00105 (-984.140625+ 00106 (-1107.158203125+ 00107 (574.08203125+631.490234375*v)*v)*v)*v)*v)*v)*v)*v)*v)*v; 00108 00109 case 11: 00110 return .548828125+(-.90234375+ 00111 (33.837890625+ 00112 (45.1171875+ 00113 (-383.49609375+ 00114 (-460.1953125+ 00115 (1457.28515625+ 00116 (1665.46875+ 00117 (-2185.927734375+ 00118 (-2428.80859375+ 00119 (1117.251953125+1218.8203125*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v; 00120 00121 case 12: 00122 return -.9677734375+ 00123 (-5.80078125+ 00124 (-8.701171875+ 00125 (164.35546875+ 00126 (205.4443359375+ 00127 (-1249.1015625+ 00128 (-1457.28515625+ 00129 (3747.3046875+ 00130 (4215.7177734375+ 00131 (-4788.22265625+ 00132 (-5267.044921875+ 00133 (2176.46484375+2357.8369140625*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v; 00134 00135 case 13: 00136 return 1.418945312499432+ 00137 (.837890625+ 00138 (-42.732421875+ 00139 (-56.9765625+ 00140 (676.5966796875+ 00141 (811.9160156249999+ 00142 (-3788.94140625+ 00143 (-4330.21875+ 00144 (9337.0341796875+ 00145 (10374.482421875+ 00146 (-10374.482421875+ 00147 (-11317.6171875+ 00148 (4244.1064453125+4570.576171875*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v; 00149 00150 case 14: 00151 return -1.02618408203125+ 00152 (6.2318115234375+ 00153 (9.34771728515625+ 00154 (-236.808837890625+ 00155 (-296.0110473632813+ 00156 (2486.492797851563+ 00157 (2900.908264160156+ 00158 (-10893.20654296875+ 00159 (-12254.85736083984+ 00160 (22694.18029785156+ 00161 (24963.59832763672+ 00162 (-22281.55883789063+ 00163 (-24138.35540771484+ 00164 (8284.169311523438+8875.895690917969*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v; 00165 00166 case 15: 00167 return .60723876953125+ 00168 (-.7855224609375+ 00169 (52.23724365234375+ 00170 (69.649658203125+ 00171 (-1096.982116699219+ 00172 (-1316.378540039063+ 00173 (8410.196228027344+ 00174 (9611.65283203125+ 00175 (-30036.41510009766+ 00176 (-33373.79455566406+ 00177 (54065.54718017578+ 00178 (58980.59692382813+ 00179 (-47512.14752197266+ 00180 (-51166.92810058594+ 00181 (16185.45684814453+17264.4873046875*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v; 00182 00183 case 16: 00184 return -.978179931640625+ 00185 (-6.63330078125+ 00186 (-9.949951171875+ 00187 (325.03173828125+ 00188 (406.2896728515625+ 00189 (-4485.43798828125+ 00190 (-5233.010986328125+ 00191 (26699.03564453125+ 00192 (30036.41510009766+ 00193 (-80097.10693359375+ 00194 (-88106.81762695313+ 00195 (126699.0600585938+ 00196 (137257.3150634766+ 00197 (-100709.5092773438+ 00198 (-107903.0456542969+ 00199 (31651.56005859375+33629.78256225586*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v; 00200 00201 case 17: 00202 return 1.370941162109141+ 00203 (.74188232421875+ 00204 (-62.31811523437499+ 00205 (-83.0908203125+ 00206 (1672.202758789063+ 00207 (2006.643310546875+ 00208 (-16722.02758789063+ 00209 (-19110.888671875+ 00210 (80624.06158447266+ 00211 (89582.29064941406+ 00212 (-207830.9143066406+ 00213 (-226724.6337890625+ 00214 (292852.6519775391+ 00215 (315379.7790527344+ 00216 (-212398.6267089844+ 00217 (-226558.53515625+ 00218 (61949.5994567871+65593.69354248047*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v; 00219 00220 case 18: 00221 return -1.018547058106322+ 00222 (7.010787963867187+ 00223 (10.51618194580078+ 00224 (-429.9949951171874+ 00225 (-537.4937438964844+ 00226 (7524.91241455078+ 00227 (8779.064483642578+ 00228 (-58049.32434082031+ 00229 (-65305.48988342284+ 00230 (233809.7785949707+ 00231 (257190.7564544677+ 00232 (-527134.7735595703+ 00233 (-571062.6713562012+ 00234 (669055.6741333008+ 00235 (716845.3651428223+ 00236 (-446037.1160888671+ 00237 (-473914.4358444213+ 00238 (121348.3330535889+128089.9071121216*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v; 00239 00240 00241 default: 00242 libMesh::err << "bad index i = " << i << std::endl; 00243 libmesh_error(); 00244 00245 } 00246 00247 // we never end up here. 00248 libmesh_error(); 00249 return 0.; 00250 } // jacobi_20_00_eval() 00251 00252 00253 00254 00255 00256 Real jacobi_20_00_eval_deriv(Real v, unsigned i) 00257 { 00258 libmesh_assert (-1.-1.e-5 <= v && v < 1.); 00259 00260 switch (i) 00261 { 00262 case 0: 00263 return 0.; 00264 00265 case 1: 00266 return 2.; 00267 00268 case 2: 00269 return 7.5*v+2.5; 00270 00271 case 3: 00272 return -1.5+ 00273 (10.5+21.*v)*v; 00274 00275 case 4: 00276 return -3.5+ 00277 (-10.5+ 00278 (31.5+52.5*v)*v)*v; 00279 00280 case 5: 00281 return 1.25+ 00282 (-22.5+ 00283 (-45.+ 00284 (82.5+123.75*v)*v)*v)*v; 00285 00286 case 6: 00287 return 4.21875+ 00288 (12.65625+ 00289 (-92.8125+ 00290 (-154.6875+ 00291 (201.09375+281.53125*v)*v)*v)*v)*v; 00292 00293 case 7: 00294 return -1.09375+ 00295 (36.09375+ 00296 (72.1875+ 00297 (-312.8125+ 00298 (-469.21875+ 00299 (469.21875+625.625*v)*v)*v)*v)*v)*v; 00300 00301 case 8: 00302 return -4.8125+ 00303 (-14.4375+ 00304 (187.6875+ 00305 (312.8125+ 00306 (-938.4375+ 00307 (-1313.8125+ 00308 (1063.5625+1367.4375*v)*v)*v)*v)*v)*v)*v; 00309 00310 case 9: 00311 return .984375+ 00312 (-51.1875+ 00313 (-102.375+ 00314 (767.8125+ 00315 (1151.71875+ 00316 (-2610.5625+ 00317 (-3480.75+ 00318 (2361.9375+2952.421875*v)*v)*v)*v)*v)*v)*v)*v; 00319 00320 case 10: 00321 return 5.33203125+ 00322 (15.99609375+ 00323 (-319.921875+ 00324 (-533.203125+ 00325 (2719.3359375+ 00326 (3807.0703125+ 00327 (-6888.984375+ 00328 (-8857.265625+ 00329 (5166.73828125+6314.90234375*v)*v)*v)*v)*v)*v)*v)*v)*v; 00330 00331 case 11: 00332 return -.90234375+ 00333 (67.67578125+ 00334 (135.3515625+ 00335 (-1533.984375+ 00336 (-2300.9765625+ 00337 (8743.7109375+ 00338 (11658.28125+ 00339 (-17487.421875+ 00340 (-21859.27734375+ 00341 (11172.51953125+13407.0234375*v)*v)*v)*v)*v)*v)*v)*v)*v)*v; 00342 00343 case 12: 00344 return -5.80078125+ 00345 (-17.40234375+ 00346 (493.06640625+ 00347 (821.77734375+ 00348 (-6245.5078125+ 00349 (-8743.7109375+ 00350 (26231.1328125+ 00351 (33725.7421875+ 00352 (-43094.00390625+ 00353 (-52670.44921875+ 00354 (23941.11328125+28294.04296875*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v; 00355 00356 case 13: 00357 return .837890625+ 00358 (-85.46484375+ 00359 (-170.9296875+ 00360 (2706.38671875+ 00361 (4059.580078124999+ 00362 (-22733.6484375+ 00363 (-30311.53125+ 00364 (74696.2734375+ 00365 (93370.341796875+ 00366 (-103744.82421875+ 00367 (-124493.7890625+ 00368 (50929.27734375+59417.490234375*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v; 00369 00370 case 14: 00371 return 6.2318115234375+ 00372 (18.6954345703125+ 00373 (-710.426513671875+ 00374 (-1184.044189453125+ 00375 (12432.46398925781+ 00376 (17405.44958496094+ 00377 (-76252.44580078125+ 00378 (-98038.85888671875+ 00379 (204247.6226806641+ 00380 (249635.9832763672+ 00381 (-245097.1472167969+ 00382 (-289660.2648925781+ 00383 (107694.2010498047+124262.5396728516*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v; 00384 00385 case 15: 00386 return -.7855224609375+ 00387 (104.4744873046875+ 00388 (208.948974609375+ 00389 (-4387.928466796875+ 00390 (-6581.892700195313+ 00391 (50461.17736816406+ 00392 (67281.56982421875+ 00393 (-240291.3208007813+ 00394 (-300364.1510009766+ 00395 (540655.4718017578+ 00396 (648786.5661621094+ 00397 (-570145.7702636719+ 00398 (-665170.0653076172+ 00399 (226596.3958740234+258967.3095703125*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v; 00400 00401 case 16: 00402 return -6.63330078125+ 00403 (-19.89990234375+ 00404 (975.09521484375+ 00405 (1625.15869140625+ 00406 (-22427.18994140625+ 00407 (-31398.06591796875+ 00408 (186893.2495117188+ 00409 (240291.3208007813+ 00410 (-720873.9624023438+ 00411 (-881068.1762695313+ 00412 (1393689.660644531+ 00413 (1647087.780761719+ 00414 (-1309223.620605469+ 00415 (-1510642.639160156+ 00416 (474773.4008789063+538076.5209960938*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v; 00417 00418 case 17: 00419 return .74188232421875+ 00420 (-124.63623046875+ 00421 (-249.2724609375+ 00422 (6688.81103515625+ 00423 (10033.21655273437+ 00424 (-100332.1655273438+ 00425 (-133776.220703125+ 00426 (644992.4926757813+ 00427 (806240.6158447266+ 00428 (-2078309.143066406+ 00429 (-2493970.971679688+ 00430 (3514231.823730469+ 00431 (4099937.127685547+ 00432 (-2973580.773925781+ 00433 (-3398378.02734375+ 00434 (991193.5913085936+1115092.790222168*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v; 00435 00436 case 18: 00437 return 7.010787963867187+ 00438 (21.03236389160156+ 00439 (-1289.984985351562+ 00440 (-2149.974975585938+ 00441 (37624.5620727539+ 00442 (52674.38690185547+ 00443 (-406345.2703857421+ 00444 (-522443.9190673828+ 00445 (2104288.007354736+ 00446 (2571907.564544677+ 00447 (-5798482.509155273+ 00448 (-6852752.056274414+ 00449 (8697723.76373291+ 00450 (10035835.11199951+ 00451 (-6690556.741333007+ 00452 (-7582630.973510741+ 00453 (2062921.66191101+2305618.328018188*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v; 00454 00455 00456 default: 00457 libMesh::err << "bad index i = " << i << std::endl; 00458 libmesh_error(); 00459 00460 } 00461 00462 // we never end up here. 00463 return 0.; 00464 } // jacobi_20_00_eval_deriv() 00465 00466 00467 } // anonymous namespace 00468 00469 00470 00471 // Specialize the eval() function for 1, 2, and 3 dimensions and the CARTESIAN mapping type 00472 // to call the local helper function from the anonymous namespace. 00473 template <> Real InfFE<1,JACOBI_20_00,CARTESIAN>::eval(Real v, Order, unsigned i) { return jacobi_20_00_eval(v, i); } 00474 template <> Real InfFE<2,JACOBI_20_00,CARTESIAN>::eval(Real v, Order, unsigned i) { return jacobi_20_00_eval(v, i); } 00475 template <> Real InfFE<3,JACOBI_20_00,CARTESIAN>::eval(Real v, Order, unsigned i) { return jacobi_20_00_eval(v, i); } 00476 00477 // Specialize the eval_deriv() function for 1, 2, and 3 dimensions and the CARTESIAN mapping type 00478 // to call the local helper function from the anonymous namespace. 00479 template <> Real InfFE<1,JACOBI_20_00,CARTESIAN>::eval_deriv(Real v, Order, unsigned i) { return jacobi_20_00_eval_deriv(v, i); } 00480 template <> Real InfFE<2,JACOBI_20_00,CARTESIAN>::eval_deriv(Real v, Order, unsigned i) { return jacobi_20_00_eval_deriv(v, i); } 00481 template <> Real InfFE<3,JACOBI_20_00,CARTESIAN>::eval_deriv(Real v, Order, unsigned i) { return jacobi_20_00_eval_deriv(v, i); } 00482 00483 } // namespace libMesh 00484 00485 #endif // LIBMESH_ENABLE_INFINITE_ELEMENTS 00486
Site Created By: libMesh Developers
Last modified: February 05 2013 19:54:47 UTC
Hosted By: