archimedes.quadrature.tensor_quadΒΆ

archimedes.quadrature.tensor_quad(
*rules: QuadratureRule,
) → TensorQuadratureRuleΒΆ

Build a TensorQuadratureRule from one rule per dimension.

from archimedes.quadrature import gauss_hermite, gauss_legendre, tensor_quad

# Two Gaussian inputs and one uniformly-bounded one
rule = tensor_quad(
    gauss_hermite(4),
    gauss_hermite(4),
    gauss_legendre(4),
)

To integrate over a rectilinear mesh rather than a single box, apply composite_quad() per dimension first – tensor_quad(composite_quad(gl, bp_x), composite_quad(gl, bp_y)).

Parameters:

*rules (QuadratureRule) – One rule per dimension, in order. Measures may differ between dimensions.

Returns:

rule – Product rule with prod(len(r) for r in rules) nodes.

Return type:

TensorQuadratureRule

Raises:
  • ValueError – If no rules are given.

  • TypeError – If any argument is not a QuadratureRule.