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,121 @@
|
|
|
1
|
+
/*
|
|
2
|
+
[auto_generated]
|
|
3
|
+
boost/numeric/odeint/integrate/detail/integrate_adaptive.hpp
|
|
4
|
+
|
|
5
|
+
[begin_description]
|
|
6
|
+
Default Integrate adaptive implementation.
|
|
7
|
+
[end_description]
|
|
8
|
+
|
|
9
|
+
Copyright 2009-2011 Karsten Ahnert
|
|
10
|
+
Copyright 2009-2011 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_DETAIL_INTEGRATE_ADAPTIVE_HPP_INCLUDED
|
|
19
|
+
#define BOOST_NUMERIC_ODEINT_INTEGRATE_DETAIL_INTEGRATE_ADAPTIVE_HPP_INCLUDED
|
|
20
|
+
|
|
21
|
+
#include <stdexcept>
|
|
22
|
+
|
|
23
|
+
#include <boost/numeric/odeint/stepper/stepper_categories.hpp>
|
|
24
|
+
#include <boost/numeric/odeint/stepper/controlled_step_result.hpp>
|
|
25
|
+
#include <boost/numeric/odeint/iterator/integrate/detail/integrate_const.hpp>
|
|
26
|
+
#include <boost/numeric/odeint/iterator/adaptive_time_iterator.hpp>
|
|
27
|
+
#include <boost/numeric/odeint/iterator/integrate/detail/functors.hpp>
|
|
28
|
+
#include <boost/numeric/odeint/util/bind.hpp>
|
|
29
|
+
#include <boost/numeric/odeint/util/unwrap_reference.hpp>
|
|
30
|
+
#include <boost/numeric/odeint/util/copy.hpp>
|
|
31
|
+
|
|
32
|
+
#include <boost/numeric/odeint/util/detail/less_with_sign.hpp>
|
|
33
|
+
|
|
34
|
+
namespace boost {
|
|
35
|
+
namespace numeric {
|
|
36
|
+
namespace odeint {
|
|
37
|
+
namespace detail {
|
|
38
|
+
|
|
39
|
+
// forward declaration
|
|
40
|
+
template< class Stepper , class System , class State , class Time , class Observer>
|
|
41
|
+
size_t integrate_const(
|
|
42
|
+
Stepper stepper , System system , State &start_state ,
|
|
43
|
+
Time start_time , Time end_time , Time dt ,
|
|
44
|
+
Observer observer , stepper_tag );
|
|
45
|
+
|
|
46
|
+
/*
|
|
47
|
+
* integrate_adaptive for simple stepper is basically an integrate_const + some last step
|
|
48
|
+
*/
|
|
49
|
+
template< class Stepper , class System , class State , class Time , class Observer >
|
|
50
|
+
size_t integrate_adaptive(
|
|
51
|
+
Stepper stepper , System system , State &start_state ,
|
|
52
|
+
Time start_time , Time end_time , Time dt ,
|
|
53
|
+
Observer observer , stepper_tag
|
|
54
|
+
)
|
|
55
|
+
{
|
|
56
|
+
size_t steps = detail::integrate_const( stepper , system , start_state , start_time ,
|
|
57
|
+
end_time , dt , observer , stepper_tag() );
|
|
58
|
+
typename odeint::unwrap_reference< Observer >::type &obs = observer;
|
|
59
|
+
typename odeint::unwrap_reference< Stepper >::type &st = stepper;
|
|
60
|
+
|
|
61
|
+
Time end = start_time + dt*steps;
|
|
62
|
+
if( less_with_sign( end , end_time , dt ) )
|
|
63
|
+
{ //make a last step to end exactly at end_time
|
|
64
|
+
st.do_step( system , start_state , end , end_time - end );
|
|
65
|
+
steps++;
|
|
66
|
+
obs( start_state , end_time );
|
|
67
|
+
}
|
|
68
|
+
return steps;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
/*
|
|
73
|
+
* classical integrate adaptive
|
|
74
|
+
*/
|
|
75
|
+
template< class Stepper , class System , class State , class Time , class Observer >
|
|
76
|
+
size_t integrate_adaptive(
|
|
77
|
+
Stepper stepper , System system , State &start_state ,
|
|
78
|
+
Time &start_time , Time end_time , Time &dt ,
|
|
79
|
+
Observer observer , controlled_stepper_tag
|
|
80
|
+
)
|
|
81
|
+
{
|
|
82
|
+
size_t obs_calls = 0;
|
|
83
|
+
|
|
84
|
+
boost::for_each( make_adaptive_time_range( stepper , system , start_state ,
|
|
85
|
+
start_time , end_time , dt ) ,
|
|
86
|
+
obs_caller< Observer >( obs_calls , observer ) );
|
|
87
|
+
|
|
88
|
+
return obs_calls-1;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
/*
|
|
93
|
+
* integrate adaptive for dense output steppers
|
|
94
|
+
*
|
|
95
|
+
* step size control is used if the stepper supports it
|
|
96
|
+
*/
|
|
97
|
+
template< class Stepper , class System , class State , class Time , class Observer >
|
|
98
|
+
size_t integrate_adaptive(
|
|
99
|
+
Stepper stepper , System system , State &start_state ,
|
|
100
|
+
Time start_time , Time end_time , Time dt ,
|
|
101
|
+
Observer observer , dense_output_stepper_tag )
|
|
102
|
+
{
|
|
103
|
+
size_t obs_calls = 0;
|
|
104
|
+
|
|
105
|
+
boost::for_each( make_adaptive_time_range( stepper , system , start_state ,
|
|
106
|
+
start_time , end_time , dt ) ,
|
|
107
|
+
obs_caller< Observer >( obs_calls , observer ) );
|
|
108
|
+
|
|
109
|
+
return obs_calls-1;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
} // namespace detail
|
|
116
|
+
} // namespace odeint
|
|
117
|
+
} // namespace numeric
|
|
118
|
+
} // namespace boost
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
#endif // BOOST_NUMERIC_ODEINT_INTEGRATE_DETAIL_INTEGRATE_ADAPTIVE_HPP_INCLUDED
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/*
|
|
2
|
+
[auto_generated]
|
|
3
|
+
boost/numeric/odeint/integrate/detail/integrate_const.hpp
|
|
4
|
+
|
|
5
|
+
[begin_description]
|
|
6
|
+
integrate const implementation
|
|
7
|
+
[end_description]
|
|
8
|
+
|
|
9
|
+
Copyright 2009-2012 Karsten Ahnert
|
|
10
|
+
Copyright 2009-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
|
+
#ifndef BOOST_NUMERIC_ODEINT_INTEGRATE_DETAIL_INTEGRATE_CONST_HPP_INCLUDED
|
|
18
|
+
#define BOOST_NUMERIC_ODEINT_INTEGRATE_DETAIL_INTEGRATE_CONST_HPP_INCLUDED
|
|
19
|
+
|
|
20
|
+
#include <boost/range/algorithm/for_each.hpp>
|
|
21
|
+
|
|
22
|
+
#include <boost/numeric/odeint/util/unwrap_reference.hpp>
|
|
23
|
+
#include <boost/numeric/odeint/stepper/stepper_categories.hpp>
|
|
24
|
+
#include <boost/numeric/odeint/util/unit_helper.hpp>
|
|
25
|
+
#include <boost/numeric/odeint/iterator/const_step_time_iterator.hpp>
|
|
26
|
+
#include <boost/numeric/odeint/iterator/integrate/detail/integrate_adaptive.hpp>
|
|
27
|
+
#include <boost/numeric/odeint/iterator/integrate/detail/functors.hpp>
|
|
28
|
+
#include <boost/numeric/odeint/util/detail/less_with_sign.hpp>
|
|
29
|
+
|
|
30
|
+
namespace boost {
|
|
31
|
+
namespace numeric {
|
|
32
|
+
namespace odeint {
|
|
33
|
+
namespace detail {
|
|
34
|
+
|
|
35
|
+
// forward declaration
|
|
36
|
+
template< class Stepper , class System , class State , class Time , class Observer >
|
|
37
|
+
size_t integrate_adaptive(
|
|
38
|
+
Stepper stepper , System system , State &start_state ,
|
|
39
|
+
Time &start_time , Time end_time , Time &dt ,
|
|
40
|
+
Observer observer , controlled_stepper_tag
|
|
41
|
+
);
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
template< class Stepper , class System , class State , class Time , class Observer >
|
|
45
|
+
size_t integrate_const(
|
|
46
|
+
Stepper stepper , System system , State &start_state ,
|
|
47
|
+
Time start_time , Time end_time , Time dt ,
|
|
48
|
+
Observer observer , stepper_tag
|
|
49
|
+
)
|
|
50
|
+
{
|
|
51
|
+
size_t obs_calls = 0;
|
|
52
|
+
|
|
53
|
+
boost::for_each( make_const_step_time_range( stepper , system , start_state ,
|
|
54
|
+
start_time , end_time , dt ) ,
|
|
55
|
+
// should we use traits<Stepper>::state_type here instead of State? NO!
|
|
56
|
+
obs_caller< Observer >( obs_calls , observer ) );
|
|
57
|
+
|
|
58
|
+
// step integration steps gives step+1 observer calls
|
|
59
|
+
return obs_calls-1;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
template< class Stepper , class System , class State , class Time , class Observer >
|
|
65
|
+
size_t integrate_const(
|
|
66
|
+
Stepper stepper , System system , State &start_state ,
|
|
67
|
+
Time start_time , Time end_time , Time dt ,
|
|
68
|
+
Observer observer , controlled_stepper_tag
|
|
69
|
+
)
|
|
70
|
+
{
|
|
71
|
+
typename odeint::unwrap_reference< Observer >::type &obs = observer;
|
|
72
|
+
|
|
73
|
+
Time time = start_time;
|
|
74
|
+
const Time time_step = dt;
|
|
75
|
+
int step = 0;
|
|
76
|
+
|
|
77
|
+
while( less_eq_with_sign( static_cast<Time>(time+time_step) , end_time , dt ) )
|
|
78
|
+
{
|
|
79
|
+
obs( start_state , time );
|
|
80
|
+
detail::integrate_adaptive( stepper , system , start_state , time , time+time_step , dt ,
|
|
81
|
+
null_observer() , controlled_stepper_tag() );
|
|
82
|
+
// direct computation of the time avoids error propagation happening when using time += dt
|
|
83
|
+
// we need clumsy type analysis to get boost units working here
|
|
84
|
+
++step;
|
|
85
|
+
time = start_time + static_cast< typename unit_value_type<Time>::type >(step) * time_step;
|
|
86
|
+
}
|
|
87
|
+
obs( start_state , time );
|
|
88
|
+
|
|
89
|
+
return step;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
template< class Stepper , class System , class State , class Time , class Observer >
|
|
94
|
+
size_t integrate_const(
|
|
95
|
+
Stepper stepper , System system , State &start_state ,
|
|
96
|
+
Time start_time , Time end_time , Time dt ,
|
|
97
|
+
Observer observer , dense_output_stepper_tag
|
|
98
|
+
)
|
|
99
|
+
{
|
|
100
|
+
size_t obs_calls = 0;
|
|
101
|
+
|
|
102
|
+
boost::for_each( make_const_step_time_range( stepper , system , start_state ,
|
|
103
|
+
start_time , end_time , dt ) ,
|
|
104
|
+
obs_caller< Observer >( obs_calls , observer ) );
|
|
105
|
+
return obs_calls-1;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
} } } }
|
|
110
|
+
|
|
111
|
+
#endif
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/*
|
|
2
|
+
[auto_generated]
|
|
3
|
+
boost/numeric/odeint/integrate/detail/integrate_n_steps.hpp
|
|
4
|
+
|
|
5
|
+
[begin_description]
|
|
6
|
+
integrate steps implementation
|
|
7
|
+
[end_description]
|
|
8
|
+
|
|
9
|
+
Copyright 2009-2012 Karsten Ahnert
|
|
10
|
+
Copyright 2009-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
|
+
#ifndef BOOST_NUMERIC_ODEINT_INTEGRATE_DETAIL_INTEGRATE_N_STEPS_HPP_INCLUDED
|
|
18
|
+
#define BOOST_NUMERIC_ODEINT_INTEGRATE_DETAIL_INTEGRATE_N_STEPS_HPP_INCLUDED
|
|
19
|
+
|
|
20
|
+
#include <boost/numeric/odeint/util/unwrap_reference.hpp>
|
|
21
|
+
#include <boost/numeric/odeint/stepper/stepper_categories.hpp>
|
|
22
|
+
#include <boost/numeric/odeint/iterator/integrate/detail/integrate_adaptive.hpp>
|
|
23
|
+
#include <boost/numeric/odeint/iterator/integrate/detail/functors.hpp>
|
|
24
|
+
#include <boost/numeric/odeint/iterator/n_step_time_iterator.hpp>
|
|
25
|
+
#include <boost/numeric/odeint/util/unit_helper.hpp>
|
|
26
|
+
|
|
27
|
+
#include <boost/numeric/odeint/util/detail/less_with_sign.hpp>
|
|
28
|
+
|
|
29
|
+
namespace boost {
|
|
30
|
+
namespace numeric {
|
|
31
|
+
namespace odeint {
|
|
32
|
+
namespace detail {
|
|
33
|
+
|
|
34
|
+
// forward declaration
|
|
35
|
+
template< class Stepper , class System , class State , class Time , class Observer >
|
|
36
|
+
size_t integrate_adaptive(
|
|
37
|
+
Stepper stepper , System system , State &start_state ,
|
|
38
|
+
Time &start_time , Time end_time , Time &dt ,
|
|
39
|
+
Observer observer , controlled_stepper_tag
|
|
40
|
+
);
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
/* basic version */
|
|
44
|
+
template< class Stepper , class System , class State , class Time , class Observer>
|
|
45
|
+
Time integrate_n_steps(
|
|
46
|
+
Stepper stepper , System system , State &start_state ,
|
|
47
|
+
Time start_time , Time dt , size_t num_of_steps ,
|
|
48
|
+
Observer observer , stepper_tag )
|
|
49
|
+
{
|
|
50
|
+
// ToDo: is there a better way to extract the final time?
|
|
51
|
+
Time t = start_time; // Assignment is only here to avoid warnings.
|
|
52
|
+
boost::for_each( make_n_step_time_range( stepper , system , start_state ,
|
|
53
|
+
start_time , dt , num_of_steps ) ,
|
|
54
|
+
obs_caller_time< Observer , Time >( t , observer ) );
|
|
55
|
+
return t;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
/* controlled version */
|
|
60
|
+
template< class Stepper , class System , class State , class Time , class Observer>
|
|
61
|
+
Time integrate_n_steps(
|
|
62
|
+
Stepper stepper , System system , State &start_state ,
|
|
63
|
+
Time start_time , Time dt , size_t num_of_steps ,
|
|
64
|
+
Observer observer , controlled_stepper_tag )
|
|
65
|
+
{
|
|
66
|
+
typename odeint::unwrap_reference< Observer >::type &obs = observer;
|
|
67
|
+
|
|
68
|
+
Time time = start_time;
|
|
69
|
+
Time time_step = dt;
|
|
70
|
+
|
|
71
|
+
for( size_t step = 0; step < num_of_steps ; ++step )
|
|
72
|
+
{
|
|
73
|
+
obs( start_state , time );
|
|
74
|
+
detail::integrate_adaptive( stepper , system , start_state , time , static_cast<Time>(time+time_step) , dt ,
|
|
75
|
+
null_observer() , controlled_stepper_tag() );
|
|
76
|
+
// direct computation of the time avoids error propagation happening when using time += dt
|
|
77
|
+
// we need clumsy type analysis to get boost units working here
|
|
78
|
+
time = start_time + static_cast< typename unit_value_type<Time>::type >(step+1) * time_step;
|
|
79
|
+
}
|
|
80
|
+
obs( start_state , time );
|
|
81
|
+
|
|
82
|
+
return time;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
/* dense output version */
|
|
87
|
+
template< class Stepper , class System , class State , class Time , class Observer>
|
|
88
|
+
Time integrate_n_steps(
|
|
89
|
+
Stepper stepper , System system , State &start_state ,
|
|
90
|
+
Time start_time , Time dt , size_t num_of_steps ,
|
|
91
|
+
Observer observer , dense_output_stepper_tag )
|
|
92
|
+
{
|
|
93
|
+
// ToDo: is there a better way to extract the final time?
|
|
94
|
+
Time t = start_time; // Assignment is only here to avoid warnings.
|
|
95
|
+
boost::for_each( make_n_step_time_range( stepper , system , start_state ,
|
|
96
|
+
start_time , dt , num_of_steps ) ,
|
|
97
|
+
obs_caller_time< Observer , Time >( t , observer ) );
|
|
98
|
+
return t;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
#endif /* BOOST_NUMERIC_ODEINT_INTEGRATE_DETAIL_INTEGRATE_N_STEPS_HPP_INCLUDED */
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/*
|
|
2
|
+
[auto_generated]
|
|
3
|
+
boost/numeric/odeint/integrate/detail/integrate_times.hpp
|
|
4
|
+
|
|
5
|
+
[begin_description]
|
|
6
|
+
Default integrate times implementation.
|
|
7
|
+
[end_description]
|
|
8
|
+
|
|
9
|
+
Copyright 2009-2012 Karsten Ahnert
|
|
10
|
+
Copyright 2009-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_DETAIL_INTEGRATE_TIMES_HPP_INCLUDED
|
|
19
|
+
#define BOOST_NUMERIC_ODEINT_INTEGRATE_DETAIL_INTEGRATE_TIMES_HPP_INCLUDED
|
|
20
|
+
|
|
21
|
+
#include <stdexcept>
|
|
22
|
+
|
|
23
|
+
#include <boost/config.hpp>
|
|
24
|
+
#include <boost/range/algorithm/for_each.hpp>
|
|
25
|
+
|
|
26
|
+
#include <boost/numeric/odeint/util/unwrap_reference.hpp>
|
|
27
|
+
#include <boost/numeric/odeint/stepper/controlled_step_result.hpp>
|
|
28
|
+
#include <boost/numeric/odeint/util/detail/less_with_sign.hpp>
|
|
29
|
+
#include <boost/numeric/odeint/iterator/times_time_iterator.hpp>
|
|
30
|
+
#include <boost/numeric/odeint/iterator/integrate/detail/functors.hpp>
|
|
31
|
+
|
|
32
|
+
namespace boost {
|
|
33
|
+
namespace numeric {
|
|
34
|
+
namespace odeint {
|
|
35
|
+
namespace detail {
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
/*
|
|
40
|
+
* integrate_times for all steppers
|
|
41
|
+
*/
|
|
42
|
+
template< class Stepper , class System , class State , class TimeIterator , class Time , class Observer , class StepperTag >
|
|
43
|
+
size_t integrate_times(
|
|
44
|
+
Stepper stepper , System system , State &start_state ,
|
|
45
|
+
TimeIterator start_time , TimeIterator end_time , Time dt ,
|
|
46
|
+
Observer observer , StepperTag
|
|
47
|
+
)
|
|
48
|
+
{
|
|
49
|
+
size_t obs_calls = 0;
|
|
50
|
+
|
|
51
|
+
boost::for_each( make_times_time_range( stepper , system , start_state ,
|
|
52
|
+
start_time , end_time , dt ) ,
|
|
53
|
+
// should we use traits<Stepper>::state_type here instead of State? NO!
|
|
54
|
+
obs_caller< Observer >( obs_calls , observer ) );
|
|
55
|
+
|
|
56
|
+
// step integration steps gives step+1 observer calls
|
|
57
|
+
return obs_calls-1;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
} // namespace detail
|
|
62
|
+
} // namespace odeint
|
|
63
|
+
} // namespace numeric
|
|
64
|
+
} // namespace boost
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
#endif // BOOST_NUMERIC_ODEINT_INTEGRATE_DETAIL_INTEGRATE_ADAPTIVE_HPP_INCLUDED
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/*
|
|
2
|
+
[auto_generated]
|
|
3
|
+
boost/numeric/odeint/integrate/integrate.hpp
|
|
4
|
+
|
|
5
|
+
[begin_description]
|
|
6
|
+
Convenience methods which choose the stepper for the current ODE.
|
|
7
|
+
[end_description]
|
|
8
|
+
|
|
9
|
+
Copyright 2009-2011 Karsten Ahnert
|
|
10
|
+
Copyright 2009-2011 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_INTEGRATE_HPP_INCLUDED
|
|
19
|
+
#define BOOST_NUMERIC_ODEINT_INTEGRATE_INTEGRATE_HPP_INCLUDED
|
|
20
|
+
|
|
21
|
+
#include <boost/utility/enable_if.hpp>
|
|
22
|
+
|
|
23
|
+
#include <boost/numeric/odeint/stepper/runge_kutta_dopri5.hpp>
|
|
24
|
+
#include <boost/numeric/odeint/stepper/controlled_runge_kutta.hpp>
|
|
25
|
+
#include <boost/numeric/odeint/iterator/integrate/null_observer.hpp>
|
|
26
|
+
#include <boost/numeric/odeint/iterator/integrate/integrate_adaptive.hpp>
|
|
27
|
+
|
|
28
|
+
// for has_value_type trait
|
|
29
|
+
#include <boost/numeric/odeint/algebra/detail/extract_value_type.hpp>
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
namespace boost {
|
|
33
|
+
namespace numeric {
|
|
34
|
+
namespace odeint {
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
/*
|
|
38
|
+
* ToDo :
|
|
39
|
+
*
|
|
40
|
+
* determine type of dxdt for units
|
|
41
|
+
*
|
|
42
|
+
*/
|
|
43
|
+
template< class System , class State , class Time , class Observer >
|
|
44
|
+
typename boost::enable_if< typename has_value_type<State>::type , size_t >::type
|
|
45
|
+
integrate( System system , State &start_state , Time start_time , Time end_time , Time dt , Observer observer )
|
|
46
|
+
{
|
|
47
|
+
typedef controlled_runge_kutta< runge_kutta_dopri5< State , typename State::value_type , State , Time > > stepper_type;
|
|
48
|
+
return integrate_adaptive( stepper_type() , system , start_state , start_time , end_time , dt , observer );
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
/*
|
|
54
|
+
* the two overloads are needed in order to solve the forwarding problem
|
|
55
|
+
*/
|
|
56
|
+
template< class System , class State , class Time >
|
|
57
|
+
size_t integrate( System system , State &start_state , Time start_time , Time end_time , Time dt )
|
|
58
|
+
{
|
|
59
|
+
return integrate( system , start_state , start_time , end_time , dt , null_observer() );
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* \fn integrate( System system , State &start_state , Time start_time , Time end_time , Time dt , Observer observer )
|
|
65
|
+
* \brief Integrates the ODE.
|
|
66
|
+
*
|
|
67
|
+
* Integrates the ODE given by system from start_time to end_time starting
|
|
68
|
+
* with start_state as initial condition and dt as initial time step.
|
|
69
|
+
* This function uses a dense output dopri5 stepper and performs an adaptive
|
|
70
|
+
* integration with step size control, thus dt changes during the integration.
|
|
71
|
+
* This method uses standard error bounds of 1E-6.
|
|
72
|
+
* After each step, the observer is called.
|
|
73
|
+
*
|
|
74
|
+
* \param system The system function to solve, hence the r.h.s. of the
|
|
75
|
+
* ordinary differential equation.
|
|
76
|
+
* \param start_state The initial state.
|
|
77
|
+
* \param start_time Start time of the integration.
|
|
78
|
+
* \param end_time End time of the integration.
|
|
79
|
+
* \param dt Initial step size, will be adjusted during the integration.
|
|
80
|
+
* \param observer Observer that will be called after each time step.
|
|
81
|
+
* \return The number of steps performed.
|
|
82
|
+
*/
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* \fn integrate( System system , State &start_state , Time start_time , Time end_time , Time dt )
|
|
87
|
+
* \brief Integrates the ODE without observer calls.
|
|
88
|
+
*
|
|
89
|
+
* Integrates the ODE given by system from start_time to end_time starting
|
|
90
|
+
* with start_state as initial condition and dt as initial time step.
|
|
91
|
+
* This function uses a dense output dopri5 stepper and performs an adaptive
|
|
92
|
+
* integration with step size control, thus dt changes during the integration.
|
|
93
|
+
* This method uses standard error bounds of 1E-6.
|
|
94
|
+
* No observer is called.
|
|
95
|
+
*
|
|
96
|
+
* \param system The system function to solve, hence the r.h.s. of the
|
|
97
|
+
* ordinary differential equation.
|
|
98
|
+
* \param start_state The initial state.
|
|
99
|
+
* \param start_time Start time of the integration.
|
|
100
|
+
* \param end_time End time of the integration.
|
|
101
|
+
* \param dt Initial step size, will be adjusted during the integration.
|
|
102
|
+
* \return The number of steps performed.
|
|
103
|
+
*/
|
|
104
|
+
|
|
105
|
+
} // namespace odeint
|
|
106
|
+
} // namespace numeric
|
|
107
|
+
} // namespace boost
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
#endif // BOOST_NUMERIC_ODEINT_INTEGRATE_INTEGRATE_HPP_INCLUDED
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/*
|
|
2
|
+
[auto_generated]
|
|
3
|
+
boost/numeric/odeint/integrate/integrate_adaptive.hpp
|
|
4
|
+
|
|
5
|
+
[begin_description]
|
|
6
|
+
Adaptive integration of ODEs.
|
|
7
|
+
[end_description]
|
|
8
|
+
|
|
9
|
+
Copyright 2009-2011 Karsten Ahnert
|
|
10
|
+
Copyright 2009-2011 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_INTEGRATE_ADAPTIVE_HPP_INCLUDED
|
|
19
|
+
#define BOOST_NUMERIC_ODEINT_INTEGRATE_INTEGRATE_ADAPTIVE_HPP_INCLUDED
|
|
20
|
+
|
|
21
|
+
#include <boost/numeric/odeint/stepper/stepper_categories.hpp>
|
|
22
|
+
#include <boost/numeric/odeint/iterator/integrate/null_observer.hpp>
|
|
23
|
+
#include <boost/numeric/odeint/iterator/integrate/detail/integrate_adaptive.hpp>
|
|
24
|
+
|
|
25
|
+
namespace boost {
|
|
26
|
+
namespace numeric {
|
|
27
|
+
namespace odeint {
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
/*
|
|
31
|
+
* the two overloads are needed in order to solve the forwarding problem
|
|
32
|
+
*/
|
|
33
|
+
template< class Stepper , class System , class State , class Time , class Observer >
|
|
34
|
+
size_t integrate_adaptive(
|
|
35
|
+
Stepper stepper , System system , State &start_state ,
|
|
36
|
+
Time start_time , Time end_time , Time dt ,
|
|
37
|
+
Observer observer )
|
|
38
|
+
{
|
|
39
|
+
typedef typename odeint::unwrap_reference< Stepper >::type::stepper_category stepper_category;
|
|
40
|
+
return detail::integrate_adaptive(
|
|
41
|
+
stepper , system , start_state ,
|
|
42
|
+
start_time , end_time , dt ,
|
|
43
|
+
observer , stepper_category() );
|
|
44
|
+
|
|
45
|
+
/*
|
|
46
|
+
* Suggestion for a new extendable version:
|
|
47
|
+
*
|
|
48
|
+
* integrator_adaptive< Stepper , System, State , Time , Observer , typename Stepper::stepper_category > integrator;
|
|
49
|
+
* return integrator.run( stepper , system , start_state , start_time , end_time , dt , observer );
|
|
50
|
+
*/
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* \brief Second version to solve the forwarding problem,
|
|
55
|
+
* can be called with Boost.Range as start_state.
|
|
56
|
+
*/
|
|
57
|
+
template< class Stepper , class System , class State , class Time , class Observer >
|
|
58
|
+
size_t integrate_adaptive(
|
|
59
|
+
Stepper stepper , System system , const State &start_state ,
|
|
60
|
+
Time start_time , Time end_time , Time dt ,
|
|
61
|
+
Observer observer )
|
|
62
|
+
{
|
|
63
|
+
typedef typename odeint::unwrap_reference< Stepper >::type::stepper_category stepper_category;
|
|
64
|
+
return detail::integrate_adaptive(
|
|
65
|
+
stepper , system , start_state ,
|
|
66
|
+
start_time , end_time , dt ,
|
|
67
|
+
observer , stepper_category() );
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* \brief integrate_adaptive without an observer.
|
|
75
|
+
*/
|
|
76
|
+
template< class Stepper , class System , class State , class Time >
|
|
77
|
+
size_t integrate_adaptive(
|
|
78
|
+
Stepper stepper , System system , State &start_state ,
|
|
79
|
+
Time start_time , Time end_time , Time dt )
|
|
80
|
+
{
|
|
81
|
+
return integrate_adaptive( stepper , system , start_state , start_time , end_time , dt , null_observer() );
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* \brief Second version to solve the forwarding problem,
|
|
86
|
+
* can be called with Boost.Range as start_state.
|
|
87
|
+
*/
|
|
88
|
+
template< class Stepper , class System , class State , class Time >
|
|
89
|
+
size_t integrate_adaptive(
|
|
90
|
+
Stepper stepper , System system , const State &start_state ,
|
|
91
|
+
Time start_time , Time end_time , Time dt )
|
|
92
|
+
{
|
|
93
|
+
return integrate_adaptive( stepper , system , start_state , start_time , end_time , dt , null_observer() );
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
/************* DOXYGEN ************/
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* \fn integrate_adaptive( Stepper stepper , System system , State &start_state , Time start_time , Time end_time , Time dt , Observer observer )
|
|
101
|
+
* \brief Integrates the ODE with adaptive step size.
|
|
102
|
+
*
|
|
103
|
+
* This function integrates the ODE given by system with the given stepper.
|
|
104
|
+
* The observer is called after each step. If the stepper has no error
|
|
105
|
+
* control, the step size remains constant and the observer is called at
|
|
106
|
+
* equidistant time points t0+n*dt. If the stepper is a ControlledStepper,
|
|
107
|
+
* the step size is adjusted and the observer is called in non-equidistant
|
|
108
|
+
* intervals.
|
|
109
|
+
*
|
|
110
|
+
* \param stepper The stepper to be used for numerical integration.
|
|
111
|
+
* \param system Function/Functor defining the rhs of the ODE.
|
|
112
|
+
* \param start_state The initial condition x0.
|
|
113
|
+
* \param start_time The initial time t0.
|
|
114
|
+
* \param end_time The final integration time tend.
|
|
115
|
+
* \param dt The time step between observer calls, _not_ necessarily the
|
|
116
|
+
* time step of the integration.
|
|
117
|
+
* \param observer Function/Functor called at equidistant time intervals.
|
|
118
|
+
* \return The number of steps performed.
|
|
119
|
+
*/
|
|
120
|
+
|
|
121
|
+
} // namespace odeint
|
|
122
|
+
} // namespace numeric
|
|
123
|
+
} // namespace boost
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
#endif // BOOST_NUMERIC_ODEINT_INTEGRATE_INTEGRATE_ADAPTIVE_HPP_INCLUDED
|