use crate::Domain;
pub fn closed_newton_cotes(
domain: Domain,
order: usize,
) -> Result<(Vec<f64>, Vec<f64>), &'static str> {
match domain {
Domain::Interval => match order {
1 => Ok((vec![1.0, 0.0, 0.0, 1.0], vec![0.5, 0.5])),
2 => Ok((
vec![1.0, 0.0, 0.5, 0.5, 0.0, 1.0],
vec![0.16666666666666666, 0.6666666666666666, 0.16666666666666666],
)),
3 => Ok((
vec![
1.0,
0.0,
0.6666666666666666,
0.3333333333333333,
0.3333333333333333,
0.6666666666666666,
0.0,
1.0,
],
vec![0.125, 0.375, 0.375, 0.125],
)),
4 => Ok((
vec![1.0, 0.0, 0.75, 0.25, 0.5, 0.5, 0.25, 0.75, 0.0, 1.0],
vec![
0.07777777777777778,
0.35555555555555557,
0.13333333333333333,
0.35555555555555557,
0.07777777777777778,
],
)),
5 => Ok((
vec![1.0, 0.0, 0.8, 0.2, 0.6, 0.4, 0.4, 0.6, 0.2, 0.8, 0.0, 1.0],
vec![
0.06597222222222222,
0.2604166666666667,
0.1736111111111111,
0.1736111111111111,
0.2604166666666667,
0.06597222222222222,
],
)),
6 => Ok((
vec![
1.0,
0.0,
0.8333333333333334,
0.16666666666666666,
0.6666666666666667,
0.3333333333333333,
0.5,
0.5,
0.33333333333333337,
0.6666666666666666,
0.16666666666666663,
0.8333333333333334,
0.0,
1.0,
],
vec![
0.04880952380952381,
0.2571428571428571,
0.03214285714285714,
0.3238095238095238,
0.03214285714285714,
0.2571428571428571,
0.04880952380952381,
],
)),
_ => 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 {
_ => 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"),
},
}
}