inf_fe_jacobi_30_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_30_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.5+2.5*v; 00041 00042 case 2: 00043 return -.75+(4.5+5.25*v)*v; 00044 00045 case 3: 00046 return (10.5+10.5*v)*v*v; 00047 00048 case 4: 00049 return -1.375+ 00050 (-5.5+ 00051 (-2.25+ 00052 (22.5+20.625*v)*v)*v)*v; 00053 00054 case 5: 00055 return 1.78125+ 00056 (-1.40625+ 00057 (-19.6875+ 00058 (-10.3125+ 00059 (46.40625+40.21875*v)*v)*v)*v)*v; 00060 00061 case 6: 00062 return -.609375+ 00063 (6.09375+ 00064 (-2.578125+ 00065 (-58.4375+ 00066 (-33.515625+ 00067 (93.84375+78.203125*v)*v)*v)*v)*v)*v; 00068 00069 case 7: 00070 return .34375+ 00071 (2.40625+ 00072 (28.875+ 00073 (-156.40625+ 00074 (-93.84375+ 00075 (187.6875+151.9375*v)*v)*v)*v*v)*v)*v; 00076 00077 case 8: 00078 return -1.3828125+ 00079 (-6.5625+ 00080 (8.53125+ 00081 (108.0625+ 00082 (21.328125+ 00083 (-392.4375+ 00084 (-241.71875+ 00085 (372.9375+295.2421875*v)*v)*v)*v)*v)*v)*v)*v; 00086 00087 case 9: 00088 return 1.57421875+ 00089 (-3.19921875+ 00090 (-38.390625+ 00091 (21.328125+ 00092 (351.9140625+ 00093 (108.7734375+ 00094 (-942.703125+ 00095 (-590.484375+ 00096 (738.10546875+574.08203125*v)*v)*v)*v)*v)*v)*v)*v)*v; 00097 00098 case 10: 00099 return -.6308593750004547+ 00100 (6.97265625+ 00101 (-15.380859375+ 00102 (-172.265625+ 00103 (34.86328125+ 00104 (1045.8984375+ 00105 (397.4414062499999+ 00106 (-2195.390625+ 00107 (-1391.044921875+ 00108 (1457.28515625+1117.251953125*v)*v)*v)*v)*v)*v)*v)*v)*v)*v; 00109 00110 case 11: 00111 return .484375+ 00112 (3.8671875+ 00113 (48.33984375+ 00114 (-54.78515625+ 00115 (-657.421875+ 00116 (2914.5703125+ 00117 (1249.1015625+ 00118 (-4996.40625+ 00119 (-3192.1484375+ 00120 (2872.93359375+2176.46484375*v)*v)*v)*v)*v)*v*v)*v)*v)*v)*v; 00121 00122 case 12: 00123 return -1.3544921875+ 00124 (-7.34765625+ 00125 (23.009765625+ 00126 (252.01171875+ 00127 (-156.1376953125+ 00128 (-2248.3828125+ 00129 (-291.45703125+ 00130 (7744.4296875+ 00131 (3591.1669921875+ 00132 (-11172.51953125+ 00133 (-7182.333984375+ 00134 (5658.80859375+4244.1064453125*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v; 00135 00136 case 13: 00137 return 1.471313476557931+ 00138 (-4.4512939453125+ 00139 (-58.75708007812499+ 00140 (101.489501953125+ 00141 (1099.469604492188+ 00142 (-355.2132568359375+ 00143 (-7104.265136718749+ 00144 (-1556.17236328125+ 00145 (19841.19763183594+ 00146 (9726.077270507813+ 00147 (-24639.39575195312+ 00148 (-15915.39916992187+ 00149 (11140.77941894531+8284.169311523438*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v; 00150 00151 case 14: 00152 return -.65960693359375+ 00153 (7.6981201171875+ 00154 (-31.34234619140625+ 00155 (-348.248291015625+ 00156 (365.6607055664063+ 00157 (4241.664184570313+ 00158 (-560.6797485351563+ 00159 (-21145.63623046875+ 00160 (-6007.283020019531+ 00161 (49393.21594238281+ 00162 (25230.58868408203+ 00163 (-53737.87719726563+ 00164 (-34842.24151611328+ 00165 (21928.68347167969+16185.45684814453*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v; 00166 00167 case 15: 00168 return .5635986328125+ 00169 (4.9749755859375+ 00170 (69.649658203125+ 00171 (-162.515869140625+ 00172 (-1706.416625976563+ 00173 (1121.359497070313+ 00174 (14951.4599609375+ 00175 (-60072.83020019531+ 00176 (-20024.27673339844+ 00177 (120145.6604003906+ 00178 (63349.53002929688+ 00179 (-116140.8050537109+ 00180 (-75532.13195800781+ 00181 (43161.21826171875+31651.56005859375*v)*v)*v)*v)*v)*v)*v)*v*v)*v)*v)*v)*v)*v)*v; 00182 00183 case 16: 00184 return -1.327301025390625+ 00185 (-8.02978515625+ 00186 (40.323486328125+ 00187 (461.88720703125+ 00188 (-688.5540771484375+ 00189 (-7318.34619140625+ 00190 (2950.946044921875+ 00191 (49182.43408203125+ 00192 (4742.591857910156+ 00193 (-164409.8510742188+ 00194 (-61126.73950195313+ 00195 (286739.9780273438+ 00196 (155039.6392822266+ 00197 (-249123.5229492188+ 00198 (-162422.4792480469+ 00199 (84959.45068359375+61949.59945678711*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v; 00200 00201 case 17: 00202 return 1.408035278320313+ 00203 (-5.452835083007813+ 00204 (-81.0135498046875+ 00205 (238.8861083984375+ 00206 (2508.304138183594+ 00207 (-2508.304138183594+ 00208 (-28427.44689941406+ 00209 (6449.924926757813+ 00210 (153185.717010498+ 00211 (25978.86428833008+ 00212 (-436444.9200439453+ 00213 (-175711.5911865234+ 00214 (673561.0995483398+ 00215 (371697.5967407227+ 00216 (-530996.5667724609+ 00217 (-346917.7569580078+ 00218 (167263.9185333252+121348.3330535889*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v; 00219 00220 case 18: 00221 return -.6847000124835247+ 00222 (8.346176147460938+ 00223 (-49.9101333618164+ 00224 (-593.8026123046875+ 00225 (1151.772308349609+ 00226 (11824.86236572266+ 00227 (-8062.406158447265+ 00228 (-102277.3809814453+ 00229 (10020.4190826416+ 00230 (456485.7582092285+ 00231 (103544.3305206299+ 00232 (-1129574.514770508+ 00233 (-483206.8757629394+ 00234 (1561129.906311035+ 00235 (876144.3351745604+ 00236 (-1125712.721557617+ 00237 (-736757.7363967896+ 00238 (329374.0468597412+237881.2560653686*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 return 0.; 00249 } // jacobi_30_00_eval() 00250 00251 00252 00253 00254 Real jacobi_30_00_eval_deriv(Real v, unsigned i) 00255 { 00256 libmesh_assert (-1.-1.e-5 <= v && v < 1.); 00257 00258 switch (i) 00259 { 00260 case 0: 00261 return 0.; 00262 00263 case 1: 00264 return 2.5; 00265 00266 case 2: 00267 return 10.5*v+4.5; 00268 00269 case 3: 00270 return (21.+31.5*v)*v; 00271 00272 case 4: 00273 return -5.5+ 00274 (-4.5+ 00275 (67.5+82.5*v)*v)*v; 00276 00277 case 5: 00278 return -1.40625+ 00279 (-39.375+ 00280 (-30.9375+ 00281 (185.625+201.09375*v)*v)*v)*v; 00282 00283 case 6: 00284 return 6.09375+ 00285 (-5.15625+ 00286 (-175.3125+ 00287 (-134.0625+ 00288 (469.21875+469.21875*v)*v)*v)*v)*v; 00289 00290 case 7: 00291 return 2.40625+ 00292 (57.75+ 00293 (-625.625+ 00294 (-469.21875+ 00295 (1126.125+1063.5625*v)*v)*v)*v*v)*v; 00296 00297 case 8: 00298 return -6.5625+ 00299 (17.0625+ 00300 (324.1875+ 00301 (85.3125+ 00302 (-1962.1875+ 00303 (-1450.3125+ 00304 (2610.5625+2361.9375*v)*v)*v)*v)*v)*v)*v; 00305 00306 case 9: 00307 return -3.19921875+ 00308 (-76.78125+ 00309 (63.984375+ 00310 (1407.65625+ 00311 (543.8671875+ 00312 (-5656.21875+ 00313 (-4133.390625+ 00314 (5904.84375+5166.73828125*v)*v)*v)*v)*v)*v)*v)*v; 00315 00316 case 10: 00317 return 6.97265625+ 00318 (-30.76171875+ 00319 (-516.796875+ 00320 (139.453125+ 00321 (5229.4921875+ 00322 (2384.6484375+ 00323 (-15367.734375+ 00324 (-11128.359375+ 00325 (13115.56640625+11172.51953125*v)*v)*v)*v)*v)*v)*v)*v)*v; 00326 00327 case 11: 00328 return 3.8671875+ 00329 (96.6796875+ 00330 (-164.35546875+ 00331 (-2629.6875+ 00332 (17487.421875+ 00333 (8743.7109375+ 00334 (-39971.25+ 00335 (-28729.3359375+ 00336 (28729.3359375+23941.11328125*v)*v)*v)*v)*v)*v*v)*v)*v)*v; 00337 00338 case 12: 00339 return -7.34765625+ 00340 (46.01953125+ 00341 (756.03515625+ 00342 (-624.55078125+ 00343 (-11241.9140625+ 00344 (-1748.7421875+ 00345 (54211.0078125+ 00346 (28729.3359375+ 00347 (-100552.67578125+ 00348 (-71823.33984375+ 00349 (62246.89453125+50929.27734375*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v; 00350 00351 case 13: 00352 return -4.4512939453125+ 00353 (-117.51416015625+ 00354 (304.468505859375+ 00355 (4397.87841796875+ 00356 (-1776.066284179688+ 00357 (-42625.59082031249+ 00358 (-10893.20654296875+ 00359 (158729.5810546875+ 00360 (87534.69543457031+ 00361 (-246393.9575195312+ 00362 (-175069.3908691406+ 00363 (133689.3530273438+107694.2010498047*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v; 00364 00365 case 14: 00366 return 7.6981201171875+ 00367 (-62.6846923828125+ 00368 (-1044.744873046875+ 00369 (1462.642822265625+ 00370 (21208.32092285156+ 00371 (-3364.078491210938+ 00372 (-148019.4536132813+ 00373 (-48058.26416015625+ 00374 (444538.9434814453+ 00375 (252305.8868408203+ 00376 (-591116.6491699219+ 00377 (-418106.8981933594+ 00378 (285072.8851318359+226596.3958740234*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v; 00379 00380 case 15: 00381 return 4.9749755859375+ 00382 (139.29931640625+ 00383 (-487.547607421875+ 00384 (-6825.66650390625+ 00385 (5606.797485351563+ 00386 (89708.759765625+ 00387 (-480582.6416015625+ 00388 (-180218.4906005859+ 00389 (1201456.604003906+ 00390 (696844.8303222656+ 00391 (-1393689.660644531+ 00392 (-981917.7154541016+ 00393 (604257.0556640625+474773.4008789063*v)*v)*v)*v)*v)*v)*v)*v*v)*v)*v)*v)*v)*v; 00394 00395 case 16: 00396 return -8.02978515625+ 00397 (80.64697265625+ 00398 (1385.66162109375+ 00399 (-2754.21630859375+ 00400 (-36591.73095703125+ 00401 (17705.67626953125+ 00402 (344277.0385742188+ 00403 (37940.73486328125+ 00404 (-1479688.659667969+ 00405 (-611267.3950195313+ 00406 (3154139.758300781+ 00407 (1860475.671386719+ 00408 (-3238605.798339844+ 00409 (-2273914.709472656+ 00410 (1274391.760253906+991193.5913085938*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v; 00411 00412 case 17: 00413 return -5.452835083007813+ 00414 (-162.027099609375+ 00415 (716.6583251953125+ 00416 (10033.21655273438+ 00417 (-12541.52069091797+ 00418 (-170564.6813964844+ 00419 (45149.47448730469+ 00420 (1225485.736083984+ 00421 (233809.7785949707+ 00422 (-4364449.200439453+ 00423 (-1932827.503051758+ 00424 (8082733.194580078+ 00425 (4832068.757629395+ 00426 (-7433951.934814453+ 00427 (-5203766.354370117+ 00428 (2676222.696533203+2062921.661911011*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v; 00429 00430 case 18: 00431 return 8.346176147460938+ 00432 (-99.8202667236328+ 00433 (-1781.407836914063+ 00434 (4607.089233398438+ 00435 (59124.31182861328+ 00436 (-48374.43695068359+ 00437 (-715941.6668701171+ 00438 (80163.35266113281+ 00439 (4108371.823883056+ 00440 (1035443.305206299+ 00441 (-12425319.66247559+ 00442 (-5798482.509155273+ 00443 (20294688.78204345+ 00444 (12266020.69244385+ 00445 (-16885690.82336426+ 00446 (-11788123.78234863+ 00447 (5599358.796615601+4281862.609176635*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v; 00448 00449 00450 default: 00451 libMesh::err << "bad index i = " << i << std::endl; 00452 libmesh_error(); 00453 00454 } 00455 00456 // we never end up here. 00457 return 0.; 00458 } // jacobi_30_00_eval_deriv() 00459 00460 00461 } // anonymous namespace 00462 00463 00464 00465 // Specialize the eval() function for 1, 2, and 3 dimensions and the CARTESIAN mapping type 00466 // to call the local helper function from the anonymous namespace. 00467 template <> Real InfFE<1,JACOBI_30_00,CARTESIAN>::eval(Real v, Order, unsigned i) { return jacobi_30_00_eval(v, i); } 00468 template <> Real InfFE<2,JACOBI_30_00,CARTESIAN>::eval(Real v, Order, unsigned i) { return jacobi_30_00_eval(v, i); } 00469 template <> Real InfFE<3,JACOBI_30_00,CARTESIAN>::eval(Real v, Order, unsigned i) { return jacobi_30_00_eval(v, i); } 00470 00471 // Specialize the eval_deriv() 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_30_00,CARTESIAN>::eval_deriv(Real v, Order, unsigned i) { return jacobi_30_00_eval_deriv(v, i); } 00474 template <> Real InfFE<2,JACOBI_30_00,CARTESIAN>::eval_deriv(Real v, Order, unsigned i) { return jacobi_30_00_eval_deriv(v, i); } 00475 template <> Real InfFE<3,JACOBI_30_00,CARTESIAN>::eval_deriv(Real v, Order, unsigned i) { return jacobi_30_00_eval_deriv(v, i); } 00476 00477 } // namespace libMesh 00478 00479 #endif // LIBMESH_ENABLE_INFINITE_ELEMENTS 00480
Site Created By: libMesh Developers
Last modified: February 05 2013 19:54:47 UTC
Hosted By: