## -----------------------------------------------------------------------------
#*! Quadrature rule for an interpolation of order 1 on the triangle *#
#* 'Higher-order Finite Elements', P.Solin, K.Segeth and I. Dolezel *#

const TRIANGLE_G1N1 = (
    (SVector(0.333333333333333, 0.333333333333333), 0.500000000000000),)
## 0 negative weights, 0 points outside of the triangle,  total sum of the
## weights is 0.5

## -----------------------------------------------------------------------------
#*! Quadrature rule for an interpolation of order 2 on the triangle *#
#* 'Higher-order Finite Elements', P.Solin, K.Segeth and I. Dolezel *#

const TRIANGLE_G2N3 = (
    (SVector(0.166666666666667, 0.166666666666667), 0.166666666666667),
    (SVector(0.166666666666667, 0.666666666666667), 0.166666666666667),
    (SVector(0.666666666666667, 0.166666666666667), 0.166666666666667))
## 0 negative weights, 0 points outside of the triangle,  total sum of the
## weights is 0.5

## -----------------------------------------------------------------------------
#*! Quadrature rule for an interpolation of order 3 on the triangle *#
#* 'Higher-order Finite Elements', P.Solin, K.Segeth and I. Dolezel *#

const TRIANGLE_G3N4 = (
    (SVector(0.333333333333333, 0.333333333333333), -0.281250000000000),
    (SVector(0.200000000000000, 0.200000000000000), 0.260416666666667),
    (SVector(0.200000000000000, 0.600000000000000), 0.260416666666667),
    (SVector(0.600000000000000, 0.200000000000000), 0.260416666666667))
## 1 negative weight, 0 points outside of the triangle,  total sum of the
## weights is 0.5

## -----------------------------------------------------------------------------
#*! Quadrature rule for an interpolation of order 4 on the triangle *#
#* 'Higher-order Finite Elements', P.Solin, K.Segeth and I. Dolezel *#

const TRIANGLE_G4N6 = (
    (SVector(0.445948490915965, 0.445948490915965), 0.111690794839005),
    (SVector(0.445948490915965, 0.108103018168070), 0.111690794839005),
    (SVector(0.108103018168070, 0.445948490915965), 0.111690794839005),
    (SVector(0.091576213509771, 0.091576213509771), 0.054975871827661),
    (SVector(0.091576213509771, 0.816847572980459), 0.054975871827661),
    (SVector(0.816847572980459, 0.091576213509771), 0.054975871827661))
## 0 negative weights, 0 points outside of the triangle,  total sum of the
## weights is 0.5

## -----------------------------------------------------------------------------
#*! Quadrature rule for an interpolation of order 5 on the triangle *#
#* 'Higher-order Finite Elements', P.Solin, K.Segeth and I. Dolezel *#

const TRIANGLE_G5N7 = (
    (SVector(0.333333333333333, 0.333333333333333), 0.112500000000000),
    (SVector(0.470142064105115, 0.470142064105115), 0.066197076394253),
    (SVector(0.470142064105115, 0.059715871789770), 0.066197076394253),
    (SVector(0.059715871789770, 0.470142064105115), 0.066197076394253),
    (SVector(0.101286507323456, 0.101286507323456), 0.062969590272414),
    (SVector(0.101286507323456, 0.797426985353087), 0.062969590272414),
    (SVector(0.797426985353087, 0.101286507323456), 0.062969590272414))
## 0 negative weights, 0 points outside of the triangle,  total sum of the
## weights is 0.5

## -----------------------------------------------------------------------------
#*! Quadrature rule for an interpolation of order 6 on the triangle *#
#* 'Higher-order Finite Elements', P.Solin, K.Segeth and I. Dolezel *#

const TRIANGLE_G6N12 = (
    (SVector(0.249286745170910, 0.249286745170910), 0.058393137863189),
    (SVector(0.249286745170910, 0.501426509658179), 0.058393137863189),
    (SVector(0.501426509658179, 0.249286745170910), 0.058393137863189),
    (SVector(0.063089014491502, 0.063089014491502), 0.025422453185104),
    (SVector(0.063089014491502, 0.873821971016996), 0.025422453185104),
    (SVector(0.873821971016996, 0.063089014491502), 0.025422453185104),
    (SVector(0.310352451033785, 0.636502499121399), 0.041425537809187),
    (SVector(0.636502499121399, 0.053145049844816), 0.041425537809187),
    (SVector(0.053145049844816, 0.310352451033785), 0.041425537809187),
    (SVector(0.310352451033785, 0.053145049844816), 0.041425537809187),
    (SVector(0.636502499121399, 0.310352451033785), 0.041425537809187),
    (SVector(0.053145049844816, 0.636502499121399), 0.041425537809187))
## 0 negative weights, 0 points outside of the triangle,  total sum of the
## weights is 0.5

## -----------------------------------------------------------------------------
#*! Quadrature rule for an interpolation of order 7 on the triangle *#
#* 'Higher-order Finite Elements', P.Solin, K.Segeth and I. Dolezel *#

