boost.cxx 0.0.2 → 1.90.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +29 -2
- package/boost/cast.hpp +20 -0
- package/boost/numeric/conversion/bounds.hpp +24 -0
- package/boost/numeric/conversion/cast.hpp +61 -0
- package/boost/numeric/conversion/conversion_traits.hpp +32 -0
- package/boost/numeric/conversion/converter.hpp +68 -0
- package/boost/numeric/conversion/converter_policies.hpp +194 -0
- package/boost/numeric/conversion/detail/bounds.hpp +58 -0
- package/boost/numeric/conversion/detail/conversion_traits.hpp +97 -0
- package/boost/numeric/conversion/detail/converter.hpp +593 -0
- package/boost/numeric/conversion/detail/int_float_mixture.hpp +72 -0
- package/boost/numeric/conversion/detail/is_subranged.hpp +234 -0
- package/boost/numeric/conversion/detail/meta.hpp +120 -0
- package/boost/numeric/conversion/detail/numeric_cast_traits.hpp +138 -0
- package/boost/numeric/conversion/detail/old_numeric_cast.hpp +308 -0
- package/boost/numeric/conversion/detail/preprocessed/numeric_cast_traits_common.hpp +1741 -0
- package/boost/numeric/conversion/detail/preprocessed/numeric_cast_traits_long_long.hpp +347 -0
- package/boost/numeric/conversion/detail/sign_mixture.hpp +72 -0
- package/boost/numeric/conversion/detail/udt_builtin_mixture.hpp +69 -0
- package/boost/numeric/conversion/int_float_mixture.hpp +30 -0
- package/boost/numeric/conversion/int_float_mixture_enum.hpp +29 -0
- package/boost/numeric/conversion/is_subranged.hpp +27 -0
- package/boost/numeric/conversion/numeric_cast_traits.hpp +31 -0
- package/boost/numeric/conversion/sign_mixture.hpp +30 -0
- package/boost/numeric/conversion/sign_mixture_enum.hpp +29 -0
- package/boost/numeric/conversion/udt_builtin_mixture.hpp +28 -0
- package/boost/numeric/conversion/udt_builtin_mixture_enum.hpp +26 -0
- package/boost/numeric/interval/arith.hpp +305 -0
- package/boost/numeric/interval/arith2.hpp +304 -0
- package/boost/numeric/interval/arith3.hpp +69 -0
- package/boost/numeric/interval/checking.hpp +130 -0
- package/boost/numeric/interval/compare/certain.hpp +113 -0
- package/boost/numeric/interval/compare/explicit.hpp +248 -0
- package/boost/numeric/interval/compare/lexicographic.hpp +122 -0
- package/boost/numeric/interval/compare/possible.hpp +113 -0
- package/boost/numeric/interval/compare/set.hpp +101 -0
- package/boost/numeric/interval/compare/tribool.hpp +138 -0
- package/boost/numeric/interval/compare.hpp +19 -0
- package/boost/numeric/interval/constants.hpp +85 -0
- package/boost/numeric/interval/detail/alpha_rounding_control.hpp +113 -0
- package/boost/numeric/interval/detail/bcc_rounding_control.hpp +57 -0
- package/boost/numeric/interval/detail/bugs.hpp +48 -0
- package/boost/numeric/interval/detail/c99_rounding_control.hpp +50 -0
- package/boost/numeric/interval/detail/c99sub_rounding_control.hpp +43 -0
- package/boost/numeric/interval/detail/division.hpp +194 -0
- package/boost/numeric/interval/detail/ia64_rounding_control.hpp +83 -0
- package/boost/numeric/interval/detail/interval_prototype.hpp +41 -0
- package/boost/numeric/interval/detail/msvc_rounding_control.hpp +113 -0
- package/boost/numeric/interval/detail/ppc_rounding_control.hpp +99 -0
- package/boost/numeric/interval/detail/sparc_rounding_control.hpp +112 -0
- package/boost/numeric/interval/detail/test_input.hpp +76 -0
- package/boost/numeric/interval/detail/x86_rounding_control.hpp +108 -0
- package/boost/numeric/interval/detail/x86gcc_rounding_control.hpp +51 -0
- package/boost/numeric/interval/ext/integer.hpp +70 -0
- package/boost/numeric/interval/ext/x86_fast_rounding_control.hpp +70 -0
- package/boost/numeric/interval/hw_rounding.hpp +73 -0
- package/boost/numeric/interval/interval.hpp +450 -0
- package/boost/numeric/interval/io.hpp +41 -0
- package/boost/numeric/interval/limits.hpp +49 -0
- package/boost/numeric/interval/policies.hpp +75 -0
- package/boost/numeric/interval/rounded_arith.hpp +120 -0
- package/boost/numeric/interval/rounded_transc.hpp +140 -0
- package/boost/numeric/interval/rounding.hpp +101 -0
- package/boost/numeric/interval/transc.hpp +232 -0
- package/boost/numeric/interval/utility.hpp +335 -0
- package/boost/numeric/interval/utility_fwd.hpp +172 -0
- package/boost/numeric/interval.hpp +32 -0
- package/boost/numeric/odeint/algebra/algebra_dispatcher.hpp +86 -0
- package/boost/numeric/odeint/algebra/array_algebra.hpp +293 -0
- package/boost/numeric/odeint/algebra/default_operations.hpp +599 -0
- package/boost/numeric/odeint/algebra/detail/extract_value_type.hpp +51 -0
- package/boost/numeric/odeint/algebra/detail/for_each.hpp +165 -0
- package/boost/numeric/odeint/algebra/detail/macros.hpp +35 -0
- package/boost/numeric/odeint/algebra/detail/norm_inf.hpp +46 -0
- package/boost/numeric/odeint/algebra/fusion_algebra.hpp +216 -0
- package/boost/numeric/odeint/algebra/fusion_algebra_dispatcher.hpp +48 -0
- package/boost/numeric/odeint/algebra/multi_array_algebra.hpp +146 -0
- package/boost/numeric/odeint/algebra/norm_result_type.hpp +33 -0
- package/boost/numeric/odeint/algebra/operations_dispatcher.hpp +41 -0
- package/boost/numeric/odeint/algebra/range_algebra.hpp +142 -0
- package/boost/numeric/odeint/algebra/vector_space_algebra.hpp +175 -0
- package/boost/numeric/odeint/config.hpp +53 -0
- package/boost/numeric/odeint/external/blaze/blaze_algebra_dispatcher.hpp +55 -0
- package/boost/numeric/odeint/external/blaze/blaze_resize.hpp +64 -0
- package/boost/numeric/odeint/external/compute/compute.hpp +27 -0
- package/boost/numeric/odeint/external/compute/compute_algebra.hpp +65 -0
- package/boost/numeric/odeint/external/compute/compute_algebra_dispatcher.hpp +41 -0
- package/boost/numeric/odeint/external/compute/compute_operations.hpp +198 -0
- package/boost/numeric/odeint/external/compute/compute_operations_dispatcher.hpp +44 -0
- package/boost/numeric/odeint/external/compute/compute_resize.hpp +92 -0
- package/boost/numeric/odeint/external/eigen/eigen.hpp +27 -0
- package/boost/numeric/odeint/external/eigen/eigen_algebra.hpp +98 -0
- package/boost/numeric/odeint/external/eigen/eigen_algebra_dispatcher.hpp +49 -0
- package/boost/numeric/odeint/external/eigen/eigen_resize.hpp +103 -0
- package/boost/numeric/odeint/external/gsl/gsl_wrapper.hpp +228 -0
- package/boost/numeric/odeint/external/mkl/mkl_operations.hpp +181 -0
- package/boost/numeric/odeint/external/mpi/mpi.hpp +25 -0
- package/boost/numeric/odeint/external/mpi/mpi_nested_algebra.hpp +62 -0
- package/boost/numeric/odeint/external/mpi/mpi_state.hpp +113 -0
- package/boost/numeric/odeint/external/mpi/mpi_vector_state.hpp +95 -0
- package/boost/numeric/odeint/external/mtl4/implicit_euler_mtl4.hpp +161 -0
- package/boost/numeric/odeint/external/mtl4/mtl4.hpp +23 -0
- package/boost/numeric/odeint/external/mtl4/mtl4_algebra_dispatcher.hpp +99 -0
- package/boost/numeric/odeint/external/mtl4/mtl4_resize.hpp +134 -0
- package/boost/numeric/odeint/external/nt2/nt2_algebra_dispatcher.hpp +25 -0
- package/boost/numeric/odeint/external/nt2/nt2_copy.hpp +33 -0
- package/boost/numeric/odeint/external/nt2/nt2_norm_inf.hpp +31 -0
- package/boost/numeric/odeint/external/nt2/nt2_resize.hpp +54 -0
- package/boost/numeric/odeint/external/openmp/openmp.hpp +31 -0
- package/boost/numeric/odeint/external/openmp/openmp_nested_algebra.hpp +281 -0
- package/boost/numeric/odeint/external/openmp/openmp_range_algebra.hpp +276 -0
- package/boost/numeric/odeint/external/openmp/openmp_state.hpp +172 -0
- package/boost/numeric/odeint/external/thrust/thrust.hpp +27 -0
- package/boost/numeric/odeint/external/thrust/thrust_algebra.hpp +217 -0
- package/boost/numeric/odeint/external/thrust/thrust_algebra_dispatcher.hpp +118 -0
- package/boost/numeric/odeint/external/thrust/thrust_operations.hpp +233 -0
- package/boost/numeric/odeint/external/thrust/thrust_operations_dispatcher.hpp +118 -0
- package/boost/numeric/odeint/external/thrust/thrust_resize.hpp +197 -0
- package/boost/numeric/odeint/external/vexcl/vexcl.hpp +28 -0
- package/boost/numeric/odeint/external/vexcl/vexcl_abs.hpp +61 -0
- package/boost/numeric/odeint/external/vexcl/vexcl_algebra_dispatcher.hpp +51 -0
- package/boost/numeric/odeint/external/vexcl/vexcl_copy.hpp +55 -0
- package/boost/numeric/odeint/external/vexcl/vexcl_norm_inf.hpp +68 -0
- package/boost/numeric/odeint/external/vexcl/vexcl_resize.hpp +96 -0
- package/boost/numeric/odeint/external/vexcl/vexcl_same_instance.hpp +58 -0
- package/boost/numeric/odeint/external/viennacl/viennacl_operations.hpp +226 -0
- package/boost/numeric/odeint/external/viennacl/viennacl_resize.hpp +68 -0
- package/boost/numeric/odeint/integrate/check_adapter.hpp +222 -0
- package/boost/numeric/odeint/integrate/detail/functors.hpp +70 -0
- package/boost/numeric/odeint/integrate/detail/integrate_adaptive.hpp +161 -0
- package/boost/numeric/odeint/integrate/detail/integrate_const.hpp +167 -0
- package/boost/numeric/odeint/integrate/detail/integrate_n_steps.hpp +161 -0
- package/boost/numeric/odeint/integrate/detail/integrate_times.hpp +179 -0
- package/boost/numeric/odeint/integrate/integrate.hpp +133 -0
- package/boost/numeric/odeint/integrate/integrate_adaptive.hpp +127 -0
- package/boost/numeric/odeint/integrate/integrate_const.hpp +195 -0
- package/boost/numeric/odeint/integrate/integrate_n_steps.hpp +178 -0
- package/boost/numeric/odeint/integrate/integrate_times.hpp +220 -0
- package/boost/numeric/odeint/integrate/max_step_checker.hpp +114 -0
- package/boost/numeric/odeint/integrate/null_observer.hpp +38 -0
- package/boost/numeric/odeint/integrate/observer_collection.hpp +55 -0
- package/boost/numeric/odeint/iterator/adaptive_iterator.hpp +183 -0
- package/boost/numeric/odeint/iterator/adaptive_time_iterator.hpp +175 -0
- package/boost/numeric/odeint/iterator/const_step_iterator.hpp +180 -0
- package/boost/numeric/odeint/iterator/const_step_time_iterator.hpp +173 -0
- package/boost/numeric/odeint/iterator/detail/ode_iterator_base.hpp +199 -0
- package/boost/numeric/odeint/iterator/impl/adaptive_iterator_impl.hpp +251 -0
- package/boost/numeric/odeint/iterator/impl/const_step_iterator_impl.hpp +228 -0
- package/boost/numeric/odeint/iterator/impl/n_step_iterator_impl.hpp +239 -0
- package/boost/numeric/odeint/iterator/impl/times_iterator_impl.hpp +369 -0
- package/boost/numeric/odeint/iterator/integrate/detail/functors.hpp +70 -0
- package/boost/numeric/odeint/iterator/integrate/detail/integrate_adaptive.hpp +121 -0
- package/boost/numeric/odeint/iterator/integrate/detail/integrate_const.hpp +111 -0
- package/boost/numeric/odeint/iterator/integrate/detail/integrate_n_steps.hpp +107 -0
- package/boost/numeric/odeint/iterator/integrate/detail/integrate_times.hpp +67 -0
- package/boost/numeric/odeint/iterator/integrate/integrate.hpp +111 -0
- package/boost/numeric/odeint/iterator/integrate/integrate_adaptive.hpp +127 -0
- package/boost/numeric/odeint/iterator/integrate/integrate_const.hpp +158 -0
- package/boost/numeric/odeint/iterator/integrate/integrate_n_steps.hpp +123 -0
- package/boost/numeric/odeint/iterator/integrate/integrate_times.hpp +131 -0
- package/boost/numeric/odeint/iterator/integrate/null_observer.hpp +38 -0
- package/boost/numeric/odeint/iterator/integrate/observer_collection.hpp +55 -0
- package/boost/numeric/odeint/iterator/n_step_iterator.hpp +168 -0
- package/boost/numeric/odeint/iterator/n_step_time_iterator.hpp +169 -0
- package/boost/numeric/odeint/iterator/times_iterator.hpp +189 -0
- package/boost/numeric/odeint/iterator/times_time_iterator.hpp +193 -0
- package/boost/numeric/odeint/stepper/adams_bashforth.hpp +418 -0
- package/boost/numeric/odeint/stepper/adams_bashforth_moulton.hpp +313 -0
- package/boost/numeric/odeint/stepper/adams_moulton.hpp +201 -0
- package/boost/numeric/odeint/stepper/adaptive_adams_bashforth_moulton.hpp +237 -0
- package/boost/numeric/odeint/stepper/base/algebra_stepper_base.hpp +91 -0
- package/boost/numeric/odeint/stepper/base/explicit_error_stepper_base.hpp +588 -0
- package/boost/numeric/odeint/stepper/base/explicit_error_stepper_fsal_base.hpp +677 -0
- package/boost/numeric/odeint/stepper/base/explicit_stepper_base.hpp +415 -0
- package/boost/numeric/odeint/stepper/base/symplectic_rkn_stepper_base.hpp +431 -0
- package/boost/numeric/odeint/stepper/bulirsch_stoer.hpp +642 -0
- package/boost/numeric/odeint/stepper/bulirsch_stoer_dense_out.hpp +838 -0
- package/boost/numeric/odeint/stepper/controlled_adams_bashforth_moulton.hpp +322 -0
- package/boost/numeric/odeint/stepper/controlled_runge_kutta.hpp +1018 -0
- package/boost/numeric/odeint/stepper/controlled_step_result.hpp +42 -0
- package/boost/numeric/odeint/stepper/dense_output_runge_kutta.hpp +476 -0
- package/boost/numeric/odeint/stepper/detail/adams_bashforth_call_algebra.hpp +148 -0
- package/boost/numeric/odeint/stepper/detail/adams_bashforth_coefficients.hpp +168 -0
- package/boost/numeric/odeint/stepper/detail/adams_moulton_call_algebra.hpp +148 -0
- package/boost/numeric/odeint/stepper/detail/adams_moulton_coefficients.hpp +168 -0
- package/boost/numeric/odeint/stepper/detail/adaptive_adams_coefficients.hpp +207 -0
- package/boost/numeric/odeint/stepper/detail/generic_rk_algorithm.hpp +247 -0
- package/boost/numeric/odeint/stepper/detail/generic_rk_call_algebra.hpp +263 -0
- package/boost/numeric/odeint/stepper/detail/generic_rk_operations.hpp +252 -0
- package/boost/numeric/odeint/stepper/detail/pid_step_adjuster.hpp +199 -0
- package/boost/numeric/odeint/stepper/detail/pid_step_adjuster_coefficients.hpp +180 -0
- package/boost/numeric/odeint/stepper/detail/rotating_buffer.hpp +84 -0
- package/boost/numeric/odeint/stepper/euler.hpp +166 -0
- package/boost/numeric/odeint/stepper/explicit_error_generic_rk.hpp +255 -0
- package/boost/numeric/odeint/stepper/explicit_generic_rk.hpp +246 -0
- package/boost/numeric/odeint/stepper/extrapolation_stepper.hpp +288 -0
- package/boost/numeric/odeint/stepper/generation/generation_controlled_adams_bashforth_moulton.hpp +59 -0
- package/boost/numeric/odeint/stepper/generation/generation_controlled_runge_kutta.hpp +61 -0
- package/boost/numeric/odeint/stepper/generation/generation_dense_output_runge_kutta.hpp +65 -0
- package/boost/numeric/odeint/stepper/generation/generation_rosenbrock4.hpp +79 -0
- package/boost/numeric/odeint/stepper/generation/generation_runge_kutta_cash_karp54.hpp +47 -0
- package/boost/numeric/odeint/stepper/generation/generation_runge_kutta_cash_karp54_classic.hpp +48 -0
- package/boost/numeric/odeint/stepper/generation/generation_runge_kutta_dopri5.hpp +56 -0
- package/boost/numeric/odeint/stepper/generation/generation_runge_kutta_fehlberg78.hpp +46 -0
- package/boost/numeric/odeint/stepper/generation/make_controlled.hpp +103 -0
- package/boost/numeric/odeint/stepper/generation/make_dense_output.hpp +100 -0
- package/boost/numeric/odeint/stepper/generation.hpp +37 -0
- package/boost/numeric/odeint/stepper/implicit_euler.hpp +170 -0
- package/boost/numeric/odeint/stepper/modified_midpoint.hpp +315 -0
- package/boost/numeric/odeint/stepper/rosenbrock4.hpp +346 -0
- package/boost/numeric/odeint/stepper/rosenbrock4_controller.hpp +240 -0
- package/boost/numeric/odeint/stepper/rosenbrock4_dense_output.hpp +204 -0
- package/boost/numeric/odeint/stepper/runge_kutta4.hpp +181 -0
- package/boost/numeric/odeint/stepper/runge_kutta4_classic.hpp +232 -0
- package/boost/numeric/odeint/stepper/runge_kutta_cash_karp54.hpp +231 -0
- package/boost/numeric/odeint/stepper/runge_kutta_cash_karp54_classic.hpp +289 -0
- package/boost/numeric/odeint/stepper/runge_kutta_dopri5.hpp +403 -0
- package/boost/numeric/odeint/stepper/runge_kutta_fehlberg78.hpp +374 -0
- package/boost/numeric/odeint/stepper/stepper_categories.hpp +66 -0
- package/boost/numeric/odeint/stepper/symplectic_euler.hpp +136 -0
- package/boost/numeric/odeint/stepper/symplectic_rkn_sb3a_m4_mclachlan.hpp +160 -0
- package/boost/numeric/odeint/stepper/symplectic_rkn_sb3a_mclachlan.hpp +162 -0
- package/boost/numeric/odeint/stepper/velocity_verlet.hpp +375 -0
- package/boost/numeric/odeint/tools/assert.hpp +30 -0
- package/boost/numeric/odeint/tools/is_standalone.hpp +21 -0
- package/boost/numeric/odeint/tools/traits.hpp +39 -0
- package/boost/numeric/odeint/util/bind.hpp +35 -0
- package/boost/numeric/odeint/util/copy.hpp +88 -0
- package/boost/numeric/odeint/util/detail/is_range.hpp +127 -0
- package/boost/numeric/odeint/util/detail/less_with_sign.hpp +78 -0
- package/boost/numeric/odeint/util/is_pair.hpp +42 -0
- package/boost/numeric/odeint/util/is_resizeable.hpp +84 -0
- package/boost/numeric/odeint/util/multi_array_adaption.hpp +131 -0
- package/boost/numeric/odeint/util/n_ary_helper.hpp +96 -0
- package/boost/numeric/odeint/util/odeint_error.hpp +77 -0
- package/boost/numeric/odeint/util/resize.hpp +120 -0
- package/boost/numeric/odeint/util/resizer.hpp +94 -0
- package/boost/numeric/odeint/util/same_instance.hpp +56 -0
- package/boost/numeric/odeint/util/same_size.hpp +117 -0
- package/boost/numeric/odeint/util/split.hpp +64 -0
- package/boost/numeric/odeint/util/split_adaptor.hpp +103 -0
- package/boost/numeric/odeint/util/state_wrapper.hpp +50 -0
- package/boost/numeric/odeint/util/stepper_traits.hpp +63 -0
- package/boost/numeric/odeint/util/ublas_matrix_expression.patch +6 -0
- package/boost/numeric/odeint/util/ublas_wrapper.hpp +297 -0
- package/boost/numeric/odeint/util/unit_helper.hpp +151 -0
- package/boost/numeric/odeint/util/unwrap_reference.hpp +141 -0
- package/boost/numeric/odeint/version.hpp +55 -0
- package/boost/numeric/odeint.hpp +87 -0
- package/boost/numeric/ublas/assignment.hpp +1288 -0
- package/boost/numeric/ublas/banded.hpp +2372 -0
- package/boost/numeric/ublas/blas.hpp +499 -0
- package/boost/numeric/ublas/detail/concepts.hpp +1465 -0
- package/boost/numeric/ublas/detail/config.hpp +304 -0
- package/boost/numeric/ublas/detail/definitions.hpp +212 -0
- package/boost/numeric/ublas/detail/documentation.hpp +33 -0
- package/boost/numeric/ublas/detail/duff.hpp +56 -0
- package/boost/numeric/ublas/detail/iterator.hpp +1448 -0
- package/boost/numeric/ublas/detail/matrix_assign.hpp +1785 -0
- package/boost/numeric/ublas/detail/raw.hpp +878 -0
- package/boost/numeric/ublas/detail/returntype_deduction.hpp +174 -0
- package/boost/numeric/ublas/detail/temporary.hpp +33 -0
- package/boost/numeric/ublas/detail/vector_assign.hpp +609 -0
- package/boost/numeric/ublas/doxydoc.hpp +58 -0
- package/boost/numeric/ublas/exception.hpp +297 -0
- package/boost/numeric/ublas/experimental/sparse_view.hpp +317 -0
- package/boost/numeric/ublas/expression_types.hpp +506 -0
- package/boost/numeric/ublas/functional.hpp +2112 -0
- package/boost/numeric/ublas/fwd.hpp +229 -0
- package/boost/numeric/ublas/hermitian.hpp +2633 -0
- package/boost/numeric/ublas/io.hpp +355 -0
- package/boost/numeric/ublas/lu.hpp +350 -0
- package/boost/numeric/ublas/matrix.hpp +6013 -0
- package/boost/numeric/ublas/matrix_expression.hpp +5693 -0
- package/boost/numeric/ublas/matrix_proxy.hpp +5457 -0
- package/boost/numeric/ublas/matrix_sparse.hpp +5773 -0
- package/boost/numeric/ublas/matrix_vector.hpp +406 -0
- package/boost/numeric/ublas/opencl/elementwise.hpp +508 -0
- package/boost/numeric/ublas/opencl/library.hpp +38 -0
- package/boost/numeric/ublas/opencl/matrix.hpp +123 -0
- package/boost/numeric/ublas/opencl/misc.hpp +182 -0
- package/boost/numeric/ublas/opencl/operations.hpp +18 -0
- package/boost/numeric/ublas/opencl/prod.hpp +364 -0
- package/boost/numeric/ublas/opencl/transpose.hpp +142 -0
- package/boost/numeric/ublas/opencl/vector.hpp +90 -0
- package/boost/numeric/ublas/opencl.hpp +16 -0
- package/boost/numeric/ublas/operation/begin.hpp +318 -0
- package/boost/numeric/ublas/operation/c_array.hpp +41 -0
- package/boost/numeric/ublas/operation/end.hpp +318 -0
- package/boost/numeric/ublas/operation/num_columns.hpp +45 -0
- package/boost/numeric/ublas/operation/num_rows.hpp +44 -0
- package/boost/numeric/ublas/operation/size.hpp +350 -0
- package/boost/numeric/ublas/operation.hpp +830 -0
- package/boost/numeric/ublas/operation_blocked.hpp +266 -0
- package/boost/numeric/ublas/operation_sparse.hpp +198 -0
- package/boost/numeric/ublas/operations.hpp +26 -0
- package/boost/numeric/ublas/storage.hpp +2131 -0
- package/boost/numeric/ublas/storage_sparse.hpp +578 -0
- package/boost/numeric/ublas/symmetric.hpp +2309 -0
- package/boost/numeric/ublas/tags.hpp +37 -0
- package/boost/numeric/ublas/tensor/algorithms.hpp +345 -0
- package/boost/numeric/ublas/tensor/expression.hpp +181 -0
- package/boost/numeric/ublas/tensor/expression_evaluation.hpp +288 -0
- package/boost/numeric/ublas/tensor/extents.hpp +335 -0
- package/boost/numeric/ublas/tensor/functions.hpp +558 -0
- package/boost/numeric/ublas/tensor/index.hpp +89 -0
- package/boost/numeric/ublas/tensor/multi_index.hpp +110 -0
- package/boost/numeric/ublas/tensor/multi_index_utility.hpp +364 -0
- package/boost/numeric/ublas/tensor/multiplication.hpp +945 -0
- package/boost/numeric/ublas/tensor/operators_arithmetic.hpp +244 -0
- package/boost/numeric/ublas/tensor/operators_comparison.hpp +175 -0
- package/boost/numeric/ublas/tensor/ostream.hpp +122 -0
- package/boost/numeric/ublas/tensor/storage_traits.hpp +84 -0
- package/boost/numeric/ublas/tensor/strides.hpp +251 -0
- package/boost/numeric/ublas/tensor/tensor.hpp +734 -0
- package/boost/numeric/ublas/tensor.hpp +26 -0
- package/boost/numeric/ublas/traits/c_array.hpp +110 -0
- package/boost/numeric/ublas/traits/const_iterator_type.hpp +127 -0
- package/boost/numeric/ublas/traits/iterator_type.hpp +126 -0
- package/boost/numeric/ublas/traits.hpp +753 -0
- package/boost/numeric/ublas/triangular.hpp +2775 -0
- package/boost/numeric/ublas/vector.hpp +2947 -0
- package/boost/numeric/ublas/vector_expression.hpp +1762 -0
- package/boost/numeric/ublas/vector_of_vector.hpp +1347 -0
- package/boost/numeric/ublas/vector_proxy.hpp +1697 -0
- package/boost/numeric/ublas/vector_sparse.hpp +2246 -0
- package/package.json +3 -7
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/*
|
|
2
|
+
[auto_generated]
|
|
3
|
+
boost/numeric/odeint/integrate/max_step_checker.hpp
|
|
4
|
+
|
|
5
|
+
[begin_description]
|
|
6
|
+
Throws exception if too many steps are performed.
|
|
7
|
+
[end_description]
|
|
8
|
+
|
|
9
|
+
Copyright 2015 Mario Mulansky
|
|
10
|
+
|
|
11
|
+
Distributed under the Boost Software License, Version 1.0.
|
|
12
|
+
(See accompanying file LICENSE_1_0.txt or
|
|
13
|
+
copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
#ifndef BOOST_NUMERIC_ODEINT_INTEGRATE_MAX_STEP_CHECKER_HPP_INCLUDED
|
|
18
|
+
#define BOOST_NUMERIC_ODEINT_INTEGRATE_MAX_STEP_CHECKER_HPP_INCLUDED
|
|
19
|
+
|
|
20
|
+
#include <stdexcept>
|
|
21
|
+
#include <cstdio>
|
|
22
|
+
|
|
23
|
+
#include <boost/throw_exception.hpp>
|
|
24
|
+
#include <boost/numeric/odeint/util/odeint_error.hpp>
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
namespace boost {
|
|
28
|
+
namespace numeric {
|
|
29
|
+
namespace odeint {
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* \brief A class for performing overflow checks on the step count in integrate functions.
|
|
33
|
+
*
|
|
34
|
+
* Provide an instance of this class to integrate functions if you want to throw a runtime error if
|
|
35
|
+
* too many steps are performed without progress during the integrate routine.
|
|
36
|
+
*/
|
|
37
|
+
class max_step_checker
|
|
38
|
+
{
|
|
39
|
+
public:
|
|
40
|
+
|
|
41
|
+
protected:
|
|
42
|
+
const int m_max_steps;
|
|
43
|
+
int m_steps;
|
|
44
|
+
|
|
45
|
+
public:
|
|
46
|
+
/**
|
|
47
|
+
* \brief Construct the max_step_checker.
|
|
48
|
+
* max_steps is the maximal number of iterations allowed before runtime_error is thrown.
|
|
49
|
+
*/
|
|
50
|
+
max_step_checker(const int max_steps = 500)
|
|
51
|
+
: m_max_steps(max_steps)
|
|
52
|
+
{
|
|
53
|
+
reset();
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* \brief Resets the max_step_checker by setting the internal counter to 0.
|
|
58
|
+
*/
|
|
59
|
+
void reset()
|
|
60
|
+
{
|
|
61
|
+
m_steps = 0;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* \brief Increases the counter and performs the iteration check
|
|
66
|
+
*/
|
|
67
|
+
void operator()(void)
|
|
68
|
+
{
|
|
69
|
+
if( m_steps++ >= m_max_steps )
|
|
70
|
+
{
|
|
71
|
+
char error_msg[200];
|
|
72
|
+
std::snprintf(error_msg, 200, "Max number of iterations exceeded (%d).", m_max_steps);
|
|
73
|
+
BOOST_THROW_EXCEPTION( no_progress_error(error_msg) );
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* \brief A class for performing overflow checks on the failed step count in step size adjustments.
|
|
81
|
+
*
|
|
82
|
+
* Used internally within the dense output stepper and integrate routines.
|
|
83
|
+
*/
|
|
84
|
+
class failed_step_checker : public max_step_checker
|
|
85
|
+
{
|
|
86
|
+
|
|
87
|
+
public:
|
|
88
|
+
/**
|
|
89
|
+
* \brief Construct the failed_step_checker.
|
|
90
|
+
* max_steps is the maximal number of iterations allowed before runtime_error is thrown.
|
|
91
|
+
*/
|
|
92
|
+
failed_step_checker(const int max_steps = 500)
|
|
93
|
+
: max_step_checker(max_steps)
|
|
94
|
+
{}
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* \brief Increases the counter and performs the iteration check
|
|
98
|
+
*/
|
|
99
|
+
void operator()(void)
|
|
100
|
+
{
|
|
101
|
+
if( m_steps++ >= m_max_steps )
|
|
102
|
+
{
|
|
103
|
+
char error_msg[200];
|
|
104
|
+
std::snprintf(error_msg, 200, "Max number of iterations exceeded (%d). A new step size was not found.", m_max_steps);
|
|
105
|
+
BOOST_THROW_EXCEPTION( step_adjustment_error(error_msg) );
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
};
|
|
109
|
+
|
|
110
|
+
} // namespace odeint
|
|
111
|
+
} // namespace numeric
|
|
112
|
+
} // namespace boost
|
|
113
|
+
|
|
114
|
+
#endif
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/*
|
|
2
|
+
[auto_generated]
|
|
3
|
+
boost/numeric/odeint/integrate/null_observer.hpp
|
|
4
|
+
|
|
5
|
+
[begin_description]
|
|
6
|
+
null_observer
|
|
7
|
+
[end_description]
|
|
8
|
+
|
|
9
|
+
Copyright 2011-2012 Karsten Ahnert
|
|
10
|
+
Copyright 2011-2012 Mario Mulansky
|
|
11
|
+
|
|
12
|
+
Distributed under the Boost Software License, Version 1.0.
|
|
13
|
+
(See accompanying file LICENSE_1_0.txt or
|
|
14
|
+
copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
#ifndef BOOST_NUMERIC_ODEINT_INTEGRATE_NULL_OBSERVER_HPP_INCLUDED
|
|
19
|
+
#define BOOST_NUMERIC_ODEINT_INTEGRATE_NULL_OBSERVER_HPP_INCLUDED
|
|
20
|
+
|
|
21
|
+
namespace boost {
|
|
22
|
+
namespace numeric {
|
|
23
|
+
namespace odeint {
|
|
24
|
+
|
|
25
|
+
struct null_observer
|
|
26
|
+
{
|
|
27
|
+
template< class State , class Time >
|
|
28
|
+
void operator()( const State& /* x */ , Time /* t */ ) const
|
|
29
|
+
{
|
|
30
|
+
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
} // namespace odeint
|
|
35
|
+
} // namespace numeric
|
|
36
|
+
} // namespace boost
|
|
37
|
+
|
|
38
|
+
#endif // BOOST_NUMERIC_ODEINT_INTEGRATE_NULL_OBSERVER_HPP_INCLUDED
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/*
|
|
2
|
+
[auto_generated]
|
|
3
|
+
boost/numeric/odeint/integrate/observer_collection.hpp
|
|
4
|
+
|
|
5
|
+
[begin_description]
|
|
6
|
+
Collection of observers, which are all called during the evolution of the ODE.
|
|
7
|
+
[end_description]
|
|
8
|
+
|
|
9
|
+
Copyright 2011-2012 Karsten Ahnert
|
|
10
|
+
Copyright 2011-2012 Mario Mulansky
|
|
11
|
+
|
|
12
|
+
Distributed under the Boost Software License, Version 1.0.
|
|
13
|
+
(See accompanying file LICENSE_1_0.txt or
|
|
14
|
+
copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
#ifndef BOOST_NUMERIC_ODEINT_INTEGRATE_OBSERVER_COLLECTION_HPP_INCLUDED
|
|
19
|
+
#define BOOST_NUMERIC_ODEINT_INTEGRATE_OBSERVER_COLLECTION_HPP_INCLUDED
|
|
20
|
+
|
|
21
|
+
#include <vector>
|
|
22
|
+
#include <functional>
|
|
23
|
+
|
|
24
|
+
namespace boost {
|
|
25
|
+
namespace numeric {
|
|
26
|
+
namespace odeint {
|
|
27
|
+
|
|
28
|
+
template< class State , class Time >
|
|
29
|
+
class observer_collection
|
|
30
|
+
{
|
|
31
|
+
public:
|
|
32
|
+
|
|
33
|
+
typedef std::function< void( const State& , const Time& ) > observer_type;
|
|
34
|
+
typedef std::vector< observer_type > collection_type;
|
|
35
|
+
|
|
36
|
+
void operator()( const State& x , Time t )
|
|
37
|
+
{
|
|
38
|
+
for( size_t i=0 ; i<m_observers.size() ; ++i )
|
|
39
|
+
m_observers[i]( x , t );
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
collection_type& observers( void ) { return m_observers; }
|
|
43
|
+
const collection_type& observers( void ) const { return m_observers; }
|
|
44
|
+
|
|
45
|
+
private:
|
|
46
|
+
|
|
47
|
+
collection_type m_observers;
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
} // namespace odeint
|
|
51
|
+
} // namespace numeric
|
|
52
|
+
} // namespace boost
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
#endif // BOOST_NUMERIC_ODEINT_INTEGRATE_OBSERVER_COLLECTION_HPP_INCLUDED
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
|
|
2
|
+
/*
|
|
3
|
+
[auto_generated]
|
|
4
|
+
boost/numeric/odeint/iterator/adaptive_iterator.hpp
|
|
5
|
+
|
|
6
|
+
[begin_description]
|
|
7
|
+
Iterator for iterating throught the solution of an ODE with adaptive step size. The dereferenced types containes also the time.
|
|
8
|
+
[end_description]
|
|
9
|
+
|
|
10
|
+
Copyright 2012-2013 Karsten Ahnert
|
|
11
|
+
Copyright 2012 Mario Mulansky
|
|
12
|
+
|
|
13
|
+
Distributed under the Boost Software License, Version 1.0.
|
|
14
|
+
(See accompanying file LICENSE_1_0.txt or
|
|
15
|
+
copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
#ifndef BOOST_NUMERIC_ODEINT_ITERATOR_ADAPTIVE_ITERATOR_HPP_INCLUDED
|
|
20
|
+
#define BOOST_NUMERIC_ODEINT_ITERATOR_ADAPTIVE_ITERATOR_HPP_INCLUDED
|
|
21
|
+
|
|
22
|
+
#include <boost/numeric/odeint/util/stepper_traits.hpp>
|
|
23
|
+
#include <boost/numeric/odeint/util/unit_helper.hpp>
|
|
24
|
+
#include <boost/numeric/odeint/stepper/stepper_categories.hpp>
|
|
25
|
+
#include <boost/numeric/odeint/stepper/controlled_step_result.hpp>
|
|
26
|
+
#include <boost/numeric/odeint/iterator/impl/adaptive_iterator_impl.hpp>
|
|
27
|
+
|
|
28
|
+
namespace boost {
|
|
29
|
+
namespace numeric {
|
|
30
|
+
namespace odeint {
|
|
31
|
+
|
|
32
|
+
/* use the adaptive_iterator_impl with the right tags */
|
|
33
|
+
template< class Stepper , class System , class State
|
|
34
|
+
#ifndef DOXYGEN_SKIP
|
|
35
|
+
, class StepperTag = typename base_tag< typename traits::stepper_category< Stepper >::type >::type
|
|
36
|
+
#endif
|
|
37
|
+
>
|
|
38
|
+
class adaptive_iterator : public adaptive_iterator_impl<
|
|
39
|
+
adaptive_iterator< Stepper , System , State , StepperTag > ,
|
|
40
|
+
Stepper , System , State , detail::ode_state_iterator_tag , StepperTag
|
|
41
|
+
>
|
|
42
|
+
{
|
|
43
|
+
typedef typename traits::time_type< Stepper >::type time_type;
|
|
44
|
+
typedef adaptive_iterator< Stepper , System , State , StepperTag > iterator_type;
|
|
45
|
+
|
|
46
|
+
public:
|
|
47
|
+
adaptive_iterator( Stepper stepper , System sys , State &s , time_type t_start , time_type t_end , time_type dt )
|
|
48
|
+
: adaptive_iterator_impl< iterator_type , Stepper , System , State , detail::ode_state_iterator_tag , StepperTag >( stepper , sys , s , t_start , t_end , dt )
|
|
49
|
+
{}
|
|
50
|
+
|
|
51
|
+
adaptive_iterator( Stepper stepper , System sys , State &s )
|
|
52
|
+
: adaptive_iterator_impl< iterator_type , Stepper , System , State , detail::ode_state_iterator_tag , StepperTag >( stepper , sys , s )
|
|
53
|
+
{}
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
template< class Stepper , class System , class State >
|
|
60
|
+
adaptive_iterator< Stepper , System , State > make_adaptive_iterator_begin(
|
|
61
|
+
Stepper stepper ,
|
|
62
|
+
System system ,
|
|
63
|
+
State &x ,
|
|
64
|
+
typename traits::time_type< Stepper >::type t_start ,
|
|
65
|
+
typename traits::time_type< Stepper >::type t_end ,
|
|
66
|
+
typename traits::time_type< Stepper >::type dt )
|
|
67
|
+
{
|
|
68
|
+
return adaptive_iterator< Stepper , System , State >( stepper , system , x , t_start , t_end , dt );
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
template< class Stepper , class System , class State >
|
|
73
|
+
adaptive_iterator< Stepper , System , State > make_adaptive_iterator_end(
|
|
74
|
+
Stepper stepper ,
|
|
75
|
+
System system ,
|
|
76
|
+
State &x )
|
|
77
|
+
{
|
|
78
|
+
return adaptive_iterator< Stepper , System , State >( stepper , system , x );
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
template< class Stepper , class System , class State >
|
|
83
|
+
std::pair< adaptive_iterator< Stepper , System , State > , adaptive_iterator< Stepper , System , State > >
|
|
84
|
+
make_adaptive_range(
|
|
85
|
+
Stepper stepper ,
|
|
86
|
+
System system ,
|
|
87
|
+
State &x ,
|
|
88
|
+
typename traits::time_type< Stepper >::type t_start ,
|
|
89
|
+
typename traits::time_type< Stepper >::type t_end ,
|
|
90
|
+
typename traits::time_type< Stepper >::type dt )
|
|
91
|
+
{
|
|
92
|
+
return std::make_pair(
|
|
93
|
+
adaptive_iterator< Stepper , System , State >( stepper , system , x , t_start , t_end , dt ) ,
|
|
94
|
+
adaptive_iterator< Stepper , System , State >( stepper , system , x )
|
|
95
|
+
);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* \class adaptive_iterator
|
|
100
|
+
*
|
|
101
|
+
* \brief ODE Iterator with adaptive step size. The value type of this iterator is the state type of the stepper.
|
|
102
|
+
*
|
|
103
|
+
* Implements an iterator representing the solution of an ODE from t_start
|
|
104
|
+
* to t_end evaluated at steps with an adaptive step size dt.
|
|
105
|
+
* After each iteration the iterator dereferences to the state x at the next
|
|
106
|
+
* time t+dt where dt is controlled by the stepper.
|
|
107
|
+
* This iterator can be used with ControlledSteppers and
|
|
108
|
+
* DenseOutputSteppers and it always makes use of the all the given steppers
|
|
109
|
+
* capabilities. A for_each over such an iterator range behaves similar to
|
|
110
|
+
* the integrate_adaptive routine.
|
|
111
|
+
*
|
|
112
|
+
* adaptive_iterator is a model of single-pass iterator.
|
|
113
|
+
*
|
|
114
|
+
* The value type of this iterator is the state type of the stepper. Hence one can only access the state and not the current time.
|
|
115
|
+
*
|
|
116
|
+
* \tparam Stepper The stepper type which should be used during the iteration.
|
|
117
|
+
* \tparam System The type of the system function (ODE) which should be solved.
|
|
118
|
+
* \tparam State The state type of the ODE.
|
|
119
|
+
*/
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* \fn make_adaptive_iterator_begin( Stepper stepper , System system , State &x ,
|
|
128
|
+
typename traits::time_type< Stepper >::type t_start ,
|
|
129
|
+
typename traits::time_type< Stepper >::type t_end ,
|
|
130
|
+
typename traits::time_type< Stepper >::type dt )
|
|
131
|
+
*
|
|
132
|
+
* \brief Factory function for adaptive_iterator. Constructs a begin iterator.
|
|
133
|
+
*
|
|
134
|
+
* \param stepper The stepper to use during the iteration.
|
|
135
|
+
* \param system The system function (ODE) to solve.
|
|
136
|
+
* \param x The initial state.
|
|
137
|
+
* \param t_start The initial time.
|
|
138
|
+
* \param t_end The end time, at which the iteration should stop.
|
|
139
|
+
* \param dt The initial time step.
|
|
140
|
+
* \returns The adaptive iterator.
|
|
141
|
+
*/
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* \fn make_adaptive_iterator_end( Stepper stepper , System system , State &x )
|
|
146
|
+
* \brief Factory function for adaptive_iterator. Constructs a end iterator.
|
|
147
|
+
*
|
|
148
|
+
* \param stepper The stepper to use during the iteration.
|
|
149
|
+
* \param system The system function (ODE) to solve.
|
|
150
|
+
* \param x The initial state.
|
|
151
|
+
* \returns The adaptive iterator.
|
|
152
|
+
*/
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* \fn make_adaptive_range( Stepper stepper , System system , State &x ,
|
|
157
|
+
typename traits::time_type< Stepper >::type t_start ,
|
|
158
|
+
typename traits::time_type< Stepper >::type t_end ,
|
|
159
|
+
typename traits::time_type< Stepper >::type dt )
|
|
160
|
+
*
|
|
161
|
+
* \brief Factory function to construct a single pass range of adaptive iterators. A range is here a pair of adaptive_iterator.
|
|
162
|
+
*
|
|
163
|
+
* \param stepper The stepper to use during the iteration.
|
|
164
|
+
* \param system The system function (ODE) to solve.
|
|
165
|
+
* \param x The initial state.
|
|
166
|
+
* \param t_start The initial time.
|
|
167
|
+
* \param t_end The end time, at which the iteration should stop.
|
|
168
|
+
* \param dt The initial time step.
|
|
169
|
+
* \returns The adaptive range.
|
|
170
|
+
*/
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
|
|
177
|
+
} // namespace odeint
|
|
178
|
+
} // namespace numeric
|
|
179
|
+
} // namespace boost
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
|
|
183
|
+
#endif // BOOST_NUMERIC_ODEINT_ITERATOR_ADAPTIVE_ITERATOR_HPP_INCLUDED
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
|
|
2
|
+
/*
|
|
3
|
+
[auto_generated]
|
|
4
|
+
boost/numeric/odeint/iterator/adaptive_time_iterator.hpp
|
|
5
|
+
|
|
6
|
+
[begin_description]
|
|
7
|
+
Iterator for iterating throught the solution of an ODE with adaptive step size. The dereferenced types containes also the time.
|
|
8
|
+
[end_description]
|
|
9
|
+
|
|
10
|
+
Copyright 2012-2013 Karsten Ahnert
|
|
11
|
+
Copyright 2012-2013 Mario Mulansky
|
|
12
|
+
|
|
13
|
+
Distributed under the Boost Software License, Version 1.0.
|
|
14
|
+
(See accompanying file LICENSE_1_0.txt or
|
|
15
|
+
copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
#ifndef BOOST_NUMERIC_ODEINT_ITERATOR_ADAPTIVE_TIME_ITERATOR_HPP_INCLUDED
|
|
20
|
+
#define BOOST_NUMERIC_ODEINT_ITERATOR_ADAPTIVE_TIME_ITERATOR_HPP_INCLUDED
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
#include <boost/numeric/odeint/stepper/stepper_categories.hpp>
|
|
25
|
+
#include <boost/numeric/odeint/util/stepper_traits.hpp>
|
|
26
|
+
#include <boost/numeric/odeint/iterator/impl/adaptive_iterator_impl.hpp>
|
|
27
|
+
|
|
28
|
+
namespace boost {
|
|
29
|
+
namespace numeric {
|
|
30
|
+
namespace odeint {
|
|
31
|
+
|
|
32
|
+
/* use the adaptive_iterator_impl with the right tags */
|
|
33
|
+
template< class Stepper , class System , class State
|
|
34
|
+
#ifndef DOXYGEN_SKIP
|
|
35
|
+
, class StepperTag = typename base_tag< typename traits::stepper_category< Stepper >::type >::type
|
|
36
|
+
#endif
|
|
37
|
+
>
|
|
38
|
+
class adaptive_time_iterator : public adaptive_iterator_impl<
|
|
39
|
+
adaptive_time_iterator< Stepper , System , State , StepperTag > ,
|
|
40
|
+
Stepper , System , State , detail::ode_state_time_iterator_tag , StepperTag
|
|
41
|
+
>
|
|
42
|
+
{
|
|
43
|
+
typedef typename traits::time_type< Stepper >::type time_type;
|
|
44
|
+
typedef adaptive_time_iterator< Stepper , System , State , StepperTag > iterator_type;
|
|
45
|
+
|
|
46
|
+
public:
|
|
47
|
+
adaptive_time_iterator( Stepper stepper , System sys , State &s , time_type t_start , time_type t_end , time_type dt )
|
|
48
|
+
: adaptive_iterator_impl< iterator_type , Stepper , System , State , detail::ode_state_time_iterator_tag , StepperTag >( stepper , sys , s , t_start , t_end , dt )
|
|
49
|
+
{}
|
|
50
|
+
|
|
51
|
+
adaptive_time_iterator( Stepper stepper , System sys , State &s )
|
|
52
|
+
: adaptive_iterator_impl< iterator_type , Stepper , System , State , detail::ode_state_time_iterator_tag , StepperTag >( stepper , sys , s )
|
|
53
|
+
{}
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
template< class Stepper , class System , class State >
|
|
60
|
+
adaptive_time_iterator< Stepper , System , State > make_adaptive_time_iterator_begin(
|
|
61
|
+
Stepper stepper ,
|
|
62
|
+
System system ,
|
|
63
|
+
State &x ,
|
|
64
|
+
typename traits::time_type< Stepper >::type t_start ,
|
|
65
|
+
typename traits::time_type< Stepper >::type t_end ,
|
|
66
|
+
typename traits::time_type< Stepper >::type dt )
|
|
67
|
+
{
|
|
68
|
+
return adaptive_time_iterator< Stepper , System , State >( stepper , system , x , t_start , t_end , dt );
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
template< class Stepper , class System , class State >
|
|
72
|
+
adaptive_time_iterator< Stepper , System , State > make_adaptive_time_iterator_end(
|
|
73
|
+
Stepper stepper ,
|
|
74
|
+
System system ,
|
|
75
|
+
State &x )
|
|
76
|
+
{
|
|
77
|
+
return adaptive_time_iterator< Stepper , System , State >( stepper , system , x );
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
template< class Stepper , class System , class State >
|
|
82
|
+
std::pair< adaptive_time_iterator< Stepper , System , State > , adaptive_time_iterator< Stepper , System , State > >
|
|
83
|
+
make_adaptive_time_range(
|
|
84
|
+
Stepper stepper ,
|
|
85
|
+
System system ,
|
|
86
|
+
State &x ,
|
|
87
|
+
typename traits::time_type< Stepper >::type t_start ,
|
|
88
|
+
typename traits::time_type< Stepper >::type t_end ,
|
|
89
|
+
typename traits::time_type< Stepper >::type dt )
|
|
90
|
+
{
|
|
91
|
+
return std::make_pair(
|
|
92
|
+
adaptive_time_iterator< Stepper , System , State >( stepper , system , x , t_start , t_end , dt ) ,
|
|
93
|
+
adaptive_time_iterator< Stepper , System , State >( stepper , system , x ) );
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* \class adaptive_time_iterator
|
|
100
|
+
*
|
|
101
|
+
* \brief ODE Iterator with adaptive step size. The value type of this iterator is a std::pair containing state and time.
|
|
102
|
+
*
|
|
103
|
+
* Implements an iterator representing the solution of an ODE from t_start
|
|
104
|
+
* to t_end evaluated at steps with an adaptive step size dt.
|
|
105
|
+
* After each iteration the iterator dereferences to a pair containing state
|
|
106
|
+
* and time at the next time point t+dt where dt is controlled by the stepper.
|
|
107
|
+
* This iterator can be used with ControlledSteppers and
|
|
108
|
+
* DenseOutputSteppers and it always makes use of the all the given steppers
|
|
109
|
+
* capabilities. A for_each over such an iterator range behaves similar to
|
|
110
|
+
* the integrate_adaptive routine.
|
|
111
|
+
*
|
|
112
|
+
* adaptive_iterator is a model of single-pass iterator.
|
|
113
|
+
*
|
|
114
|
+
* The value type of this iterator is a std::pair of state and time of the stepper.
|
|
115
|
+
*
|
|
116
|
+
* \tparam Stepper The stepper type which should be used during the iteration.
|
|
117
|
+
* \tparam System The type of the system function (ODE) which should be solved.
|
|
118
|
+
* \tparam State The state type of the ODE.
|
|
119
|
+
*/
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* \fn make_adaptive_time_iterator_begin( Stepper stepper , System system , State &x ,
|
|
125
|
+
typename traits::time_type< Stepper >::type t_start ,
|
|
126
|
+
typename traits::time_type< Stepper >::type t_end ,
|
|
127
|
+
typename traits::time_type< Stepper >::type dt )
|
|
128
|
+
*
|
|
129
|
+
* \brief Factory function for adaptive_time_iterator. Constructs a begin iterator.
|
|
130
|
+
*
|
|
131
|
+
* \param stepper The stepper to use during the iteration.
|
|
132
|
+
* \param system The system function (ODE) to solve.
|
|
133
|
+
* \param x The initial state. adaptive_time_iterator stores a reference of s and changes its value during the iteration.
|
|
134
|
+
* \param t_start The initial time.
|
|
135
|
+
* \param t_end The end time, at which the iteration should stop.
|
|
136
|
+
* \param dt The initial time step.
|
|
137
|
+
* \returns The adaptive time iterator.
|
|
138
|
+
*/
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* \fn make_adaptive_time_iterator_end( Stepper stepper , System system , State &x )
|
|
143
|
+
* \brief Factory function for adaptive_time_iterator. Constructs a end iterator.
|
|
144
|
+
*
|
|
145
|
+
* \param stepper The stepper to use during the iteration.
|
|
146
|
+
* \param system The system function (ODE) to solve.
|
|
147
|
+
* \param x The initial state. adaptive_time_iterator stores a reference of s and changes its value during the iteration.
|
|
148
|
+
* \returns The adaptive time iterator.
|
|
149
|
+
*/
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
/**
|
|
153
|
+
* \fn make_adaptive_time_range( Stepper stepper , System system , State &x ,
|
|
154
|
+
typename traits::time_type< Stepper >::type t_start ,
|
|
155
|
+
typename traits::time_type< Stepper >::type t_end ,
|
|
156
|
+
typename traits::time_type< Stepper >::type dt )
|
|
157
|
+
*
|
|
158
|
+
* \brief Factory function to construct a single pass range of adaptive time iterators. A range is here a pair of adaptive_time_iterators.
|
|
159
|
+
*
|
|
160
|
+
* \param stepper The stepper to use during the iteration.
|
|
161
|
+
* \param system The system function (ODE) to solve.
|
|
162
|
+
* \param x The initial state. adaptive_time_iterator stores a reference of s and changes its value during the iteration.
|
|
163
|
+
* \param t_start The initial time.
|
|
164
|
+
* \param t_end The end time, at which the iteration should stop.
|
|
165
|
+
* \param dt The initial time step.
|
|
166
|
+
* \returns The adaptive time range.
|
|
167
|
+
*/
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
} // namespace odeint
|
|
171
|
+
} // namespace numeric
|
|
172
|
+
} // namespace boost
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
#endif // BOOST_NUMERIC_ODEINT_ITERATOR_ADAPTIVE_TIME_ITERATOR_HPP_INCLUDED
|