$extrastylesheet
inf_fe_jacobi_30_00_eval.C
Go to the documentation of this file.
00001 // The libMesh Finite Element Library.
00002 // Copyright (C) 2002-2014 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_error_msg("bad index i = " << i);
00243     }
00244 
00245   libmesh_error_msg("We'll never get here!");
00246   return 0.;
00247 } // jacobi_30_00_eval()
00248 
00249 
00250 
00251 
00252 Real jacobi_30_00_eval_deriv(Real v, unsigned i)
00253 {
00254   libmesh_assert (-1.-1.e-5 <= v && v < 1.);
00255 
00256   switch (i)
00257     {
00258     case 0:
00259       return 0.;
00260 
00261     case 1:
00262       return 2.5;
00263 
00264     case 2:
00265       return 10.5*v+4.5;
00266 
00267     case 3:
00268       return (21.+31.5*v)*v;
00269 
00270     case 4:
00271       return -5.5+
00272         (-4.5+
00273          (67.5+82.5*v)*v)*v;
00274 
00275     case 5:
00276       return -1.40625+
00277         (-39.375+
00278          (-30.9375+
00279           (185.625+201.09375*v)*v)*v)*v;
00280 
00281     case 6:
00282       return 6.09375+
00283         (-5.15625+
00284          (-175.3125+
00285           (-134.0625+
00286            (469.21875+469.21875*v)*v)*v)*v)*v;
00287 
00288     case 7:
00289       return 2.40625+
00290         (57.75+
00291          (-625.625+
00292           (-469.21875+
00293            (1126.125+1063.5625*v)*v)*v)*v*v)*v;
00294 
00295     case 8:
00296       return -6.5625+
00297         (17.0625+
00298          (324.1875+
00299           (85.3125+
00300            (-1962.1875+
00301             (-1450.3125+
00302              (2610.5625+2361.9375*v)*v)*v)*v)*v)*v)*v;
00303 
00304     case 9:
00305       return -3.19921875+
00306         (-76.78125+
00307          (63.984375+
00308           (1407.65625+
00309            (543.8671875+
00310             (-5656.21875+
00311              (-4133.390625+
00312               (5904.84375+5166.73828125*v)*v)*v)*v)*v)*v)*v)*v;
00313 
00314     case 10:
00315       return 6.97265625+
00316         (-30.76171875+
00317          (-516.796875+
00318           (139.453125+
00319            (5229.4921875+
00320             (2384.6484375+
00321              (-15367.734375+
00322               (-11128.359375+
00323                (13115.56640625+11172.51953125*v)*v)*v)*v)*v)*v)*v)*v)*v;
00324 
00325     case 11:
00326       return 3.8671875+
00327         (96.6796875+
00328          (-164.35546875+
00329           (-2629.6875+
00330            (17487.421875+
00331             (8743.7109375+
00332              (-39971.25+
00333               (-28729.3359375+
00334                (28729.3359375+23941.11328125*v)*v)*v)*v)*v)*v*v)*v)*v)*v;
00335 
00336     case 12:
00337       return -7.34765625+
00338         (46.01953125+
00339          (756.03515625+
00340           (-624.55078125+
00341            (-11241.9140625+
00342             (-1748.7421875+
00343              (54211.0078125+
00344               (28729.3359375+
00345                (-100552.67578125+
00346                 (-71823.33984375+
00347                  (62246.89453125+50929.27734375*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v;
00348 
00349     case 13:
00350       return -4.4512939453125+
00351         (-117.51416015625+
00352          (304.468505859375+
00353           (4397.87841796875+
00354            (-1776.066284179688+
00355             (-42625.59082031249+
00356              (-10893.20654296875+
00357               (158729.5810546875+
00358                (87534.69543457031+
00359                 (-246393.9575195312+
00360                  (-175069.3908691406+
00361                   (133689.3530273438+107694.2010498047*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v;
00362 
00363     case 14:
00364       return 7.6981201171875+
00365         (-62.6846923828125+
00366          (-1044.744873046875+
00367           (1462.642822265625+
00368            (21208.32092285156+
00369             (-3364.078491210938+
00370              (-148019.4536132813+
00371               (-48058.26416015625+
00372                (444538.9434814453+
00373                 (252305.8868408203+
00374                  (-591116.6491699219+
00375                   (-418106.8981933594+
00376                    (285072.8851318359+226596.3958740234*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v;
00377 
00378     case 15:
00379       return 4.9749755859375+
00380         (139.29931640625+
00381          (-487.547607421875+
00382           (-6825.66650390625+
00383            (5606.797485351563+
00384             (89708.759765625+
00385              (-480582.6416015625+
00386               (-180218.4906005859+
00387                (1201456.604003906+
00388                 (696844.8303222656+
00389                  (-1393689.660644531+
00390                   (-981917.7154541016+
00391                    (604257.0556640625+474773.4008789063*v)*v)*v)*v)*v)*v)*v)*v*v)*v)*v)*v)*v)*v;
00392 
00393     case 16:
00394       return -8.02978515625+
00395         (80.64697265625+
00396          (1385.66162109375+
00397           (-2754.21630859375+
00398            (-36591.73095703125+
00399             (17705.67626953125+
00400              (344277.0385742188+
00401               (37940.73486328125+
00402                (-1479688.659667969+
00403                 (-611267.3950195313+
00404                  (3154139.758300781+
00405                   (1860475.671386719+
00406                    (-3238605.798339844+
00407                     (-2273914.709472656+
00408                      (1274391.760253906+991193.5913085938*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v;
00409 
00410     case 17:
00411       return -5.452835083007813+
00412         (-162.027099609375+
00413          (716.6583251953125+
00414           (10033.21655273438+
00415            (-12541.52069091797+
00416             (-170564.6813964844+
00417              (45149.47448730469+
00418               (1225485.736083984+
00419                (233809.7785949707+
00420                 (-4364449.200439453+
00421                  (-1932827.503051758+
00422                   (8082733.194580078+
00423                    (4832068.757629395+
00424                     (-7433951.934814453+
00425                      (-5203766.354370117+
00426                       (2676222.696533203+2062921.661911011*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v;
00427 
00428     case 18:
00429       return 8.346176147460938+
00430         (-99.8202667236328+
00431          (-1781.407836914063+
00432           (4607.089233398438+
00433            (59124.31182861328+
00434             (-48374.43695068359+
00435              (-715941.6668701171+
00436               (80163.35266113281+
00437                (4108371.823883056+
00438                 (1035443.305206299+
00439                  (-12425319.66247559+
00440                   (-5798482.509155273+
00441                    (20294688.78204345+
00442                     (12266020.69244385+
00443                      (-16885690.82336426+
00444                       (-11788123.78234863+
00445                        (5599358.796615601+4281862.609176635*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v)*v;
00446 
00447 
00448     default:
00449       libmesh_error_msg("bad index i = " << i);
00450     }
00451 
00452   libmesh_error_msg("We'll never get here!");
00453   return 0.;
00454 } // jacobi_30_00_eval_deriv()
00455 
00456 
00457 } // anonymous namespace
00458 
00459 
00460 
00461   // Specialize the eval() function for 1, 2, and 3 dimensions and the CARTESIAN mapping type
00462   // to call the local helper function from the anonymous namespace.
00463 template <> Real InfFE<1,JACOBI_30_00,CARTESIAN>::eval(Real v, Order, unsigned i) { return jacobi_30_00_eval(v, i); }
00464 template <> Real InfFE<2,JACOBI_30_00,CARTESIAN>::eval(Real v, Order, unsigned i) { return jacobi_30_00_eval(v, i); }
00465 template <> Real InfFE<3,JACOBI_30_00,CARTESIAN>::eval(Real v, Order, unsigned i) { return jacobi_30_00_eval(v, i); }
00466 
00467 // Specialize the eval_deriv() function for 1, 2, and 3 dimensions and the CARTESIAN mapping type
00468 // to call the local helper function from the anonymous namespace.
00469 template <> Real InfFE<1,JACOBI_30_00,CARTESIAN>::eval_deriv(Real v, Order, unsigned i) { return jacobi_30_00_eval_deriv(v, i); }
00470 template <> Real InfFE<2,JACOBI_30_00,CARTESIAN>::eval_deriv(Real v, Order, unsigned i) { return jacobi_30_00_eval_deriv(v, i); }
00471 template <> Real InfFE<3,JACOBI_30_00,CARTESIAN>::eval_deriv(Real v, Order, unsigned i) { return jacobi_30_00_eval_deriv(v, i); }
00472 
00473 } // namespace libMesh
00474 
00475 #endif // LIBMESH_ENABLE_INFINITE_ELEMENTS