const TRIANGLE_G7N13 = (
    (SVector(0.333333333333333, 0.333333333333333), -0.074785022233841),
    (SVector(0.260345966079040, 0.260345966079040), 0.087807628716604),
    (SVector(0.260345966079040, 0.479308067841920), 0.087807628716604),
    (SVector(0.479308067841920, 0.260345966079040), 0.087807628716604),
    (SVector(0.065130102902216, 0.065130102902216), 0.026673617804419),
    (SVector(0.065130102902216, 0.869739794195568), 0.026673617804419),
    (SVector(0.869739794195568, 0.065130102902216), 0.026673617804419),
    (SVector(0.312865496004874, 0.638444188569810), 0.038556880445128),
    (SVector(0.638444188569810, 0.048690315425316), 0.038556880445128),
    (SVector(0.048690315425316, 0.312865496004874), 0.038556880445128),
    (SVector(0.312865496004874, 0.048690315425316), 0.038556880445128),
    (SVector(0.638444188569810, 0.312865496004874), 0.038556880445128),
    (SVector(0.048690315425316, 0.638444188569810), 0.038556880445128))
## 1 negative weight, 0 points outside of the triangle,  total sum of the
## weights is 0.5

## -----------------------------------------------------------------------------
#*! Quadrature rule for an interpolation of order 8 on the triangle *#
#* 'Higher-order Finite Elements', P.Solin, K.Segeth and I. Dolezel *#

const TRIANGLE_G8N16 = (
    (SVector(0.333333333333333, 0.333333333333333), 0.072157803838894),
    (SVector(0.459292588292723, 0.459292588292723), 0.047545817133643),
    (SVector(0.459292588292723, 0.081414823414554), 0.047545817133643),
    (SVector(0.081414823414554, 0.459292588292723), 0.047545817133643),
    (SVector(0.170569307751760, 0.170569307751760), 0.051608685267359),
    (SVector(0.170569307751760, 0.658861384496480), 0.051608685267359),
    (SVector(0.658861384496480, 0.170569307751760), 0.051608685267359),
    (SVector(0.050547228317031, 0.050547228317031), 0.016229248811599),
    (SVector(0.050547228317031, 0.898905543365938), 0.016229248811599),
    (SVector(0.898905543365938, 0.050547228317031), 0.016229248811599),
    (SVector(0.263112829634638, 0.728492392955404), 0.013615157087217),
    (SVector(0.728492392955404, 0.008394777409958), 0.013615157087217),
    (SVector(0.008394777409958, 0.263112829634638), 0.013615157087217),
    (SVector(0.263112829634638, 0.008394777409958), 0.013615157087217),
    (SVector(0.728492392955404, 0.263112829634638), 0.013615157087217),
    (SVector(0.008394777409958, 0.728492392955404), 0.013615157087217))
## 0 negative weights, 0 points outside of the triangle,  total sum of the
## weights is 0.5

## -----------------------------------------------------------------------------
#*! Quadrature rule for an interpolation of order 9 on the triangle *#
#* 'Higher-order Finite Elements', P.Solin, K.Segeth and I. Dolezel *#

const TRIANGLE_G9N19 = (
    (SVector(0.3333333333330, 0.3333333333333), 0.04856789814140),
    (SVector(0.4896825191990, 0.4896825191990), 0.01566735011355),
    (SVector(0.4896825191990, 0.0206349616025), 0.01566735011355),
    (SVector(0.0206349616025, 0.4896825191990), 0.01566735011355),
    (SVector(0.4370895914930, 0.4370895914930), 0.03891377050240),
    (SVector(0.4370895914930, 0.1258208170140), 0.03891377050240),
    (SVector(0.1258208170140, 0.4370895914930), 0.03891377050240),
    (SVector(0.1882035356190, 0.1882035356190), 0.03982386946360),
    (SVector(0.1882035356190, 0.6235929287620), 0.03982386946360),
    (SVector(0.6235929287620, 0.1882035356190), 0.03982386946360),
    (SVector(0.0447295133945, 0.0447295133945), 0.01278883782935),
    (SVector(0.0447295133945, 0.9105409732110), 0.01278883782935),
    (SVector(0.9105409732110, 0.0447295133945), 0.01278883782935),
    (SVector(0.2219629891610, 0.7411985987840), 0.02164176968865),
    (SVector(0.7411985987840, 0.0368384120547), 0.02164176968865),
    (SVector(0.0368384120547, 0.2219629891610), 0.02164176968865),
    (SVector(0.2219629891610, 0.0368384120547), 0.02164176968865),
    (SVector(0.7411985987840, 0.2219629891610), 0.02164176968865),
    (SVector(0.0368384120547, 0.7411985987840), 0.02164176968865))
## 0 negative weights, 0 points outside of the triangle,  total sum of the
## weights is 0.5

## -----------------------------------------------------------------------------
#*! Quadrature rule for an interpolation of order 10 on the triangle *#
#* 'Higher-order Finite Elements', P.Solin, K.Segeth and I. Dolezel *#

