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,161 @@
|
|
|
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 2012-2015 Mario Mulansky
|
|
10
|
+
Copyright 2012 Christoph Koke
|
|
11
|
+
Copyright 2012 Karsten Ahnert
|
|
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
|
+
#ifndef BOOST_NUMERIC_ODEINT_INTEGRATE_DETAIL_INTEGRATE_N_STEPS_HPP_INCLUDED
|
|
19
|
+
#define BOOST_NUMERIC_ODEINT_INTEGRATE_DETAIL_INTEGRATE_N_STEPS_HPP_INCLUDED
|
|
20
|
+
|
|
21
|
+
#include <boost/numeric/odeint/util/unwrap_reference.hpp>
|
|
22
|
+
#include <boost/numeric/odeint/stepper/stepper_categories.hpp>
|
|
23
|
+
#include <boost/numeric/odeint/integrate/detail/integrate_adaptive.hpp>
|
|
24
|
+
#include <boost/numeric/odeint/util/unit_helper.hpp>
|
|
25
|
+
|
|
26
|
+
#include <boost/numeric/odeint/util/detail/less_with_sign.hpp>
|
|
27
|
+
|
|
28
|
+
namespace boost {
|
|
29
|
+
namespace numeric {
|
|
30
|
+
namespace odeint {
|
|
31
|
+
namespace detail {
|
|
32
|
+
|
|
33
|
+
// forward declaration
|
|
34
|
+
template< class Stepper , class System , class State , class Time , class Observer >
|
|
35
|
+
size_t integrate_adaptive_checked(
|
|
36
|
+
Stepper stepper , System system , State &start_state ,
|
|
37
|
+
Time &start_time , Time end_time , Time &dt ,
|
|
38
|
+
Observer observer, controlled_stepper_tag
|
|
39
|
+
);
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
/* basic version */
|
|
43
|
+
template< class Stepper , class System , class State , class Time , class Observer>
|
|
44
|
+
Time integrate_n_steps(
|
|
45
|
+
Stepper stepper , System system , State &start_state ,
|
|
46
|
+
Time start_time , Time dt , size_t num_of_steps ,
|
|
47
|
+
Observer observer , stepper_tag )
|
|
48
|
+
{
|
|
49
|
+
typename odeint::unwrap_reference< Observer >::type &obs = observer;
|
|
50
|
+
typename odeint::unwrap_reference< Stepper >::type &st = stepper;
|
|
51
|
+
|
|
52
|
+
Time time = start_time;
|
|
53
|
+
|
|
54
|
+
for( size_t step = 0; step < num_of_steps ; ++step )
|
|
55
|
+
{
|
|
56
|
+
obs( start_state , time );
|
|
57
|
+
st.do_step( system , start_state , time , dt );
|
|
58
|
+
// direct computation of the time avoids error propagation happening when using time += dt
|
|
59
|
+
// we need clumsy type analysis to get boost units working here
|
|
60
|
+
time = start_time + static_cast< typename unit_value_type<Time>::type >( step+1 ) * dt;
|
|
61
|
+
}
|
|
62
|
+
obs( start_state , time );
|
|
63
|
+
|
|
64
|
+
return time;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
/* controlled version */
|
|
69
|
+
template< class Stepper , class System , class State , class Time , class Observer >
|
|
70
|
+
Time integrate_n_steps(
|
|
71
|
+
Stepper stepper , System system , State &start_state ,
|
|
72
|
+
Time start_time , Time dt , size_t num_of_steps ,
|
|
73
|
+
Observer observer , controlled_stepper_tag )
|
|
74
|
+
{
|
|
75
|
+
typename odeint::unwrap_reference< Observer >::type &obs = observer;
|
|
76
|
+
|
|
77
|
+
Time time = start_time;
|
|
78
|
+
Time time_step = dt;
|
|
79
|
+
|
|
80
|
+
for( size_t step = 0; step < num_of_steps ; ++step )
|
|
81
|
+
{
|
|
82
|
+
obs( start_state , time );
|
|
83
|
+
// integrate_adaptive_checked uses the given checker to throw if an overflow occurs
|
|
84
|
+
detail::integrate_adaptive(stepper, system, start_state, time, static_cast<Time>(time + time_step), dt,
|
|
85
|
+
null_observer(), controlled_stepper_tag());
|
|
86
|
+
// direct computation of the time avoids error propagation happening when using time += dt
|
|
87
|
+
// we need clumsy type analysis to get boost units working here
|
|
88
|
+
time = start_time + static_cast< typename unit_value_type<Time>::type >(step+1) * time_step;
|
|
89
|
+
}
|
|
90
|
+
obs( start_state , time );
|
|
91
|
+
|
|
92
|
+
return time;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
/* dense output version */
|
|
97
|
+
template< class Stepper , class System , class State , class Time , class Observer >
|
|
98
|
+
Time integrate_n_steps(
|
|
99
|
+
Stepper stepper , System system , State &start_state ,
|
|
100
|
+
Time start_time , Time dt , size_t num_of_steps ,
|
|
101
|
+
Observer observer , dense_output_stepper_tag )
|
|
102
|
+
{
|
|
103
|
+
typename odeint::unwrap_reference< Observer >::type &obs = observer;
|
|
104
|
+
typename odeint::unwrap_reference< Stepper >::type &st = stepper;
|
|
105
|
+
|
|
106
|
+
Time time = start_time;
|
|
107
|
+
const Time end_time = start_time + static_cast< typename unit_value_type<Time>::type >(num_of_steps) * dt;
|
|
108
|
+
|
|
109
|
+
st.initialize( start_state , time , dt );
|
|
110
|
+
|
|
111
|
+
size_t step = 0;
|
|
112
|
+
|
|
113
|
+
while( step < num_of_steps )
|
|
114
|
+
{
|
|
115
|
+
while( less_with_sign( time , st.current_time() , st.current_time_step() ) )
|
|
116
|
+
{
|
|
117
|
+
st.calc_state( time , start_state );
|
|
118
|
+
obs( start_state , time );
|
|
119
|
+
++step;
|
|
120
|
+
// direct computation of the time avoids error propagation happening when using time += dt
|
|
121
|
+
// we need clumsy type analysis to get boost units working here
|
|
122
|
+
time = start_time + static_cast< typename unit_value_type<Time>::type >(step) * dt;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
// we have not reached the end, do another real step
|
|
126
|
+
if( less_with_sign( static_cast<Time>(st.current_time()+st.current_time_step()) ,
|
|
127
|
+
end_time ,
|
|
128
|
+
st.current_time_step() ) )
|
|
129
|
+
{
|
|
130
|
+
st.do_step( system );
|
|
131
|
+
}
|
|
132
|
+
else if( less_with_sign( st.current_time() , end_time , st.current_time_step() ) )
|
|
133
|
+
{ // do the last step ending exactly on the end point
|
|
134
|
+
st.initialize( st.current_state() , st.current_time() , static_cast<Time>(end_time - st.current_time()) );
|
|
135
|
+
st.do_step( system );
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
// make sure we really end exactly where we should end
|
|
140
|
+
while( st.current_time() < end_time )
|
|
141
|
+
{
|
|
142
|
+
if( less_with_sign( end_time ,
|
|
143
|
+
static_cast<Time>(st.current_time()+st.current_time_step()) ,
|
|
144
|
+
st.current_time_step() ) )
|
|
145
|
+
st.initialize( st.current_state() , st.current_time() , static_cast<Time>(end_time - st.current_time()) );
|
|
146
|
+
st.do_step( system );
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
// observation at final point
|
|
150
|
+
obs( st.current_state() , end_time );
|
|
151
|
+
|
|
152
|
+
return time;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
#endif /* BOOST_NUMERIC_ODEINT_INTEGRATE_DETAIL_INTEGRATE_N_STEPS_HPP_INCLUDED */
|
|
@@ -0,0 +1,179 @@
|
|
|
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 2011-2015 Mario Mulansky
|
|
10
|
+
Copyright 2012 Karsten Ahnert
|
|
11
|
+
Copyright 2012 Christoph Koke
|
|
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_INTEGRATE_DETAIL_INTEGRATE_TIMES_HPP_INCLUDED
|
|
20
|
+
#define BOOST_NUMERIC_ODEINT_INTEGRATE_DETAIL_INTEGRATE_TIMES_HPP_INCLUDED
|
|
21
|
+
|
|
22
|
+
#include <stdexcept>
|
|
23
|
+
|
|
24
|
+
#include <boost/config.hpp>
|
|
25
|
+
#include <boost/throw_exception.hpp>
|
|
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/integrate/max_step_checker.hpp>
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
namespace boost {
|
|
33
|
+
namespace numeric {
|
|
34
|
+
namespace odeint {
|
|
35
|
+
namespace detail {
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
/*
|
|
40
|
+
* integrate_times for simple stepper
|
|
41
|
+
*/
|
|
42
|
+
template<class Stepper, class System, class State, class TimeIterator, class Time, class Observer>
|
|
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 , stepper_tag
|
|
47
|
+
)
|
|
48
|
+
{
|
|
49
|
+
typedef typename odeint::unwrap_reference< Stepper >::type stepper_type;
|
|
50
|
+
typedef typename odeint::unwrap_reference< Observer >::type observer_type;
|
|
51
|
+
|
|
52
|
+
stepper_type &st = stepper;
|
|
53
|
+
observer_type &obs = observer;
|
|
54
|
+
typedef typename unit_value_type<Time>::type time_type;
|
|
55
|
+
|
|
56
|
+
size_t steps = 0;
|
|
57
|
+
Time current_dt = dt;
|
|
58
|
+
while( true )
|
|
59
|
+
{
|
|
60
|
+
Time current_time = *start_time++;
|
|
61
|
+
obs( start_state , current_time );
|
|
62
|
+
if( start_time == end_time )
|
|
63
|
+
break;
|
|
64
|
+
while( less_with_sign( current_time , static_cast<time_type>(*start_time) , current_dt ) )
|
|
65
|
+
{
|
|
66
|
+
current_dt = min_abs( dt , *start_time - current_time );
|
|
67
|
+
st.do_step( system , start_state , current_time , current_dt );
|
|
68
|
+
current_time += current_dt;
|
|
69
|
+
steps++;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return steps;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/*
|
|
76
|
+
* integrate_times for controlled stepper
|
|
77
|
+
*/
|
|
78
|
+
template< class Stepper , class System , class State , class TimeIterator , class Time , class Observer >
|
|
79
|
+
size_t integrate_times(
|
|
80
|
+
Stepper stepper , System system , State &start_state ,
|
|
81
|
+
TimeIterator start_time , TimeIterator end_time , Time dt ,
|
|
82
|
+
Observer observer , controlled_stepper_tag
|
|
83
|
+
)
|
|
84
|
+
{
|
|
85
|
+
typename odeint::unwrap_reference< Observer >::type &obs = observer;
|
|
86
|
+
typename odeint::unwrap_reference< Stepper >::type &st = stepper;
|
|
87
|
+
typedef typename unit_value_type<Time>::type time_type;
|
|
88
|
+
|
|
89
|
+
failed_step_checker fail_checker; // to throw a runtime_error if step size adjustment fails
|
|
90
|
+
size_t steps = 0;
|
|
91
|
+
while( true )
|
|
92
|
+
{
|
|
93
|
+
Time current_time = *start_time++;
|
|
94
|
+
obs( start_state , current_time );
|
|
95
|
+
if( start_time == end_time )
|
|
96
|
+
break;
|
|
97
|
+
while( less_with_sign( current_time , static_cast<time_type>(*start_time) , dt ) )
|
|
98
|
+
{
|
|
99
|
+
// adjust stepsize to end up exactly at the observation point
|
|
100
|
+
Time current_dt = min_abs( dt , *start_time - current_time );
|
|
101
|
+
if( st.try_step( system , start_state , current_time , current_dt ) == success )
|
|
102
|
+
{
|
|
103
|
+
++steps;
|
|
104
|
+
// successful step -> reset the fail counter, see #173
|
|
105
|
+
fail_checker.reset();
|
|
106
|
+
// continue with the original step size if dt was reduced due to observation
|
|
107
|
+
dt = max_abs( dt , current_dt );
|
|
108
|
+
}
|
|
109
|
+
else
|
|
110
|
+
{
|
|
111
|
+
fail_checker(); // check for possible overflow of failed steps in step size adjustment
|
|
112
|
+
dt = current_dt;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
return steps;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/*
|
|
120
|
+
* integrate_times for dense output stepper
|
|
121
|
+
*/
|
|
122
|
+
template< class Stepper , class System , class State , class TimeIterator , class Time , class Observer >
|
|
123
|
+
size_t integrate_times(
|
|
124
|
+
Stepper stepper , System system , State &start_state ,
|
|
125
|
+
TimeIterator start_time , TimeIterator end_time , Time dt ,
|
|
126
|
+
Observer observer , dense_output_stepper_tag
|
|
127
|
+
)
|
|
128
|
+
{
|
|
129
|
+
typename odeint::unwrap_reference< Observer >::type &obs = observer;
|
|
130
|
+
typename odeint::unwrap_reference< Stepper >::type &st = stepper;
|
|
131
|
+
|
|
132
|
+
typedef typename unit_value_type<Time>::type time_type;
|
|
133
|
+
|
|
134
|
+
if( start_time == end_time )
|
|
135
|
+
return 0;
|
|
136
|
+
|
|
137
|
+
TimeIterator last_time_iterator = end_time;
|
|
138
|
+
--last_time_iterator;
|
|
139
|
+
Time last_time_point = static_cast<time_type>(*last_time_iterator);
|
|
140
|
+
|
|
141
|
+
st.initialize( start_state , *start_time , dt );
|
|
142
|
+
obs( start_state , *start_time++ );
|
|
143
|
+
|
|
144
|
+
size_t count = 0;
|
|
145
|
+
while( start_time != end_time )
|
|
146
|
+
{
|
|
147
|
+
while( ( start_time != end_time ) && less_eq_with_sign( static_cast<time_type>(*start_time) , st.current_time() , st.current_time_step() ) )
|
|
148
|
+
{
|
|
149
|
+
st.calc_state( *start_time , start_state );
|
|
150
|
+
obs( start_state , *start_time );
|
|
151
|
+
start_time++;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
// we have not reached the end, do another real step
|
|
155
|
+
if( less_eq_with_sign( st.current_time() + st.current_time_step() ,
|
|
156
|
+
last_time_point ,
|
|
157
|
+
st.current_time_step() ) )
|
|
158
|
+
{
|
|
159
|
+
st.do_step( system );
|
|
160
|
+
++count;
|
|
161
|
+
}
|
|
162
|
+
else if( start_time != end_time )
|
|
163
|
+
{ // do the last step ending exactly on the end point
|
|
164
|
+
st.initialize( st.current_state() , st.current_time() , last_time_point - st.current_time() );
|
|
165
|
+
st.do_step( system );
|
|
166
|
+
++count;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
return count;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
} // namespace detail
|
|
174
|
+
} // namespace odeint
|
|
175
|
+
} // namespace numeric
|
|
176
|
+
} // namespace boost
|
|
177
|
+
|
|
178
|
+
|
|
179
|
+
#endif // BOOST_NUMERIC_ODEINT_INTEGRATE_DETAIL_INTEGRATE_ADAPTIVE_HPP_INCLUDED
|
|
@@ -0,0 +1,133 @@
|
|
|
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 2011-2013 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_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/integrate/null_observer.hpp>
|
|
26
|
+
#include <boost/numeric/odeint/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
|
+
template< class Value , class System , class State , class Time , class Observer >
|
|
52
|
+
size_t
|
|
53
|
+
integrate( System system , State &start_state , Time start_time , Time end_time , Time dt , Observer observer )
|
|
54
|
+
{
|
|
55
|
+
typedef controlled_runge_kutta< runge_kutta_dopri5< State , Value , State , Time > > stepper_type;
|
|
56
|
+
return integrate_adaptive( stepper_type() , system , start_state , start_time , end_time , dt , observer );
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
/*
|
|
63
|
+
* the two overloads are needed in order to solve the forwarding problem
|
|
64
|
+
*/
|
|
65
|
+
template< class System , class State , class Time >
|
|
66
|
+
size_t integrate( System system , State &start_state , Time start_time , Time end_time , Time dt )
|
|
67
|
+
{
|
|
68
|
+
return integrate( system , start_state , start_time , end_time , dt , null_observer() );
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
template< class Value , class System , class State , class Time >
|
|
72
|
+
size_t integrate( System system , State &start_state , Time start_time , Time end_time , Time dt )
|
|
73
|
+
{
|
|
74
|
+
return integrate< Value >( system , start_state , start_time , end_time , dt , null_observer() );
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* \fn integrate( System system , State &start_state , Time start_time , Time end_time , Time dt , Observer observer )
|
|
81
|
+
* \brief Integrates the ODE.
|
|
82
|
+
*
|
|
83
|
+
* Integrates the ODE given by system from start_time to end_time starting
|
|
84
|
+
* with start_state as initial condition and dt as initial time step.
|
|
85
|
+
* This function uses a dense output dopri5 stepper and performs an adaptive
|
|
86
|
+
* integration with step size control, thus dt changes during the integration.
|
|
87
|
+
* This method uses standard error bounds of 1E-6.
|
|
88
|
+
* After each step, the observer is called.
|
|
89
|
+
*
|
|
90
|
+
* \attention A second version of this function template exists which explicitly
|
|
91
|
+
* expects the value type as template parameter, i.e. integrate< double >( sys , x , t0 , t1 , dt , obs );
|
|
92
|
+
*
|
|
93
|
+
* \param system The system function to solve, hence the r.h.s. of the
|
|
94
|
+
* ordinary differential equation.
|
|
95
|
+
* \param start_state The initial state.
|
|
96
|
+
* \param start_time Start time of the integration.
|
|
97
|
+
* \param end_time End time of the integration.
|
|
98
|
+
* \param dt Initial step size, will be adjusted during the integration.
|
|
99
|
+
* \param observer Observer that will be called after each time step.
|
|
100
|
+
* \return The number of steps performed.
|
|
101
|
+
*/
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* \fn integrate( System system , State &start_state , Time start_time , Time end_time , Time dt )
|
|
106
|
+
* \brief Integrates the ODE without observer calls.
|
|
107
|
+
*
|
|
108
|
+
* Integrates the ODE given by system from start_time to end_time starting
|
|
109
|
+
* with start_state as initial condition and dt as initial time step.
|
|
110
|
+
* This function uses a dense output dopri5 stepper and performs an adaptive
|
|
111
|
+
* integration with step size control, thus dt changes during the integration.
|
|
112
|
+
* This method uses standard error bounds of 1E-6.
|
|
113
|
+
* No observer is called.
|
|
114
|
+
*
|
|
115
|
+
* \attention A second version of this function template exists which explicitly
|
|
116
|
+
* expects the value type as template parameter, i.e. integrate< double >( sys , x , t0 , t1 , dt );
|
|
117
|
+
*
|
|
118
|
+
* \param system The system function to solve, hence the r.h.s. of the
|
|
119
|
+
* ordinary differential equation.
|
|
120
|
+
* \param start_state The initial state.
|
|
121
|
+
* \param start_time Start time of the integration.
|
|
122
|
+
* \param end_time End time of the integration.
|
|
123
|
+
* \param dt Initial step size, will be adjusted during the integration.
|
|
124
|
+
* \return The number of steps performed.
|
|
125
|
+
*/
|
|
126
|
+
|
|
127
|
+
} // namespace odeint
|
|
128
|
+
} // namespace numeric
|
|
129
|
+
} // namespace boost
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
#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 2011-2013 Karsten Ahnert
|
|
10
|
+
Copyright 2011-2015 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/integrate/null_observer.hpp>
|
|
23
|
+
#include <boost/numeric/odeint/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
|