⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 inf_fe_lagrange_eval.c

📁 一个用来实现偏微分方程中网格的计算库
💻 C
📖 第 1 页 / 共 4 页
字号:
template <unsigned int Dim, FEFamily T_radial, InfMapType T_map>Real InfFE<Dim,T_radial,T_map>::eval_deriv(const Real v,					   const Order o_radial,					   const unsigned int i){  libmesh_assert (-1.-1.e-5 <= v && v < 1.);  switch (o_radial)    {    case CONSTANT:      switch (i)        {        case 0:          return 0.;        default:          std::cerr << "bad index i = " << i << std::endl;          libmesh_error();        }    case FIRST:      switch (i)        {        case 0:          return -1.;        case 1:          return 1.;        default:          std::cerr << "bad index i = " << i << std::endl;          libmesh_error();        }    case SECOND:      switch (i)        {        case 0:          return 4.*v+1.;        case 1:          return 4.*v+3.;        case 2:          return -8.*v-4.;        default:          std::cerr << "bad index i = " << i << std::endl;          libmesh_error();        }    case THIRD:      switch (i)        {        case 0:          return -1.+(-9.-13.5*v)*v;        case 1:          return 5.5+(18.+13.5*v)*v;        case 2:          return 4.5+(36.+40.5*v)*v;        case 3:          return -9.+(-45.-40.5*v)*v;        default:          std::cerr << "bad index i = " << i << std::endl;          libmesh_error();        }    case FOURTH:      switch (i)        {        case 0:          return 1.+(14.66666666666667+(48.+42.66666666666667*v)*v)*v;        case 1:          return 8.333333333333333+(46.66666666666667+(80.+42.66666666666667*v)*v)*v;        case 2:          return -5.333333333333333+(-74.66666666666667+(-224.-170.6666666666667*v)*v)*v;        case 3:          return 12.+(152.+(384.+256.*v)*v)*v;        case 4:          return -16.+(-138.6666666666667+(-288.-170.6666666666667*v)*v)*v;        default:          std::cerr << "bad index i = " << i << std::endl;          libmesh_error();        }    case FIFTH:      switch (i)        {        case 0:          return -1.+(-20.83333333333333+(-109.375+(-208.3333333333333-130.2083333333333*v)*v)*v)*v;        case 1:          return 11.41666666666667+(93.75+(265.625+(312.5+130.2083333333333*v)*v)*v)*v;        case 2:          return 6.25+(127.0833333333333+(640.625+(1145.833333333333+651.0416666666667*v)*v)*v)*v;        case 3:          return -16.66666666666667+(-325.+(-1531.25+(-2500.-1302.083333333333*v)*v)*v)*v;        case 4:          return 25.+(445.8333333333333+(1843.75+(2708.333333333333+1302.083333333333*v)*v)*v)*v;        case 5:          return -25.+(-320.8333333333333+(-1109.375+(-1458.333333333333-651.0416666666667*v)*v)*v)*v;        default:          std::cerr << "bad index i = " << i << std::endl;          libmesh_error();        }    case SIXTH:      switch (i)        {        case 0:          return 1.+(27.4+(202.5+(612.+(810.+388.8*v)*v)*v)*v)*v;        case 1:          return 14.7+(162.4+(661.5+(1260.+(1134.+388.8*v)*v)*v)*v)*v;        case 2:          return -7.2+(-194.4+(-1404.+(-4104.+(-5184.-2332.8*v)*v)*v)*v)*v;        case 3:          return 22.5+(594.+(4144.5+(11556.+(13770.+5832.*v)*v)*v)*v)*v;        case 4:          return -40.+(-1016.+(-6696.+(-17424.+(-19440.-7776.*v)*v)*v)*v)*v;        case 5:          return 45.+(1053.+(6223.5+(14796.+(15390.+5832.*v)*v)*v)*v)*v;        case 6:          return -36.+(-626.4+(-3132.+(-6696.+(-6480.-2332.8*v)*v)*v)*v)*v;        default:          std::cerr << "bad index i = " << i << std::endl;          libmesh_error();        }    case SEVENTH:      switch (i)        {        case 0:          return -1.000000000000001+(-34.30000000000002+(-331.5666666666668+(-1400.583333333334+(-2917.881944444446+(-2941.225000000002-1143.809722222223*v)*v)*v)*v)*v)*v;        case 1:          return 18.14999999999999+(255.3444444444444+(1382.004166666666+(3734.888888888888+(5368.902777777776+(3921.633333333332+1143.809722222222*v)*v)*v)*v)*v)*v;        case 2:          return 8.166666666666662+(277.3944444444443+(2642.529166666665+(10937.88888888888+(22175.90277777776+(21568.98333333332+8006.668055555551*v)*v)*v)*v)*v)*v;        case 3:          return -29.39999999999998+(-984.8999999999994+(-9192.399999999994+(-37015.41666666664+(-72480.18749999995+(-67648.17499999996-24020.00416666665*v)*v)*v)*v)*v)*v;        case 4:          return 61.25000000000001+(2009.+(18186.14583333333+(70429.33333333334+(131888.2638888889+(117649.+40033.34027777778*v)*v)*v)*v)*v)*v;        case 5:          return -81.66666666666667+(-2583.388888888889+(-22237.83333333334+(-81300.52777777778+(-144143.3680555556+(-122551.0416666667-40033.34027777778*v)*v)*v)*v)*v)*v;        case 6:          return 73.49999999999999+(2153.55+(16845.5875+(56823.66666666666+(94539.37499999999+(76471.84999999999+24020.00416666666*v)*v)*v)*v)*v)*v;        case 7:          return -49.00000000000003+(-1092.700000000001+(-7294.466666666671+(-22209.25000000001+(-34431.00694444447+(-26471.02500000002-8006.66805555556*v)*v)*v)*v)*v)*v;        default:          std::cerr << "bad index i = " << i << std::endl;          libmesh_error();        }    case EIGHTH:      switch (i)        {        case 0:          return 1.+(41.48571428571429+(500.2666666666667+(2750.577777777778+(7964.444444444444+(12561.06666666667+(10194.48888888889+3328.812698412698*v)*v)*v)*v)*v)*v)*v;        case 1:          return 21.74285714285714+(374.9968253968254+(2563.2+(9122.133333333333+(18432.+(21299.2+(13107.2+3328.812698412698*v)*v)*v)*v)*v)*v)*v;        case 2:          return -9.142857142857143+(-376.6857142857143+(-4497.066666666667+(-24393.95555555556+(-69404.44444444444+(-107042.1333333333+(-84468.62222222222-26630.50158730159*v)*v)*v)*v)*v)*v)*v;        case 3:          return 37.33333333333333+(1523.911111111111+(17952.+(95675.73333333333+(266240.+(399769.6+(305834.6666666667+93206.75555555556*v)*v)*v)*v)*v)*v)*v;        case 4:          return -89.6+(-3609.6+(-41736.53333333333+(-217179.0222222222+(-587320.8888888889+(-854152.5333333333+(-632058.3111111111-186413.5111111111*v)*v)*v)*v)*v)*v)*v;        case 5:          return 140.+(5528.+(62165.33333333333+(312689.7777777778+(814648.8888888889+(1141418.666666667+(815559.1111111111+233016.8888888889*v)*v)*v)*v)*v)*v)*v;        case 6:          return -149.3333333333333+(-5697.422222222222+(-61209.6+(-292727.4666666667+(-727040.+(-976486.4+(-672836.2666666667-186413.5111111111*v)*v)*v)*v)*v)*v)*v;        case 7:          return 112.+(3974.4+(39153.06666666667+(173954.8444444444+(407324.4444444444+(522103.4666666667+(346612.6222222222+93206.75555555556*v)*v)*v)*v)*v)*v)*v;        case 8:          return -64.+(-1759.085714285714+(-14890.66666666667+(-59892.62222222222+(-130844.4444444444+(-159470.9333333333+(-101944.8888888889-26630.50158730159*v)*v)*v)*v)*v)*v)*v;        default:          std::cerr << "bad index i = " << i << std::endl;          libmesh_error();        }    case NINTH:      switch (i)        {        case 0:          return -.9999999999999998+(-48.92142857142856+(-711.9080357142856+(-4866.074999999999+(-18264.8671875+(-39858.07499999999+(-50376.17812499999+(-34164.06428571428-9608.643080357141*v)*v)*v)*v)*v)*v)*v)*v;        case 1:          return 25.46071428571428+(523.5267857142855+(4361.464285714284+(19477.96874999999+(51479.92968749998+(83037.65624999997+(80269.73437499997+(42705.08035714284+9608.643080357139*v)*v)*v)*v)*v)*v)*v)*v;        case 2:          return 10.12500000000002+(492.7982142857151+(7119.466071428583+(48200.56875000008+(178735.9921875003+(384187.5562500006+(476636.1468750008+(316017.5946428576+86477.78772321442*v)*v)*v)*v)*v)*v)*v)*v;        case 3:          return -46.28571428571434+(-2237.914285714288+(-32031.73928571432+(-214253.1000000003+(-782604.2812500009+(-1651895.775000002+(-2006189.775000002+(-1298234.442857144-345911.1508928576*v)*v)*v)*v)*v)*v)*v)*v;        case 4:          return 126.+(6038.1+(85360.8375+(562004.325+(2014021.96875+(4158525.825+(4929115.275+(3108929.85+807126.01875*v)*v)*v)*v)*v)*v)*v)*v;        case 5:          return -226.7999999999999+(-10732.49999999999+(-149126.0624999999+(-961004.2499999995+(-3359744.578124998+(-6753729.374999997+(-7788932.156249996+(-4782968.999999998-1210689.028124999*v)*v)*v)*v)*v)*v)*v)*v;        case 6:          return 283.5+(13160.475+(178213.1625+(1113994.0125+(3769397.015624999+(7336100.137499999+(8207441.943749999+(4902543.224999999+1210689.028125*v)*v)*v)*v)*v)*v)*v)*v;        case 7:          return -252.0000000000001+(-11320.2+(-146952.2250000001+(-877643.1000000003+(-2844398.531250001+(-5327696.025000002+(-5766134.850000002+(-3348078.300000001-807126.0187500003*v)*v)*v)*v)*v)*v)*v)*v;        case 8:          return 162.+(6791.271428571428+(81375.92678571428+(453820.725+(1391547.09375+(2493344.025+(2604060.9+(1469054.764285714+345911.1508928571*v)*v)*v)*v)*v)*v)*v)*v;        case 9:          return -81.00000000000004+(-2666.635714285716+(-27608.92232142859+(-139731.0750000001+(-400169.7421875002+(-682015.9500000004+(-685891.0406250004+(-375804.7071428573-86477.78772321433*v)*v)*v)*v)*v)*v)*v)*v;        default:          std::cerr << "bad index i = " << i << std::endl;          libmesh_error();        }    case TENTH:      switch (i)        {        case 0:          return 1.+(56.57936507936509+(969.4940476190478+(7977.072310405645+(37109.37500000001+(104618.0555555556+(182291.6666666667+(191798.9417989418+(111607.1428571429+27557.3192239859*v)*v)*v)*v)*v)*v)*v)*v)*v;        case 1:          return 29.28968253968254+(702.9087301587303+(6952.298280423282+(37664.57231040565+(124291.087962963+(260868.0555555556+(350115.7407407408+(291005.2910052911+(136408.7301587302+27557.3192239859*v)*v)*v)*v)*v)*v)*v)*v)*v;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -