diff --git a/include/integratorxx/composite_quadratures/pruned_spherical_quadrature.hpp b/include/integratorxx/composite_quadratures/pruned_spherical_quadrature.hpp index d90305f..273fcf3 100644 --- a/include/integratorxx/composite_quadratures/pruned_spherical_quadrature.hpp +++ b/include/integratorxx/composite_quadratures/pruned_spherical_quadrature.hpp @@ -5,6 +5,7 @@ #include #include +#include #include namespace IntegratorXX { @@ -45,6 +46,9 @@ class RadialGridPartition { template void finalize( const RadialQuad& rq ) { + if( partition_idx_.empty() ) + throw std::runtime_error( + "RadialGridPartition: cannot finalize without any angular quadrature"); if( partition_idx_.back() != rq.npts() ) partition_idx_.emplace_back( rq.npts() ); } @@ -179,13 +183,13 @@ class PrunedSphericalQuadrature : const point_container& sph_points_adaptor() const override { return quad_base_type::points(); } - point_container& sph_points_adaptor() override {; + point_container& sph_points_adaptor() override { return quad_base_type::points(); } - const weight_container& sph_weights_adaptor() const override {; + const weight_container& sph_weights_adaptor() const override { return quad_base_type::weights(); } - weight_container& sph_weights_adaptor() override {; + weight_container& sph_weights_adaptor() override { return quad_base_type::weights(); } diff --git a/include/integratorxx/composite_quadratures/spherical_quadrature.hpp b/include/integratorxx/composite_quadratures/spherical_quadrature.hpp index e26bf91..45a80cc 100644 --- a/include/integratorxx/composite_quadratures/spherical_quadrature.hpp +++ b/include/integratorxx/composite_quadratures/spherical_quadrature.hpp @@ -132,13 +132,13 @@ class SphericalQuadrature : const point_container& sph_points_adaptor() const override { return quad_base_type::points(); } - point_container& sph_points_adaptor() override {; + point_container& sph_points_adaptor() override { return quad_base_type::points(); } - const weight_container& sph_weights_adaptor() const override {; + const weight_container& sph_weights_adaptor() const override { return quad_base_type::weights(); } - weight_container& sph_weights_adaptor() override {; + weight_container& sph_weights_adaptor() override { return quad_base_type::weights(); } diff --git a/include/integratorxx/composite_quadratures/sub_quadrature.hpp b/include/integratorxx/composite_quadratures/sub_quadrature.hpp index 15809a4..c14bcdf 100644 --- a/include/integratorxx/composite_quadratures/sub_quadrature.hpp +++ b/include/integratorxx/composite_quadratures/sub_quadrature.hpp @@ -47,16 +47,14 @@ struct quadrature_traits< inline static std::tuple generate( range_idx_type idx_range, const Quadrature& quad ) { const auto [begin_idx, end_idx] = idx_range; - assert( begin_idx >= 0 ); - assert( begin_idx <= quad.npts() ); - assert( end_idx >= 0 ); - assert( end_idx <= quad.npts() ); - assert( begin_idx < end_idx ); - - point_container points( quad.points().begin() + begin_idx, - quad.points().begin() + end_idx ); - point_container weights( quad.weights().begin() + begin_idx, - quad.weights().begin() + end_idx ); + // begin_idx and end_idx are size_t, so the lower bounds are vacuous + assert( begin_idx < end_idx ); + assert( end_idx <= quad.npts() ); + + point_container points ( quad.points().begin() + begin_idx, + quad.points().begin() + end_idx ); + weight_container weights( quad.weights().begin() + begin_idx, + quad.weights().begin() + end_idx ); return std::make_tuple( points, weights ); }