const TRIANGLE_G10N25 = (
    (SVector(0.3333333333330, 0.3333333333330), 0.04540899519140),
    (SVector(0.4855776333840, 0.4855776333840), 0.01836297887825),
    (SVector(0.4855776333840, 0.0288447332327), 0.01836297887825),
    (SVector(0.0288447332327, 0.4855776333840), 0.01836297887825),
    (SVector(0.1094815754850, 0.1094815754850), 0.02266052971775),
    (SVector(0.1094815754850, 0.7810368490300), 0.02266052971775),
    (SVector(0.7810368490300, 0.1094815754850), 0.02266052971775),
    (SVector(0.3079398387640, 0.5503529418210), 0.03637895842270),
    (SVector(0.5503529418210, 0.1417072194150), 0.03637895842270),
    (SVector(0.1417072194150, 0.3079398387640), 0.03637895842270),
    (SVector(0.3079398387640, 0.1417072194150), 0.03637895842270),
    (SVector(0.5503529418210, 0.3079398387640), 0.03637895842270),
    (SVector(0.1417072194150, 0.5503529418210), 0.03637895842270),
    (SVector(0.2466725606400, 0.7283239045970), 0.01416362126555),
    (SVector(0.7283239045970, 0.0250035347627), 0.01416362126555),
    (SVector(0.0250035347627, 0.2466725606400), 0.01416362126555),
    (SVector(0.2466725606400, 0.0250035347627), 0.01416362126555),
    (SVector(0.7283239045970, 0.2466725606400), 0.01416362126555),
    (SVector(0.0250035347627, 0.7283239045970), 0.01416362126555),
    (SVector(0.0668032510122, 0.9236559335870), 0.00471083348185),
    (SVector(0.9236559335870, 0.0095408154003), 0.00471083348185),
    (SVector(0.0095408154003, 0.0668032510122), 0.00471083348185),
    (SVector(0.0668032510122, 0.0095408154003), 0.00471083348185),
    (SVector(0.9236559335870, 0.0668032510122), 0.00471083348185),
    (SVector(0.0095408154003, 0.9236559335870), 0.00471083348185))
## 0 negative weights, 0 points outside of the triangle,  total sum of the
## weights is 0.5

## -----------------------------------------------------------------------------
#*! Quadrature rule for an interpolation of order 12 on the triangle *#
#* 'Higher-order Finite Elements', P.Solin, K.Segeth and I. Dolezel *#

const TRIANGLE_G12N33 = (
    (SVector(0.4882173897740, 0.4882173897740), 0.01286553322025),
    (SVector(0.4882173897740, 0.0235652204524), 0.01286553322025),
    (SVector(0.0235652204524, 0.4882173897740), 0.01286553322025),
    (SVector(0.4397243922940, 0.4397243922940), 0.02184627226900),
    (SVector(0.4397243922940, 0.1205512154110), 0.02184627226900),
    (SVector(0.1205512154110, 0.4397243922940), 0.02184627226900),
    (SVector(0.2712103850120, 0.2712103850120), 0.03142911210895),
    (SVector(0.2712103850120, 0.4575792299760), 0.03142911210895),
    (SVector(0.4575792299760, 0.2712103850120), 0.03142911210895),
    (SVector(0.1275761455420, 0.1275761455420), 0.01739805646535),
    (SVector(0.1275761455420, 0.7448477089170), 0.01739805646535),
    (SVector(0.7448477089170, 0.1275761455420), 0.01739805646535),
    (SVector(0.0213173504532, 0.0213173504532), 0.00308313052578),
    (SVector(0.0213173504532, 0.9573652990940), 0.00308313052578),
    (SVector(0.9573652990940, 0.0213173504532), 0.00308313052578),
    (SVector(0.2757132696860, 0.6089432357800), 0.02018577888320),
    (SVector(0.6089432357800, 0.1153434945350), 0.02018577888320),
    (SVector(0.1153434945350, 0.2757132696860), 0.02018577888320),
    (SVector(0.2757132696860, 0.1153434945350), 0.02018577888320),
    (SVector(0.6089432357800, 0.2757132696860), 0.02018577888320),
    (SVector(0.1153434945350, 0.6089432357800), 0.02018577888320),
    (SVector(0.2813255809900, 0.6958360867880), 0.01117838660115),
    (SVector(0.6958360867880, 0.0228383322223), 0.01117838660115),
    (SVector(0.0228383322223, 0.2813255809900), 0.01117838660115),
    (SVector(0.2813255809900, 0.0228383322223), 0.01117838660115),
    (SVector(0.6958360867880, 0.2813255809900), 0.01117838660115),
    (SVector(0.0228383322223, 0.6958360867880), 0.01117838660115),
    (SVector(0.1162519159080, 0.8580140335440), 0.00865811555435),
    (SVector(0.8580140335440, 0.0257340505483), 0.00865811555435),
    (SVector(0.0257340505483, 0.1162519159080), 0.00865811555435),
    (SVector(0.1162519159080, 0.0257340505483), 0.00865811555435),
    (SVector(0.8580140335440, 0.1162519159080), 0.00865811555435),
    (SVector(0.0257340505483, 0.8580140335440), 0.00865811555435))
## 0 negative weights, 0 points outside of the triangle,  total sum of the
## weights is 0.5
