Skip to content

Commit 1398ddb

Browse files
committed
Merge branch 'main' of github.com:quadraturerules/QuadratureRulesDotOrg.jl
2 parents c3d3f15 + de256bd commit 1398ddb

File tree

9 files changed

+500
-1
lines changed

9 files changed

+500
-1
lines changed

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name = "QuadratureRulesDotOrg"
22
uuid = "3da39775-d94e-428b-a709-24e9ab7fe27d"
33
authors = ["Matthew Scroggs"]
4-
version = "1.0.0-DEV"
4+
version = "0.7.3"
55

66
[compat]
77
julia = "1.6.7"

src/centroid_quadrature.jl

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
function centroid_quadrature(
2+
domain::Domain,
3+
order::Integer,
4+
)
5+
if domain == Domain_Interval && order == 1
6+
return [[0.5, 0.5]], [1.0]
7+
end
8+
if domain == Domain_Quadrilateral && order == 1
9+
return [[0.25, 0.25, 0.25, 0.25]], [1.0]
10+
end
11+
if domain == Domain_Triangle && order == 1
12+
return [[0.3333333333333333, 0.3333333333333333, 0.3333333333333333]], [1.0]
13+
end
14+
if domain == Domain_Hexahedron && order == 1
15+
return [[0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.125]], [1.0]
16+
end
17+
if domain == Domain_Tetrahedron && order == 1
18+
return [[0.25, 0.25, 0.25, 0.25]], [1.0]
19+
end
20+
if domain == Domain_SquareBasedPyramid && order == 1
21+
return [[0.2, 0.2, 0.2, 0.2, 0.2]], [1.0]
22+
end
23+
if domain == Domain_TriangularPrism && order == 1
24+
return [[0.16666666666666666, 0.16666666666666666, 0.16666666666666666, 0.16666666666666666, 0.16666666666666666, 0.16666666666666666]], [1.0]
25+
end
26+
throw("Invalid domain or order: ($domain, $order)")
27+
end
28+
29+
export centroid_quadrature

src/domains.jl

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
@enum Domain begin
2+
Domain_Interval = 0
3+
Domain_Quadrilateral = 1
4+
Domain_EdgeAdjacentQuadrilaterals = 2
5+
Domain_VertexAdjacentQuadrilaterals = 3
6+
Domain_Triangle = 4
7+
Domain_EdgeAdjacentTriangleAndQuadrilateral = 5
8+
Domain_VertexAdjacentTriangleAndQuadrilateral = 6
9+
Domain_EdgeAdjacentTriangles = 7
10+
Domain_VertexAdjacentTriangles = 8
11+
Domain_Hexahedron = 9
12+
Domain_Tetrahedron = 10
13+
Domain_SquareBasedPyramid = 11
14+
Domain_TriangularPrism = 12
15+
end
16+
17+
export Domain

