quadraturerules 0.9.0

quadrature rules library
Documentation
//! Hammer--Marlowe--Stroud quadrature rule.

use crate::Domain;

/// Get a Hammer--Marlowe--Stroud quadrature rule.
pub fn hammer_marlowe_stroud(
    domain: Domain,
    order: usize,
) -> Result<(Vec<f64>, Vec<f64>), &'static str> {
    match domain {
        Domain::Interval => match order {
            _ => Err("Invalid quadrature order"),
        },
        Domain::Quadrilateral => match order {
            _ => Err("Invalid quadrature order"),
        },
        Domain::EdgeAdjacentQuadrilaterals => match order {
            _ => Err("Invalid quadrature order"),
        },
        Domain::VertexAdjacentQuadrilaterals => match order {
            _ => Err("Invalid quadrature order"),
        },
        Domain::Triangle => match order {
            4 => Ok((
                vec![
                    0.13005607921683443,
                    0.009703785126946106,
                    0.8602401356562195,
                    0.009703785126946106,
                    0.13005607921683443,
                    0.8602401356562195,
                    0.0936377844373285,
                    0.04612207990645205,
                    0.8602401356562195,
                    0.04612207990645205,
                    0.0936377844373285,
                    0.8602401356562195,
                    0.38749748340669415,
                    0.028912084224389012,
                    0.5835904323689168,
                    0.028912084224389012,
                    0.38749748340669415,
                    0.5835904323689168,
                    0.2789904634965088,
                    0.13741910413457437,
                    0.5835904323689168,
                    0.13741910413457437,
                    0.2789904634965088,
                    0.5835904323689168,
                    0.6729468631505064,
                    0.050210123211369806,
                    0.2768430136381237,
                    0.050210123211369806,
                    0.6729468631505064,
                    0.2768430136381237,
                    0.4845083266304333,
                    0.23864865973144297,
                    0.2768430136381237,
                    0.23864865973144297,
                    0.4845083266304333,
                    0.2768430136381237,
                    0.8774288093304679,
                    0.06546699455501448,
                    0.05710419611451767,
                    0.06546699455501448,
                    0.8774288093304679,
                    0.05710419611451767,
                    0.6317312516411253,
                    0.311164552244357,
                    0.05710419611451767,
                    0.311164552244357,
                    0.6317312516411253,
                    0.05710419611451767,
                ],
                vec![
                    0.010846451821050509,
                    0.010846451821050509,
                    0.020334519128957573,
                    0.020334519128957573,
                    0.04516809856473986,
                    0.04516809856473986,
                    0.08467944904349257,
                    0.08467944904349257,
                    0.07077613579617188,
                    0.07077613579617188,
                    0.13268843221409946,
                    0.13268843221409946,
                    0.047136736386764674,
                    0.047136736386764674,
                    0.08837017704472347,
                    0.08837017704472347,
                ],
            )),
            _ => Err("Invalid quadrature order"),
        },
        Domain::EdgeAdjacentTriangleAndQuadrilateral => match order {
            _ => Err("Invalid quadrature order"),
        },
        Domain::VertexAdjacentTriangleAndQuadrilateral => match order {
            _ => Err("Invalid quadrature order"),
        },
        Domain::EdgeAdjacentTriangles => match order {
            _ => Err("Invalid quadrature order"),
        },
        Domain::VertexAdjacentTriangles => match order {
            _ => Err("Invalid quadrature order"),
        },
        Domain::Hexahedron => match order {
            _ => Err("Invalid quadrature order"),
        },
        Domain::Tetrahedron => match order {
            _ => Err("Invalid quadrature order"),
        },
        Domain::SquareBasedPyramid => match order {
            _ => Err("Invalid quadrature order"),
        },
        Domain::TriangularPrism => match order {
            _ => Err("Invalid quadrature order"),
        },
    }
}