You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

625 lines
20 KiB

#include "other_utils.h"
#include "sha-base-framework/frame.h"
namespace da::sha {
void GetGaussQuadratureCoordinates(int GO, Eigen::VectorXd &GP) {
GP.resize(GO);
switch (GO) {
case 1:
GP(0) = 0.00000000000000e-01;
break;
case 2:
GP(0) = -5.773502691896258e-01;
GP(1) = 5.773502691896258e-01;
break;
case 3:
GP(0) = -7.745966692414834e-01;
GP(1) = 0.000000000000000e-01;
GP(2) = 7.745966692414834e-01;
break;
case 4:
GP(0) = -8.611363115940526e-01;
GP(1) = -3.399810435848563e-01;
GP(2) = 3.399810435848563e-01;
GP(3) = 8.611363115940526e-01;
break;
case 5:
GP(0) = -9.061798459386640e-01;
GP(1) = -5.384693101056831e-01;
GP(2) = 0.000000000000000e-01;
GP(3) = 5.384693101056831e-01;
GP(4) = 9.061798459386640e-01;
break;
case 6:
GP(0) = -9.324695142031520e-01;
GP(1) = -6.612093864662645e-01;
GP(2) = -2.386191860831969e-01;
GP(3) = 2.386191860831969e-01;
GP(4) = 6.612093864662645e-01;
GP(5) = 9.324695142031520e-01;
break;
case 7:
GP(0) = -9.491079123427585e-01;
GP(1) = -7.415311855993944e-01;
GP(2) = -4.058451513773972e-01;
GP(3) = 0.000000000000000e-01;
GP(4) = 4.058451513773972e-01;
GP(5) = 7.415311855993944e-01;
GP(6) = 9.491079123427585e-01;
break;
case 8:
GP(0) = -9.602898564975362e-01;
GP(1) = -7.966664774136267e-01;
GP(2) = -5.255324099163290e-01;
GP(3) = -1.834346424956498e-01;
GP(4) = 1.834346424956498e-01;
GP(5) = 5.255324099163290e-01;
GP(6) = 7.966664774136267e-01;
GP(7) = 9.602898564975362e-01;
break;
case 9:
GP(0) = -9.681602395076261e-01;
GP(1) = -8.360311073266358e-01;
GP(2) = -6.133714327005904e-01;
GP(3) = -3.242534234038089e-01;
GP(4) = 0.000000000000000e-01;
GP(5) = 3.242534234038089e-01;
GP(6) = 6.133714327005904e-01;
GP(7) = 8.360311073266358e-01;
GP(8) = 9.681602395076261e-01;
break;
case 10:
GP(0) = -9.739065285171717e-01;
GP(1) = -8.650633666889845e-01;
GP(2) = -6.794095682990244e-01;
GP(3) = -4.333953941292472e-01;
GP(4) = -1.488743389816312e-01;
GP(5) = 1.488743389816312e-01;
GP(6) = 4.333953941292472e-01;
GP(7) = 6.794095682990244e-01;
GP(8) = 8.650633666889845e-01;
GP(9) = 9.739065285171717e-01;
break;
case 11:
GP(0) = -9.782286581460570e-01;
GP(1) = -8.870625997680953e-01;
GP(2) = -7.301520055740493e-01;
GP(3) = -5.190961292068118e-01;
GP(4) = -2.695431559523450e-01;
GP(5) = 0.000000000000000e-01;
GP(6) = 2.695431559523450e-01;
GP(7) = 5.190961292068118e-01;
GP(8) = 7.301520055740493e-01;
GP(9) = 8.870625997680953e-01;
GP(10) = 9.782286581460570e-01;
break;
case 12:
GP(0) = -9.815606342467193e-01;
GP(1) = -9.041172563704749e-01;
GP(2) = -7.699026741943047e-01;
GP(3) = -5.873179542866174e-01;
GP(4) = -3.678314989981802e-01;
GP(5) = -1.252334085114689e-01;
GP(6) = 1.252334085114689e-01;
GP(7) = 3.678314989981802e-01;
GP(8) = 5.873179542866174e-01;
GP(9) = 7.699026741943047e-01;
GP(10) = 9.041172563704749e-01;
GP(11) = 9.815606342467193e-01;
break;
case 14:
GP(0) = -9.862838086968123e-01;
GP(1) = -9.284348836635735e-01;
GP(2) = -8.272013150697650e-01;
GP(3) = -6.872929048116855e-01;
GP(4) = -5.152486363581541e-01;
GP(5) = -3.191123689278898e-01;
GP(6) = -1.080549487073437e-01;
GP(7) = 1.080549487073437e-01;
GP(8) = 3.191123689278898e-01;
GP(9) = 5.152486363581541e-01;
GP(10) = 6.872929048116855e-01;
GP(11) = 8.272013150697650e-01;
GP(12) = 9.284348836635735e-01;
GP(13) = 9.862838086968123e-01;
break;
case 16:
GP(0) = -9.894009349916499e-01;
GP(1) = -9.445750230732326e-01;
GP(2) = -8.656312023878317e-01;
GP(3) = -7.554044083550030e-01;
GP(4) = -6.178762444026437e-01;
GP(5) = -4.580167776572274e-01;
GP(6) = -2.816035507792589e-01;
GP(7) = -9.501250983763744e-02;
GP(8) = 9.501250983763744e-02;
GP(9) = 2.816035507792589e-01;
GP(10) = 4.580167776572274e-01;
GP(11) = 6.178762444026437e-01;
GP(12) = 7.554044083550030e-01;
GP(13) = 8.656312023878317e-01;
GP(14) = 9.445750230732326e-01;
GP(15) = 9.894009349916499e-01;
break;
case 21:
GP(0) = -9.937521706203895e-01;
GP(1) = -9.672268385663063e-01;
GP(2) = -9.200993341504008e-01;
GP(3) = -8.533633645833173e-01;
GP(4) = -7.684399634756779e-01;
GP(5) = -6.671388041974123e-01;
GP(6) = -5.516188358872198e-01;
GP(7) = -4.243421202074388e-01;
GP(8) = -2.880213168024011e-01;
GP(9) = -1.455618541608951e-01;
GP(10) = 0.000000000000000e-01;
GP(11) = 1.455618541608951e-01;
GP(12) = 2.880213168024011e-01;
GP(13) = 4.243421202074388e-01;
GP(14) = 5.516188358872198e-01;
GP(15) = 6.671388041974123e-01;
GP(16) = 7.684399634756779e-01;
GP(17) = 8.533633645833173e-01;
GP(18) = 9.200993341504008e-01;
GP(19) = 9.672268385663063e-01;
GP(20) = 9.937521706203895e-01;
break;
case 30:
GP(0) = -9.968934840746495e-01;
GP(1) = -9.836681232797472e-01;
GP(2) = -9.600218649683075e-01;
GP(3) = -9.262000474292743e-01;
GP(4) = -8.825605357920527e-01;
GP(5) = -8.295657623827684e-01;
GP(6) = -7.677774321048262e-01;
GP(7) = -6.978504947933158e-01;
GP(8) = -6.205261829892429e-01;
GP(9) = -5.366241481420199e-01;
GP(10) = -4.470337695380892e-01;
GP(11) = -3.527047255308781e-01;
GP(12) = -2.546369261678898e-01;
GP(13) = -1.538699136085835e-01;
GP(14) = -5.147184255531770e-02;
GP(15) = 5.147184255531770e-02;
GP(16) = 1.538699136085835e-01;
GP(17) = 2.546369261678898e-01;
GP(18) = 3.527047255308781e-01;
GP(19) = 4.470337695380892e-01;
GP(20) = 5.366241481420199e-01;
GP(21) = 6.205261829892429e-01;
GP(22) = 6.978504947933158e-01;
GP(23) = 7.677774321048262e-01;
GP(24) = 8.295657623827684e-01;
GP(25) = 8.825605357920527e-01;
GP(26) = 9.262000474292743e-01;
GP(27) = 9.600218649683075e-01;
GP(28) = 9.836681232797472e-01;
GP(29) = 9.968934840746495e-01;
break;
case 40:
GP(0) = -9.982377097105592e-01;
GP(1) = -9.907262386994570e-01;
GP(2) = -9.772599499837743e-01;
GP(3) = -9.579168192137917e-01;
GP(4) = -9.328128082786765e-01;
GP(5) = -9.020988069688743e-01;
GP(6) = -8.659595032122595e-01;
GP(7) = -8.246122308333117e-01;
GP(8) = -7.783056514265194e-01;
GP(9) = -7.273182551899271e-01;
GP(10) = -6.719566846141795e-01;
GP(11) = -6.125538896679802e-01;
GP(12) = -5.494671250951282e-01;
GP(13) = -4.830758016861787e-01;
GP(14) = -4.137792043716050e-01;
GP(15) = -3.419940908257585e-01;
GP(16) = -2.681521850072537e-01;
GP(17) = -1.926975807013711e-01;
GP(18) = -1.160840706752552e-01;
GP(19) = -3.877241750605082e-02;
GP(20) = 3.877241750605082e-02;
GP(21) = 1.160840706752552e-01;
GP(22) = 1.926975807013711e-01;
GP(23) = 2.681521850072537e-01;
GP(24) = 3.419940908257585e-01;
GP(25) = 4.137792043716050e-01;
GP(26) = 4.830758016861787e-01;
GP(27) = 5.494671250951282e-01;
GP(28) = 6.125538896679802e-01;
GP(29) = 6.719566846141795e-01;
GP(30) = 7.273182551899271e-01;
GP(31) = 7.783056514265194e-01;
GP(32) = 8.246122308333117e-01;
GP(33) = 8.659595032122595e-01;
GP(34) = 9.020988069688743e-01;
GP(35) = 9.328128082786765e-01;
GP(36) = 9.579168192137917e-01;
GP(37) = 9.772599499837743e-01;
GP(38) = 9.907262386994570e-01;
GP(39) = 9.982377097105592e-01;
break;
case 50:
GP(0) = -9.988664044200711e-01;
GP(1) = -9.940319694320907e-01;
GP(2) = -9.853540840480059e-01;
GP(3) = -9.728643851066921e-01;
GP(4) = -9.566109552428079e-01;
GP(5) = -9.366566189448779e-01;
GP(6) = -9.130785566557919e-01;
GP(7) = -8.859679795236130e-01;
GP(8) = -8.554297694299461e-01;
GP(9) = -8.215820708593359e-01;
GP(10) = -7.845558329003993e-01;
GP(11) = -7.444943022260685e-01;
GP(12) = -7.015524687068223e-01;
GP(13) = -6.558964656854394e-01;
GP(14) = -6.077029271849502e-01;
GP(15) = -5.571583045146501e-01;
GP(16) = -5.044581449074642e-01;
GP(17) = -4.498063349740388e-01;
GP(18) = -3.934143118975651e-01;
GP(19) = -3.355002454194374e-01;
GP(20) = -2.762881937795320e-01;
GP(21) = -2.160072368760418e-01;
GP(22) = -1.548905899981459e-01;
GP(23) = -9.317470156008614e-02;
GP(24) = -3.109833832718888e-02;
GP(25) = 3.109833832718888e-02;
GP(26) = 9.317470156008614e-02;
GP(27) = 1.548905899981459e-01;
GP(28) = 2.160072368760418e-01;
GP(29) = 2.762881937795320e-01;
GP(30) = 3.355002454194374e-01;
GP(31) = 3.934143118975651e-01;
GP(32) = 4.498063349740388e-01;
GP(33) = 5.044581449074642e-01;
GP(34) = 5.571583045146501e-01;
GP(35) = 6.077029271849502e-01;
GP(36) = 6.558964656854394e-01;
GP(37) = 7.015524687068223e-01;
GP(38) = 7.444943022260685e-01;
GP(39) = 7.845558329003993e-01;
GP(40) = 8.215820708593359e-01;
GP(41) = 8.554297694299461e-01;
GP(42) = 8.859679795236130e-01;
GP(43) = 9.130785566557919e-01;
GP(44) = 9.366566189448779e-01;
GP(45) = 9.566109552428079e-01;
GP(46) = 9.728643851066921e-01;
GP(47) = 9.853540840480059e-01;
GP(48) = 9.940319694320907e-01;
GP(49) = 9.988664044200711e-01;
break;
}
}
void GetGaussQuadratureWeights(int GO, Eigen::VectorXd &w) {
w.resize(GO);
switch (GO) {
case 1:
w(0) = 2.000000000000000e+00;
break;
case 2:
w(0) = 1.000000000000000e+00;
w(1) = 1.000000000000000e+00;
break;
case 3:
w(0) = 5.555555555555556e-01;
w(1) = 8.888888888888889e-01;
w(2) = 5.555555555555556e-01;
break;
case 4:
w(0) = 3.478548451374539e-01;
w(1) = 6.521451548625461e-01;
w(2) = 6.521451548625461e-01;
w(3) = 3.478548451374539e-01;
break;
case 5:
w(0) = 2.369268850561891e-01;
w(1) = 4.786286704993665e-01;
w(2) = 5.688888888888889e-01;
w(3) = 4.786286704993665e-01;
w(4) = 2.369268850561891e-01;
break;
case 6:
w(0) = 1.713244923791703e-01;
w(1) = 3.607615730481386e-01;
w(2) = 4.679139345726910e-01;
w(3) = 4.679139345726910e-01;
w(4) = 3.607615730481386e-01;
w(5) = 1.713244923791703e-01;
break;
case 7:
w(0) = 1.294849661688697e-01;
w(1) = 2.797053914892767e-01;
w(2) = 3.818300505051189e-01;
w(3) = 4.179591836734694e-01;
w(4) = 3.818300505051189e-01;
w(5) = 2.797053914892767e-01;
w(6) = 1.294849661688697e-01;
break;
case 8:
w(0) = 1.012285362903763e-01;
w(1) = 2.223810344533745e-01;
w(2) = 3.137066458778873e-01;
w(3) = 3.626837833783620e-01;
w(4) = 3.626837833783620e-01;
w(5) = 3.137066458778873e-01;
w(6) = 2.223810344533745e-01;
w(7) = 1.012285362903763e-01;
break;
case 9:
w(0) = 8.127438836157441e-02;
w(1) = 1.806481606948574e-01;
w(2) = 2.606106964029355e-01;
w(3) = 3.123470770400028e-01;
w(4) = 3.302393550012598e-01;
w(5) = 3.123470770400028e-01;
w(6) = 2.606106964029355e-01;
w(7) = 1.806481606948574e-01;
w(8) = 8.127438836157441e-02;
break;
case 10:
w(0) = 6.667134430868814e-02;
w(1) = 1.494513491505806e-01;
w(2) = 2.190863625159820e-01;
w(3) = 2.692667193099964e-01;
w(4) = 2.955242247147529e-01;
w(5) = 2.955242247147529e-01;
w(6) = 2.692667193099964e-01;
w(7) = 2.190863625159820e-01;
w(8) = 1.494513491505806e-01;
w(9) = 6.667134430868814e-02;
break;
case 11:
w(0) = 5.566856711617367e-02;
w(1) = 1.255803694649046e-01;
w(2) = 1.862902109277343e-01;
w(3) = 2.331937645919905e-01;
w(4) = 2.628045445102467e-01;
w(5) = 2.729250867779006e-01;
w(6) = 2.628045445102467e-01;
w(7) = 2.331937645919905e-01;
w(8) = 1.862902109277343e-01;
w(9) = 1.255803694649046e-01;
w(10) = 5.566856711617367e-02;
break;
case 12:
w(0) = 4.717533638651183e-02;
w(1) = 1.069393259953184e-01;
w(2) = 1.600783285433462e-01;
w(3) = 2.031674267230659e-01;
w(4) = 2.334925365383548e-01;
w(5) = 2.491470458134028e-01;
w(6) = 2.491470458134028e-01;
w(7) = 2.334925365383548e-01;
w(8) = 2.031674267230659e-01;
w(9) = 1.600783285433462e-01;
w(10) = 1.069393259953184e-01;
w(11) = 4.717533638651183e-02;
break;
case 14:
w(0) = 3.511946033175186e-02;
w(1) = 8.015808715976021e-02;
w(2) = 1.215185706879032e-01;
w(3) = 1.572031671581935e-01;
w(4) = 1.855383974779378e-01;
w(5) = 2.051984637212956e-01;
w(6) = 2.152638534631578e-01;
w(7) = 2.152638534631578e-01;
w(8) = 2.051984637212956e-01;
w(9) = 1.855383974779378e-01;
w(10) = 1.572031671581935e-01;
w(11) = 1.215185706879032e-01;
w(12) = 8.015808715976021e-02;
w(13) = 3.511946033175186e-02;
break;
case 16:
w(0) = 2.715245941175409e-02;
w(1) = 6.225352393864789e-02;
w(2) = 9.515851168249278e-02;
w(3) = 1.246289712555339e-01;
w(4) = 1.495959888165767e-01;
w(5) = 1.691565193950025e-01;
w(6) = 1.826034150449236e-01;
w(7) = 1.894506104550685e-01;
w(8) = 1.894506104550685e-01;
w(9) = 1.826034150449236e-01;
w(10) = 1.691565193950025e-01;
w(11) = 1.495959888165767e-01;
w(12) = 1.246289712555339e-01;
w(13) = 9.515851168249278e-02;
w(14) = 6.225352393864789e-02;
w(15) = 2.715245941175409e-02;
break;
case 21:
w(0) = 1.601722825777433e-02;
w(1) = 3.695378977085249e-02;
w(2) = 5.713442542685721e-02;
w(3) = 7.610011362837930e-02;
w(4) = 9.344442345603386e-02;
w(5) = 1.087972991671484e-01;
w(6) = 1.218314160537285e-01;
w(7) = 1.322689386333375e-01;
w(8) = 1.398873947910732e-01;
w(9) = 1.445244039899701e-01;
w(10) = 1.460811336496904e-01;
w(11) = 1.445244039899701e-01;
w(12) = 1.398873947910732e-01;
w(13) = 1.322689386333375e-01;
w(14) = 1.218314160537285e-01;
w(15) = 1.087972991671484e-01;
w(16) = 9.344442345603386e-02;
w(17) = 7.610011362837930e-02;
w(18) = 5.713442542685721e-02;
w(19) = 3.695378977085249e-02;
w(20) = 1.601722825777433e-02;
break;
case 30:
w(0) = 7.968192496166606e-03;
w(1) = 1.846646831109096e-02;
w(2) = 2.878470788332337e-02;
w(3) = 3.879919256962705e-02;
w(4) = 4.840267283059405e-02;
w(5) = 5.749315621761907e-02;
w(6) = 6.597422988218050e-02;
w(7) = 7.375597473770521e-02;
w(8) = 8.075589522942022e-02;
w(9) = 8.689978720108298e-02;
w(10) = 9.212252223778613e-02;
w(11) = 9.636873717464426e-02;
w(12) = 9.959342058679527e-02;
w(13) = 1.017623897484055e-01;
w(14) = 1.028526528935588e-01;
w(15) = 1.028526528935588e-01;
w(16) = 1.017623897484055e-01;
w(17) = 9.959342058679527e-02;
w(18) = 9.636873717464426e-02;
w(19) = 9.212252223778613e-02;
w(20) = 8.689978720108298e-02;
w(21) = 8.075589522942022e-02;
w(22) = 7.375597473770521e-02;
w(23) = 6.597422988218050e-02;
w(24) = 5.749315621761907e-02;
w(25) = 4.840267283059405e-02;
w(26) = 3.879919256962705e-02;
w(27) = 2.878470788332337e-02;
w(28) = 1.846646831109096e-02;
w(29) = 7.968192496166606e-03;
break;
case 40:
w(0) = 4.521277098533191e-03;
w(1) = 1.049828453115281e-02;
w(2) = 1.642105838190789e-02;
w(3) = 2.224584919416696e-02;
w(4) = 2.793700698002340e-02;
w(5) = 3.346019528254785e-02;
w(6) = 3.878216797447202e-02;
w(7) = 4.387090818567327e-02;
w(8) = 4.869580763507223e-02;
w(9) = 5.322784698393682e-02;
w(10) = 5.743976909939155e-02;
w(11) = 6.130624249292894e-02;
w(12) = 6.480401345660104e-02;
w(13) = 6.791204581523390e-02;
w(14) = 7.061164739128678e-02;
w(15) = 7.288658239580406e-02;
w(16) = 7.472316905796826e-02;
w(17) = 7.611036190062624e-02;
w(18) = 7.703981816424797e-02;
w(19) = 7.750594797842481e-02;
w(20) = 7.750594797842481e-02;
w(21) = 7.703981816424797e-02;
w(22) = 7.611036190062624e-02;
w(23) = 7.472316905796826e-02;
w(24) = 7.288658239580406e-02;
w(25) = 7.061164739128678e-02;
w(26) = 6.791204581523390e-02;
w(27) = 6.480401345660104e-02;
w(28) = 6.130624249292894e-02;
w(29) = 5.743976909939155e-02;
w(30) = 5.322784698393682e-02;
w(31) = 4.869580763507223e-02;
w(32) = 4.387090818567327e-02;
w(33) = 3.878216797447202e-02;
w(34) = 3.346019528254785e-02;
w(35) = 2.793700698002340e-02;
w(36) = 2.224584919416696e-02;
w(37) = 1.642105838190789e-02;
w(38) = 1.049828453115281e-02;
w(39) = 4.521277098533191e-03;
break;
case 50:
w(0) = 2.908622553155141e-03;
w(1) = 6.759799195745402e-03;
w(2) = 1.059054838365097e-02;
w(3) = 1.438082276148557e-02;
w(4) = 1.811556071348939e-02;
w(5) = 2.178024317012479e-02;
w(6) = 2.536067357001239e-02;
w(7) = 2.884299358053520e-02;
w(8) = 3.221372822357802e-02;
w(9) = 3.545983561514615e-02;
w(10) = 3.856875661258768e-02;
w(11) = 4.152846309014770e-02;
w(12) = 4.432750433880328e-02;
w(13) = 4.695505130394843e-02;
w(14) = 4.940093844946631e-02;
w(15) = 5.165570306958114e-02;
w(16) = 5.371062188899625e-02;
w(17) = 5.555774480621252e-02;
w(18) = 5.718992564772838e-02;
w(19) = 5.860084981322245e-02;
w(20) = 5.978505870426546e-02;
w(21) = 6.073797084177022e-02;
w(22) = 6.145589959031666e-02;
w(23) = 6.193606742068324e-02;
w(24) = 6.217661665534726e-02;
w(25) = 6.217661665534726e-02;
w(26) = 6.193606742068324e-02;
w(27) = 6.145589959031666e-02;
w(28) = 6.073797084177022e-02;
w(29) = 5.978505870426546e-02;
w(30) = 5.860084981322245e-02;
w(31) = 5.718992564772838e-02;
w(32) = 5.555774480621252e-02;
w(33) = 5.371062188899625e-02;
w(34) = 5.165570306958114e-02;
w(35) = 4.940093844946631e-02;
w(36) = 4.695505130394843e-02;
w(37) = 4.432750433880328e-02;
w(38) = 4.152846309014770e-02;
w(39) = 3.856875661258768e-02;
w(40) = 3.545983561514615e-02;
w(41) = 3.221372822357802e-02;
w(42) = 2.884299358053520e-02;
w(43) = 2.536067357001239e-02;
w(44) = 2.178024317012479e-02;
w(45) = 1.811556071348939e-02;
w(46) = 1.438082276148557e-02;
w(47) = 1.059054838365097e-02;
w(48) = 6.759799195745402e-03;
w(49) = 2.908622553155141e-03;
break;
}
}
} // namespace da::sha