src/gauss_legendre.jl

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
function gauss_legendre(
2+
domain::Domain,
3+
order::Integer,
4+
)
5+
if domain == Domain_Interval && order == 1
6+
return [[0.5, 0.5]], [1.0]
7+
end
8+
if domain == Domain_Interval && order == 2
9+
return [[0.7886751345948129, 0.21132486540518713] [0.21132486540518713, 0.7886751345948129]], [0.5, 0.5]
10+
end
11+
if domain == Domain_Interval && order == 3
12+
return [[0.8872983346207417, 0.1127016653792583] [0.1127016653792583, 0.8872983346207417] [0.5, 0.5]], [0.2777777777777777, 0.2777777777777777, 0.4444444444444444]
13+
end
14+
if domain == Domain_Interval && order == 4
15+
return [[0.9305681557970262, 0.06943184420297371] [0.33000947820757187, 0.6699905217924281] [0.06943184420297377, 0.9305681557970262] [0.6699905217924281, 0.33000947820757187]], [0.17392742256872684, 0.326072577431273, 0.17392742256872684, 0.3260725774312731]
16+
end
17+
if domain == Domain_Interval && order == 5
18+
return [[0.9530899229693319, 0.04691007703066802] [0.5, 0.5] [0.2307653449471585, 0.7692346550528415] [0.046910077030668074, 0.9530899229693319] [0.7692346550528415, 0.23076534494715845]], [0.11846344252809456, 0.2844444444444444, 0.23931433524968332, 0.11846344252809456, 0.23931433524968332]
19+
end
20+
if domain == Domain_Interval && order == 6
21+
return [[0.966234757101576, 0.033765242898423975] [0.6193095930415985, 0.3806904069584015] [0.3806904069584015, 0.6193095930415985] [0.16939530676686765, 0.8306046932331324] [0.033765242898423975, 0.966234757101576] [0.8306046932331324, 0.1693953067668677]], [0.08566224618958498, 0.23395696728634563, 0.2339569672863455, 0.1803807865240693, 0.08566224618958498, 0.1803807865240693]
22+
end
23+
if domain == Domain_Interval && order == 7
24+
return [[0.9745539561713793, 0.0254460438286207] [0.7029225756886985, 0.2970774243113014] [0.5, 0.5] [0.29707742431130146, 0.7029225756886985] [0.12923440720030277, 0.8707655927996972] [0.025446043828620812, 0.9745539561713792] [0.8707655927996972, 0.12923440720030277]], [0.06474248308443456, 0.19091502525255943, 0.2089795918367347, 0.19091502525255952, 0.13985269574463832, 0.06474248308443487, 0.13985269574463832]
25+
end
26+
if domain == Domain_Interval && order == 8
27+
return [[0.9801449282487682, 0.019855071751231856] [0.7627662049581646, 0.2372337950418354] [0.5917173212478248, 0.4082826787521751] [0.40828267875217517, 0.5917173212478248] [0.2372337950418355, 0.7627662049581645] [0.10166676129318664, 0.8983332387068134] [0.019855071751231912, 0.9801449282487681] [0.8983332387068134, 0.10166676129318664]], [0.05061426814518795, 0.1568533229389436, 0.18134189168918097, 0.18134189168918097, 0.15685332293894366, 0.11119051722668723, 0.05061426814518814, 0.11119051722668723]
28+
end
29+
if domain == Domain_Interval && order == 9
30+
return [[0.984080119753813, 0.015919880246186957] [0.8066857163502952, 0.19331428364970482] [0.6621267117019045, 0.33787328829809554] [0.5, 0.5] [0.3378732882980957, 0.6621267117019043] [0.19331428364970482, 0.8066857163502952] [0.08198444633668212, 0.9180155536633179] [0.015919880246186957, 0.984080119753813] [0.9180155536633179, 0.08198444633668212]], [0.04063719418078724, 0.13030534820146775, 0.15617353852000143, 0.1651196775006299, 0.15617353852000154, 0.13030534820146775, 0.09032408034742866, 0.04063719418078724, 0.09032408034742866]
31+
end
32+
if domain == Domain_Interval && order == 10
33+
return [[0.9869532642585859, 0.013046735741414128] [0.8397047841495122, 0.16029521585048778] [0.7166976970646236, 0.2833023029353764] [0.5744371694908156, 0.4255628305091844] [0.4255628305091844, 0.5744371694908156] [0.2833023029353766, 0.7166976970646234] [0.16029521585048778, 0.8397047841495122] [0.06746831665550768, 0.9325316833444923] [0.013046735741414128, 0.9869532642585859] [0.9325316833444922, 0.06746831665550779]], [0.03333567215434398, 0.10954318125799108, 0.1346333596549982, 0.14776211235737646, 0.14776211235737646, 0.13463335965499829, 0.10954318125799108, 0.07472567457529028, 0.03333567215434398, 0.07472567457529036]
34+
end
35+
if domain == Domain_Interval && order == 11
36+
return [[0.9891143290730284, 0.010885670926971514] [0.8650760027870247, 0.13492399721297532] [0.7595480646034058, 0.2404519353965941] [0.6347715779761725, 0.36522842202382755] [0.5, 0.5] [0.36522842202382755, 0.6347715779761725] [0.24045193539659437, 0.7595480646034056] [0.13492399721297532, 0.8650760027870247] [0.056468700115952286, 0.9435312998840477] [0.010885670926971569, 0.9891143290730284] [0.9435312998840477, 0.05646870011595234]], [0.02783428355808692, 0.09314510546386703, 0.1165968822959953, 0.13140227225512338, 0.1364625433889503, 0.13140227225512338, 0.11659688229599534, 0.09314510546386703, 0.06279018473245228, 0.02783428355808692, 0.06279018473245228]
37+
end
38+
if domain == Domain_Interval && order == 12
39+
return [[0.9907803171233596, 0.009219682876640378] [0.8849513370971523, 0.11504866290284765] [0.7936589771433087, 0.20634102285669126] [0.6839157494990901, 0.31608425050090994] [0.5626167042557344, 0.43738329574426554] [0.4373832957442656, 0.5626167042557344] [0.31608425050090994, 0.6839157494990901] [0.20634102285669154, 0.7936589771433085] [0.11504866290284765, 0.8849513370971523] [0.047941371814762546, 0.9520586281852375] [0.009219682876640434, 0.9907803171233596] [0.9520586281852375, 0.0479413718147626]], [0.023587668193255917, 0.08003916427167307, 0.10158371336153296, 0.11674626826917739, 0.12457352290670137, 0.12457352290670137, 0.11674626826917739, 0.10158371336153309, 0.08003916427167307, 0.05346966299765918, 0.023587668193255917, 0.05346966299765923]
40+
end
41+
if domain == Domain_Interval && order == 13
42+
return [[0.9920915273592941, 0.007908472640705932] [0.9007890453666549, 0.09921095463334506] [0.8211746697201701, 0.17882533027982989] [0.7242463755182234, 0.2757536244817766] [0.6152291579775674, 0.3847708420224326] [0.5, 0.5] [0.3847708420224326, 0.6152291579775674] [0.27575362448177654, 0.7242463755182235] [0.17882533027983016, 0.8211746697201698] [0.09921095463334506, 0.9007890453666549] [0.04120080038851104, 0.958799199611489] [0.007908472640705932, 0.9920915273592941] [0.958799199611489, 0.04120080038851104]], [0.020242002382657956, 0.06943675510989362, 0.08907299038097291, 0.10390802376844428, 0.11314159013144862, 0.11627577661543695, 0.11314159013144862, 0.10390802376844421, 0.08907299038097297, 0.06943675510989362, 0.04606074991886425, 0.020242002382657956, 0.04606074991886425]
43+
end
44+
if domain == Domain_Interval && order == 14
45+
return [[0.9931419043484062, 0.006858095651593843] [0.9136006575348825, 0.08639934246511749] [0.8436464524058427, 0.15635354759415726] [0.757624318179077, 0.24237568182092295] [0.6595561844639448, 0.3404438155360551] [0.5540274743536718, 0.44597252564632817] [0.44597252564632817, 0.5540274743536718] [0.34044381553605507, 0.6595561844639449] [0.24237568182092295, 0.757624318179077] [0.15635354759415754, 0.8436464524058425] [0.08639934246511749, 0.9136006575348825] [0.035782558168213185, 0.9642174418317868] [0.006858095651593787, 0.9931419043484062] [0.9642174418317868, 0.03578255816821324]], [0.017559730165875875, 0.060759285343951634, 0.07860158357909677, 0.09276919873896884, 0.10259923186064782, 0.10763192673157887, 0.10763192673157883, 0.1025992318606478, 0.09276919873896884, 0.07860158357909694, 0.060759285343951634, 0.04007904357988007, 0.017559730165875875, 0.04007904357988007]
46+
end
47+
if domain == Domain_Interval && order == 15
48+
return [[0.9939962590102427, 0.006003740989757256] [0.9241032917052137, 0.0758967082947864] [0.862208865680085, 0.13779113431991497] [0.7854860863042694, 0.21451391369573058] [0.6970756735387817, 0.3029243264612183] [0.6005970469987172, 0.39940295300128276] [0.5, 0.5] [0.3994029530012827, 0.6005970469987173] [0.30292432646121825, 0.6970756735387817] [0.21451391369573058, 0.7854860863042694] [0.1377911343199152, 0.8622088656800848] [0.07589670829478634, 0.9241032917052137] [0.031363303799647024, 0.968636696200353] [0.006003740989757311, 0.9939962590102427] [0.968636696200353, 0.03136330379964708]], [0.015376620998058489, 0.05357961023358595, 0.06978533896307716, 0.08313460290849697, 0.09308050000778108, 0.0992157426635558, 0.10128912096278064, 0.0992157426635558, 0.09308050000778108, 0.08313460290849697, 0.06978533896307727, 0.05357961023358595, 0.03518302374405393, 0.015376620998058489, 0.035183023744054055]
49+
end
50+
if domain == Domain_Interval && order == 16
51+
return [[0.994700467495825, 0.005299532504175031] [0.9328156011939159, 0.06718439880608412] [0.8777022041775016, 0.1222977958224985] [0.8089381222013219, 0.19106187779867811] [0.7290083888286136, 0.2709916111713863] [0.6408017753896295, 0.35919822461037054] [0.5475062549188188, 0.4524937450811813] [0.45249374508118123, 0.5475062549188188] [0.35919822461037054, 0.6408017753896295] [0.27099161117138626, 0.7290083888286137] [0.19106187779867811, 0.8089381222013219] [0.12229779582249867, 0.8777022041775013] [0.06718439880608407, 0.9328156011939159] [0.0277124884633837, 0.9722875115366163] [0.005299532504175031, 0.994700467495825] [0.9722875115366163, 0.027712488463383755]], [0.013576229705877102, 0.04757925584124639, 0.062314485627766945, 0.07479799440828835, 0.08457825969750127, 0.09130170752246179, 0.09472530522753428, 0.09472530522753428, 0.09130170752246179, 0.0845782596975013, 0.07479799440828835, 0.06231448562776706, 0.04757925584124639, 0.031126761969323912, 0.013576229705877102, 0.03112676196932399]
52+
end
53+
if domain == Domain_Interval && order == 17
54+
return [[0.9952877376572087, 0.004712262342791318] [0.9401195768634929, 0.059880423136507044] [0.8907570019484007, 0.10924299805159932] [0.8288355796083453, 0.17116442039165464] [0.7563452685432385, 0.24365473145676153] [0.6756158817269382, 0.32438411827306185] [0.5892420907479239, 0.41075790925207606] [0.5, 0.5] [0.4107579092520761, 0.5892420907479239] [0.3243841182730618, 0.6756158817269382] [0.24365473145676153, 0.7563452685432385] [0.1711644203916547, 0.8288355796083453] [0.10924299805159954, 0.8907570019484005] [0.0598804231365071, 0.9401195768634929] [0.024662239115616158, 0.9753377608843838] [0.004712262342791318, 0.9952877376572087] [0.9753377608843838, 0.024662239115616158]], [0.012074151434273955, 0.04251807415858961, 0.05594192359670195, 0.06756818423426275, 0.07702288053840516, 0.084002051078225, 0.08828135268349632, 0.08972323517810327, 0.08828135268349632, 0.084002051078225, 0.07702288053840516, 0.06756818423426275, 0.05594192359670211, 0.04251807415858961, 0.027729764686993556, 0.012074151434273955, 0.02772976468699366]
55+
end
56+
if domain == Domain_Interval && order == 18
57+
return [[0.9957825842104655, 0.004217415789534551] [0.9463012332487779, 0.05369876675122215] [0.9018524794862616, 0.09814752051373843] [0.8458435215301766, 0.1541564784698234] [0.7798854155369738, 0.22011458446302623] [0.7058755807314213, 0.2941244192685787] [0.6259431128457528, 0.37405688715424723] [0.5423875065208676, 0.45761249347913235] [0.45761249347913235, 0.5423875065208676] [0.37405688715424723, 0.6259431128457528] [0.2941244192685787, 0.7058755807314213] [0.22011458446302623, 0.7798854155369738] [0.1541564784698234, 0.8458435215301766] [0.09814752051373865, 0.9018524794862613] [0.05369876675122209, 0.9463012332487779] [0.0220880252143012, 0.9779119747856988] [0.0042174157895344955, 0.9957825842104655] [0.9779119747856988, 0.022088025214301144]], [0.010808006763241689, 0.03821286512744452, 0.05047102205314358, 0.06127760335573925, 0.07032145733532535, 0.07734233756313257, 0.0821382418729164, 0.08457119148157179, 0.08457119148157179, 0.0821382418729164, 0.07734233756313257, 0.07032145733532535, 0.06127760335573925, 0.0504710220531437, 0.03821286512744452, 0.024857274447484857, 0.010808006763241689, 0.024857274447484857]
58+
end
59+
if domain == Domain_Interval && order == 19
60+
return [[0.9962034219217921, 0.003796578078207824] [0.951577951807409, 0.04842204819259105] [0.9113573282685714, 0.08864267173142859] [0.8604830886676147, 0.1395169113323853] [0.8002726523308406, 0.1997273476691595] [0.7322853706879805, 0.2677146293120195] [0.6582820499818149, 0.34171795001818506] [0.5801793228201126, 0.4198206771798873] [0.5, 0.5] [0.41982067717988736, 0.5801793228201126] [0.34171795001818506, 0.6582820499818149] [0.2677146293120195, 0.7322853706879805] [0.19972734766915945, 0.8002726523308406] [0.1395169113323853, 0.8604830886676147] [0.08864267173142881, 0.9113573282685712] [0.048422048192590994, 0.951577951807409] [0.01989592393258499, 0.980104076067415] [0.0037965780782077685, 0.9962034219217922] [0.980104076067415, 0.01989592393258499]], [0.009730894114863296, 0.03452227136882058, 0.045745010811225055, 0.05578332277366699, 0.06437698126966812, 0.0713033510868033, 0.07638302103292981, 0.07948442169697717, 0.08052722492439185, 0.07948442169697717, 0.07638302103292981, 0.0713033510868033, 0.06437698126966812, 0.05578332277366699, 0.04574501081122509, 0.03452227136882058, 0.02240711338284976, 0.009730894114863187, 0.02240711338284976]
61+
end
62+
if domain == Domain_Interval && order == 20
63+
return [[0.9965642995925474, 0.0034357004074525577] [0.956117214125663, 0.04388278587433703] [0.9195584859111094, 0.08044151408889061] [0.8731659532300754, 0.1268340467699246] [0.8180268403632576, 0.1819731596367425] [0.7554335009754136, 0.24456649902458644] [0.6868530443577098, 0.3131469556422902] [0.6138929255708225, 0.38610707442917747] [0.5382632605667487, 0.46173673943325133] [0.46173673943325133, 0.5382632605667487] [0.38610707442917747, 0.6138929255708225] [0.3131469556422902, 0.6868530443577098] [0.24456649902458638, 0.7554335009754136] [0.18197315963674243, 0.8180268403632576] [0.1268340467699246, 0.8731659532300754] [0.08044151408889078, 0.9195584859111092] [0.04388278587433703, 0.956117214125663] [0.01801403636104304, 0.981985963638957] [0.0034357004074525577, 0.9965642995925474] [0.981985963638957, 0.018014036361043095]], [0.008807003569576057, 0.031336024167054534, 0.04163837078835238, 0.05096505990862023, 0.05909726598075927, 0.06584431922458833, 0.07104805465919108, 0.07458649323630188, 0.07637669356536297, 0.07637669356536297, 0.07458649323630187, 0.07104805465919108, 0.06584431922458833, 0.05909726598075927, 0.05096505990862023, 0.04163837078835248, 0.031336024167054534, 0.02030071490019344, 0.008807003569576057, 0.02030071490019344]
64+
end
65+
if domain == Domain_Interval && order == 21
66+
return [[0.9968760853101948, 0.003123914689805274] [0.9600496670752003, 0.0399503329247996] [0.9266816822916586, 0.07331831770834135] [0.8842199817378389, 0.11578001826216106] [0.8335694020987061, 0.16643059790129383] [0.7758094179436099, 0.2241905820563901] [0.7121710601037194, 0.2878289398962806] [0.6440106584012005, 0.35598934159879947] [0.5727809270804476, 0.42721907291955247] [0.5, 0.5] [0.4272190729195524, 0.5727809270804476] [0.35598934159879947, 0.6440106584012005] [0.28782893989628056, 0.7121710601037194] [0.2241905820563901, 0.7758094179436099] [0.1664305979012939, 0.8335694020987061] [0.11578001826216111, 0.8842199817378389] [0.07331831770834152, 0.9266816822916585] [0.03995033292479966, 0.9600496670752003] [0.016386580716846844, 0.9836134192831532] [0.0031239146898052184, 0.9968760853101948] [0.9836134192831532, 0.016386580716846844]], [0.008008614128887176, 0.028567212713428623, 0.038050056814189666, 0.04672221172801696, 0.05439864958357419, 0.060915708026864246, 0.06613446931666878, 0.06994369739553659, 0.07226220199498508, 0.07304056682484523, 0.07226220199498508, 0.0699436973955366, 0.06613446931666878, 0.060915708026864246, 0.05439864958357419, 0.04672221172801696, 0.038050056814189714, 0.028567212713428623, 0.01847689488542619, 0.008008614128887176, 0.01847689488542619]
67+
end
68+
throw("Invalid domain or order: ($domain, $order)")
69+
end
70+
71+
export gauss_legendre

0 commit comments

Comments
 (0)