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,42 @@
|
|
|
1
|
+
/*
|
|
2
|
+
[auto_generated]
|
|
3
|
+
boost/numeric/odeint/stepper/controlled_step_result.hpp
|
|
4
|
+
|
|
5
|
+
[begin_description]
|
|
6
|
+
Defines the result type for all controlled stepper.
|
|
7
|
+
[end_description]
|
|
8
|
+
|
|
9
|
+
Copyright 2011-2013 Karsten Ahnert
|
|
10
|
+
Copyright 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_STEPPER_CONTROLLED_STEP_RESULT_HPP_INCLUDED
|
|
19
|
+
#define BOOST_NUMERIC_ODEINT_STEPPER_CONTROLLED_STEP_RESULT_HPP_INCLUDED
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
namespace boost {
|
|
23
|
+
namespace numeric {
|
|
24
|
+
namespace odeint {
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* \enum controlled_step_result
|
|
28
|
+
*
|
|
29
|
+
* \brief Enum representing the return values of the controlled steppers.
|
|
30
|
+
*/
|
|
31
|
+
typedef enum
|
|
32
|
+
{
|
|
33
|
+
success , /**< The trial step was successful, hence the state and the time have been advanced. */
|
|
34
|
+
fail /**< The step was not successful and might possibly be repeated with a small step size. */
|
|
35
|
+
} controlled_step_result;
|
|
36
|
+
|
|
37
|
+
} // namespace odeint
|
|
38
|
+
} // numeric
|
|
39
|
+
} // boost
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
#endif // BOOST_NUMERIC_ODEINT_STEPPER_CONTROLLED_STEP_RESULT_HPP_INCLUDED
|
|
@@ -0,0 +1,476 @@
|
|
|
1
|
+
/*
|
|
2
|
+
[auto_generated]
|
|
3
|
+
boost/numeric/odeint/stepper/dense_output_runge_kutta.hpp
|
|
4
|
+
|
|
5
|
+
[begin_description]
|
|
6
|
+
Implementation of the Dense-output stepper for all steppers. Note, that this class does
|
|
7
|
+
not computes the result but serves as an interface.
|
|
8
|
+
[end_description]
|
|
9
|
+
|
|
10
|
+
Copyright 2011-2013 Karsten Ahnert
|
|
11
|
+
Copyright 2011-2015 Mario Mulansky
|
|
12
|
+
Copyright 2012 Christoph Koke
|
|
13
|
+
|
|
14
|
+
Distributed under the Boost Software License, Version 1.0.
|
|
15
|
+
(See accompanying file LICENSE_1_0.txt or
|
|
16
|
+
copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
#ifndef BOOST_NUMERIC_ODEINT_STEPPER_DENSE_OUTPUT_RUNGE_KUTTA_HPP_INCLUDED
|
|
21
|
+
#define BOOST_NUMERIC_ODEINT_STEPPER_DENSE_OUTPUT_RUNGE_KUTTA_HPP_INCLUDED
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
#include <utility>
|
|
25
|
+
#include <stdexcept>
|
|
26
|
+
|
|
27
|
+
#include <boost/throw_exception.hpp>
|
|
28
|
+
|
|
29
|
+
#include <boost/numeric/odeint/util/bind.hpp>
|
|
30
|
+
|
|
31
|
+
#include <boost/numeric/odeint/util/copy.hpp>
|
|
32
|
+
|
|
33
|
+
#include <boost/numeric/odeint/util/state_wrapper.hpp>
|
|
34
|
+
#include <boost/numeric/odeint/util/is_resizeable.hpp>
|
|
35
|
+
#include <boost/numeric/odeint/util/resizer.hpp>
|
|
36
|
+
|
|
37
|
+
#include <boost/numeric/odeint/stepper/controlled_step_result.hpp>
|
|
38
|
+
#include <boost/numeric/odeint/stepper/stepper_categories.hpp>
|
|
39
|
+
|
|
40
|
+
#include <boost/numeric/odeint/integrate/max_step_checker.hpp>
|
|
41
|
+
|
|
42
|
+
namespace boost {
|
|
43
|
+
namespace numeric {
|
|
44
|
+
namespace odeint {
|
|
45
|
+
|
|
46
|
+
template< class Stepper , class StepperCategory = typename Stepper::stepper_category >
|
|
47
|
+
class dense_output_runge_kutta;
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* \brief The class representing dense-output Runge-Kutta steppers.
|
|
52
|
+
* \note In this stepper, the initialize method has to be called before using
|
|
53
|
+
* the do_step method.
|
|
54
|
+
*
|
|
55
|
+
* The dense-output functionality allows to interpolate the solution between
|
|
56
|
+
* subsequent integration points using intermediate results obtained during the
|
|
57
|
+
* computation. This version works based on a normal stepper without step-size
|
|
58
|
+
* control.
|
|
59
|
+
*
|
|
60
|
+
*
|
|
61
|
+
* \tparam Stepper The stepper type of the underlying algorithm.
|
|
62
|
+
*/
|
|
63
|
+
template< class Stepper >
|
|
64
|
+
class dense_output_runge_kutta< Stepper , stepper_tag >
|
|
65
|
+
{
|
|
66
|
+
|
|
67
|
+
public:
|
|
68
|
+
|
|
69
|
+
/*
|
|
70
|
+
* We do not need all typedefs.
|
|
71
|
+
*/
|
|
72
|
+
typedef Stepper stepper_type;
|
|
73
|
+
typedef typename stepper_type::state_type state_type;
|
|
74
|
+
typedef typename stepper_type::wrapped_state_type wrapped_state_type;
|
|
75
|
+
typedef typename stepper_type::value_type value_type;
|
|
76
|
+
typedef typename stepper_type::deriv_type deriv_type;
|
|
77
|
+
typedef typename stepper_type::wrapped_deriv_type wrapped_deriv_type;
|
|
78
|
+
typedef typename stepper_type::time_type time_type;
|
|
79
|
+
typedef typename stepper_type::algebra_type algebra_type;
|
|
80
|
+
typedef typename stepper_type::operations_type operations_type;
|
|
81
|
+
typedef typename stepper_type::resizer_type resizer_type;
|
|
82
|
+
typedef dense_output_stepper_tag stepper_category;
|
|
83
|
+
typedef dense_output_runge_kutta< Stepper > dense_output_stepper_type;
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* \brief Constructs the dense_output_runge_kutta class. An instance of the
|
|
88
|
+
* underlying stepper can be provided.
|
|
89
|
+
* \param stepper An instance of the underlying stepper.
|
|
90
|
+
*/
|
|
91
|
+
dense_output_runge_kutta( const stepper_type &stepper = stepper_type() )
|
|
92
|
+
: m_stepper( stepper ) , m_resizer() ,
|
|
93
|
+
m_x1() , m_x2() , m_current_state_x1( true ) ,
|
|
94
|
+
m_t() , m_t_old() , m_dt()
|
|
95
|
+
{ }
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* \brief Initializes the stepper. Has to be called before do_step can be
|
|
100
|
+
* used to set the initial conditions and the step size.
|
|
101
|
+
* \param x0 The initial state of the ODE which should be solved.
|
|
102
|
+
* \param t0 The initial time, at which the step should be performed.
|
|
103
|
+
* \param dt0 The step size.
|
|
104
|
+
*/
|
|
105
|
+
template< class StateType >
|
|
106
|
+
void initialize( const StateType &x0 , time_type t0 , time_type dt0 )
|
|
107
|
+
{
|
|
108
|
+
m_resizer.adjust_size(x0, [this](auto&& arg) { return this->resize_impl<StateType>(std::forward<decltype(arg)>(arg)); });
|
|
109
|
+
boost::numeric::odeint::copy( x0 , get_current_state() );
|
|
110
|
+
m_t = t0;
|
|
111
|
+
m_dt = dt0;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* \brief Does one time step.
|
|
116
|
+
* \note initialize has to be called before using this method to set the
|
|
117
|
+
* initial conditions x,t and the stepsize.
|
|
118
|
+
* \param system The system function to solve, hence the r.h.s. of the ordinary differential equation. It must fulfill the
|
|
119
|
+
* Simple System concept.
|
|
120
|
+
* \return Pair with start and end time of the integration step.
|
|
121
|
+
*/
|
|
122
|
+
template< class System >
|
|
123
|
+
std::pair< time_type , time_type > do_step( System system )
|
|
124
|
+
{
|
|
125
|
+
m_stepper.do_step( system , get_current_state() , m_t , get_old_state() , m_dt );
|
|
126
|
+
m_t_old = m_t;
|
|
127
|
+
m_t += m_dt;
|
|
128
|
+
toggle_current_state();
|
|
129
|
+
return std::make_pair( m_t_old , m_t );
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
/*
|
|
133
|
+
* The next two overloads are needed to solve the forwarding problem
|
|
134
|
+
*/
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* \brief Calculates the solution at an intermediate point.
|
|
138
|
+
* \param t The time at which the solution should be calculated, has to be
|
|
139
|
+
* in the current time interval.
|
|
140
|
+
* \param x The output variable where the result is written into.
|
|
141
|
+
*/
|
|
142
|
+
template< class StateOut >
|
|
143
|
+
void calc_state( time_type t , StateOut &x ) const
|
|
144
|
+
{
|
|
145
|
+
if( t == current_time() )
|
|
146
|
+
{
|
|
147
|
+
boost::numeric::odeint::copy( get_current_state() , x );
|
|
148
|
+
}
|
|
149
|
+
m_stepper.calc_state( x , t , get_old_state() , m_t_old , get_current_state() , m_t );
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
/**
|
|
153
|
+
* \brief Calculates the solution at an intermediate point. Solves the forwarding problem
|
|
154
|
+
* \param t The time at which the solution should be calculated, has to be
|
|
155
|
+
* in the current time interval.
|
|
156
|
+
* \param x The output variable where the result is written into, can be a boost range.
|
|
157
|
+
*/
|
|
158
|
+
template< class StateOut >
|
|
159
|
+
void calc_state( time_type t , const StateOut &x ) const
|
|
160
|
+
{
|
|
161
|
+
m_stepper.calc_state( x , t , get_old_state() , m_t_old , get_current_state() , m_t );
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
/**
|
|
165
|
+
* \brief Adjust the size of all temporaries in the stepper manually.
|
|
166
|
+
* \param x A state from which the size of the temporaries to be resized is deduced.
|
|
167
|
+
*/
|
|
168
|
+
template< class StateType >
|
|
169
|
+
void adjust_size( const StateType &x )
|
|
170
|
+
{
|
|
171
|
+
resize_impl( x );
|
|
172
|
+
m_stepper.stepper().resize( x );
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
/**
|
|
176
|
+
* \brief Returns the current state of the solution.
|
|
177
|
+
* \return The current state of the solution x(t).
|
|
178
|
+
*/
|
|
179
|
+
const state_type& current_state( void ) const
|
|
180
|
+
{
|
|
181
|
+
return get_current_state();
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
/**
|
|
185
|
+
* \brief Returns the current time of the solution.
|
|
186
|
+
* \return The current time of the solution t.
|
|
187
|
+
*/
|
|
188
|
+
time_type current_time( void ) const
|
|
189
|
+
{
|
|
190
|
+
return m_t;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
/**
|
|
194
|
+
* \brief Returns the last state of the solution.
|
|
195
|
+
* \return The last state of the solution x(t-dt).
|
|
196
|
+
*/
|
|
197
|
+
const state_type& previous_state( void ) const
|
|
198
|
+
{
|
|
199
|
+
return get_old_state();
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
/**
|
|
203
|
+
* \brief Returns the last time of the solution.
|
|
204
|
+
* \return The last time of the solution t-dt.
|
|
205
|
+
*/
|
|
206
|
+
time_type previous_time( void ) const
|
|
207
|
+
{
|
|
208
|
+
return m_t_old;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
/**
|
|
212
|
+
* \brief Returns the current time step.
|
|
213
|
+
* \return dt.
|
|
214
|
+
*/
|
|
215
|
+
time_type current_time_step( void ) const
|
|
216
|
+
{
|
|
217
|
+
return m_dt;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
|
|
221
|
+
private:
|
|
222
|
+
|
|
223
|
+
state_type& get_current_state( void )
|
|
224
|
+
{
|
|
225
|
+
return m_current_state_x1 ? m_x1.m_v : m_x2.m_v ;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
const state_type& get_current_state( void ) const
|
|
229
|
+
{
|
|
230
|
+
return m_current_state_x1 ? m_x1.m_v : m_x2.m_v ;
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
state_type& get_old_state( void )
|
|
234
|
+
{
|
|
235
|
+
return m_current_state_x1 ? m_x2.m_v : m_x1.m_v ;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
const state_type& get_old_state( void ) const
|
|
239
|
+
{
|
|
240
|
+
return m_current_state_x1 ? m_x2.m_v : m_x1.m_v ;
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
void toggle_current_state( void )
|
|
244
|
+
{
|
|
245
|
+
m_current_state_x1 = ! m_current_state_x1;
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
|
|
249
|
+
template< class StateIn >
|
|
250
|
+
bool resize_impl( const StateIn &x )
|
|
251
|
+
{
|
|
252
|
+
bool resized = false;
|
|
253
|
+
resized |= adjust_size_by_resizeability( m_x1 , x , typename is_resizeable<state_type>::type() );
|
|
254
|
+
resized |= adjust_size_by_resizeability( m_x2 , x , typename is_resizeable<state_type>::type() );
|
|
255
|
+
return resized;
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
|
|
259
|
+
stepper_type m_stepper;
|
|
260
|
+
resizer_type m_resizer;
|
|
261
|
+
wrapped_state_type m_x1 , m_x2;
|
|
262
|
+
bool m_current_state_x1; // if true, the current state is m_x1
|
|
263
|
+
time_type m_t , m_t_old , m_dt;
|
|
264
|
+
|
|
265
|
+
};
|
|
266
|
+
|
|
267
|
+
|
|
268
|
+
|
|
269
|
+
|
|
270
|
+
|
|
271
|
+
/**
|
|
272
|
+
* \brief The class representing dense-output Runge-Kutta steppers with FSAL property.
|
|
273
|
+
*
|
|
274
|
+
* The interface is the same as for dense_output_runge_kutta< Stepper , stepper_tag >.
|
|
275
|
+
* This class provides dense output functionality based on methods with step size controlled
|
|
276
|
+
*
|
|
277
|
+
*
|
|
278
|
+
* \tparam Stepper The stepper type of the underlying algorithm.
|
|
279
|
+
*/
|
|
280
|
+
template< class Stepper >
|
|
281
|
+
class dense_output_runge_kutta< Stepper , explicit_controlled_stepper_fsal_tag >
|
|
282
|
+
{
|
|
283
|
+
public:
|
|
284
|
+
|
|
285
|
+
/*
|
|
286
|
+
* We do not need all typedefs.
|
|
287
|
+
*/
|
|
288
|
+
typedef Stepper controlled_stepper_type;
|
|
289
|
+
|
|
290
|
+
typedef typename controlled_stepper_type::stepper_type stepper_type;
|
|
291
|
+
typedef typename stepper_type::state_type state_type;
|
|
292
|
+
typedef typename stepper_type::wrapped_state_type wrapped_state_type;
|
|
293
|
+
typedef typename stepper_type::value_type value_type;
|
|
294
|
+
typedef typename stepper_type::deriv_type deriv_type;
|
|
295
|
+
typedef typename stepper_type::wrapped_deriv_type wrapped_deriv_type;
|
|
296
|
+
typedef typename stepper_type::time_type time_type;
|
|
297
|
+
typedef typename stepper_type::algebra_type algebra_type;
|
|
298
|
+
typedef typename stepper_type::operations_type operations_type;
|
|
299
|
+
typedef typename stepper_type::resizer_type resizer_type;
|
|
300
|
+
typedef dense_output_stepper_tag stepper_category;
|
|
301
|
+
typedef dense_output_runge_kutta< Stepper > dense_output_stepper_type;
|
|
302
|
+
|
|
303
|
+
|
|
304
|
+
dense_output_runge_kutta( const controlled_stepper_type &stepper = controlled_stepper_type() )
|
|
305
|
+
: m_stepper( stepper ) , m_resizer() ,
|
|
306
|
+
m_current_state_x1( true ) ,
|
|
307
|
+
m_x1() , m_x2() , m_dxdt1() , m_dxdt2() ,
|
|
308
|
+
m_t() , m_t_old() , m_dt() ,
|
|
309
|
+
m_is_deriv_initialized( false )
|
|
310
|
+
{ }
|
|
311
|
+
|
|
312
|
+
|
|
313
|
+
template< class StateType >
|
|
314
|
+
void initialize( const StateType &x0 , time_type t0 , time_type dt0 )
|
|
315
|
+
{
|
|
316
|
+
m_resizer.adjust_size(x0, [this](auto&& arg) { return this->resize<StateType>(std::forward<decltype(arg)>(arg)); });
|
|
317
|
+
boost::numeric::odeint::copy( x0 , get_current_state() );
|
|
318
|
+
m_t = t0;
|
|
319
|
+
m_dt = dt0;
|
|
320
|
+
m_is_deriv_initialized = false;
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
template< class System >
|
|
324
|
+
std::pair< time_type , time_type > do_step( System system )
|
|
325
|
+
{
|
|
326
|
+
if( !m_is_deriv_initialized )
|
|
327
|
+
{
|
|
328
|
+
typename odeint::unwrap_reference< System >::type &sys = system;
|
|
329
|
+
sys( get_current_state() , get_current_deriv() , m_t );
|
|
330
|
+
m_is_deriv_initialized = true;
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
failed_step_checker fail_checker; // to throw a runtime_error if step size adjustment fails
|
|
334
|
+
controlled_step_result res = fail;
|
|
335
|
+
m_t_old = m_t;
|
|
336
|
+
do
|
|
337
|
+
{
|
|
338
|
+
res = m_stepper.try_step( system , get_current_state() , get_current_deriv() , m_t ,
|
|
339
|
+
get_old_state() , get_old_deriv() , m_dt );
|
|
340
|
+
fail_checker(); // check for overflow of failed steps
|
|
341
|
+
}
|
|
342
|
+
while( res == fail );
|
|
343
|
+
toggle_current_state();
|
|
344
|
+
return std::make_pair( m_t_old , m_t );
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
|
|
348
|
+
/*
|
|
349
|
+
* The two overloads are needed in order to solve the forwarding problem.
|
|
350
|
+
*/
|
|
351
|
+
template< class StateOut >
|
|
352
|
+
void calc_state( time_type t , StateOut &x ) const
|
|
353
|
+
{
|
|
354
|
+
m_stepper.stepper().calc_state( t , x , get_old_state() , get_old_deriv() , m_t_old ,
|
|
355
|
+
get_current_state() , get_current_deriv() , m_t );
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
template< class StateOut >
|
|
359
|
+
void calc_state( time_type t , const StateOut &x ) const
|
|
360
|
+
{
|
|
361
|
+
m_stepper.stepper().calc_state( t , x , get_old_state() , get_old_deriv() , m_t_old ,
|
|
362
|
+
get_current_state() , get_current_deriv() , m_t );
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
|
|
366
|
+
template< class StateIn >
|
|
367
|
+
bool resize( const StateIn &x )
|
|
368
|
+
{
|
|
369
|
+
bool resized = false;
|
|
370
|
+
resized |= adjust_size_by_resizeability( m_x1 , x , typename is_resizeable<state_type>::type() );
|
|
371
|
+
resized |= adjust_size_by_resizeability( m_x2 , x , typename is_resizeable<state_type>::type() );
|
|
372
|
+
resized |= adjust_size_by_resizeability( m_dxdt1 , x , typename is_resizeable<deriv_type>::type() );
|
|
373
|
+
resized |= adjust_size_by_resizeability( m_dxdt2 , x , typename is_resizeable<deriv_type>::type() );
|
|
374
|
+
return resized;
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
|
|
378
|
+
template< class StateType >
|
|
379
|
+
void adjust_size( const StateType &x )
|
|
380
|
+
{
|
|
381
|
+
resize( x );
|
|
382
|
+
m_stepper.stepper().resize( x );
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
const state_type& current_state( void ) const
|
|
386
|
+
{
|
|
387
|
+
return get_current_state();
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
time_type current_time( void ) const
|
|
391
|
+
{
|
|
392
|
+
return m_t;
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
const state_type& previous_state( void ) const
|
|
396
|
+
{
|
|
397
|
+
return get_old_state();
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
time_type previous_time( void ) const
|
|
401
|
+
{
|
|
402
|
+
return m_t_old;
|
|
403
|
+
}
|
|
404
|
+
|
|
405
|
+
time_type current_time_step( void ) const
|
|
406
|
+
{
|
|
407
|
+
return m_dt;
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
|
|
411
|
+
private:
|
|
412
|
+
|
|
413
|
+
state_type& get_current_state( void )
|
|
414
|
+
{
|
|
415
|
+
return m_current_state_x1 ? m_x1.m_v : m_x2.m_v ;
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
const state_type& get_current_state( void ) const
|
|
419
|
+
{
|
|
420
|
+
return m_current_state_x1 ? m_x1.m_v : m_x2.m_v ;
|
|
421
|
+
}
|
|
422
|
+
|
|
423
|
+
state_type& get_old_state( void )
|
|
424
|
+
{
|
|
425
|
+
return m_current_state_x1 ? m_x2.m_v : m_x1.m_v ;
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
const state_type& get_old_state( void ) const
|
|
429
|
+
{
|
|
430
|
+
return m_current_state_x1 ? m_x2.m_v : m_x1.m_v ;
|
|
431
|
+
}
|
|
432
|
+
|
|
433
|
+
deriv_type& get_current_deriv( void )
|
|
434
|
+
{
|
|
435
|
+
return m_current_state_x1 ? m_dxdt1.m_v : m_dxdt2.m_v ;
|
|
436
|
+
}
|
|
437
|
+
|
|
438
|
+
const deriv_type& get_current_deriv( void ) const
|
|
439
|
+
{
|
|
440
|
+
return m_current_state_x1 ? m_dxdt1.m_v : m_dxdt2.m_v ;
|
|
441
|
+
}
|
|
442
|
+
|
|
443
|
+
deriv_type& get_old_deriv( void )
|
|
444
|
+
{
|
|
445
|
+
return m_current_state_x1 ? m_dxdt2.m_v : m_dxdt1.m_v ;
|
|
446
|
+
}
|
|
447
|
+
|
|
448
|
+
const deriv_type& get_old_deriv( void ) const
|
|
449
|
+
{
|
|
450
|
+
return m_current_state_x1 ? m_dxdt2.m_v : m_dxdt1.m_v ;
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
|
|
454
|
+
void toggle_current_state( void )
|
|
455
|
+
{
|
|
456
|
+
m_current_state_x1 = ! m_current_state_x1;
|
|
457
|
+
}
|
|
458
|
+
|
|
459
|
+
|
|
460
|
+
controlled_stepper_type m_stepper;
|
|
461
|
+
resizer_type m_resizer;
|
|
462
|
+
bool m_current_state_x1;
|
|
463
|
+
wrapped_state_type m_x1 , m_x2;
|
|
464
|
+
wrapped_deriv_type m_dxdt1 , m_dxdt2;
|
|
465
|
+
time_type m_t , m_t_old , m_dt;
|
|
466
|
+
bool m_is_deriv_initialized;
|
|
467
|
+
|
|
468
|
+
};
|
|
469
|
+
|
|
470
|
+
} // namespace odeint
|
|
471
|
+
} // namespace numeric
|
|
472
|
+
} // namespace boost
|
|
473
|
+
|
|
474
|
+
|
|
475
|
+
|
|
476
|
+
#endif // BOOST_NUMERIC_ODEINT_STEPPER_DENSE_OUTPUT_RUNGE_KUTTA_HPP_INCLUDED
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
/*
|
|
2
|
+
[auto_generated]
|
|
3
|
+
boost/numeric/odeint/stepper/detail/adams_bashforth_call_algebra.hpp
|
|
4
|
+
|
|
5
|
+
[begin_description]
|
|
6
|
+
Algebra caller for the Adams Bashforth stepper.
|
|
7
|
+
[end_description]
|
|
8
|
+
|
|
9
|
+
Copyright 2011-2012 Karsten Ahnert
|
|
10
|
+
Copyright 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_STEPPER_DETAIL_ADAMS_BASHFORTH_CALL_ALGEBRA_HPP_INCLUDED
|
|
19
|
+
#define BOOST_NUMERIC_ODEINT_STEPPER_DETAIL_ADAMS_BASHFORTH_CALL_ALGEBRA_HPP_INCLUDED
|
|
20
|
+
|
|
21
|
+
#include <cstddef>
|
|
22
|
+
|
|
23
|
+
namespace boost {
|
|
24
|
+
namespace numeric {
|
|
25
|
+
namespace odeint {
|
|
26
|
+
namespace detail {
|
|
27
|
+
|
|
28
|
+
template< size_t Step , class Algebra , class Operations >
|
|
29
|
+
struct adams_bashforth_call_algebra;
|
|
30
|
+
|
|
31
|
+
template< class Algebra , class Operations >
|
|
32
|
+
struct adams_bashforth_call_algebra< 1 , Algebra , Operations >
|
|
33
|
+
{
|
|
34
|
+
template< class StateIn , class StateOut , class StepStorage , class Coefficients , class Time >
|
|
35
|
+
void operator()( Algebra &algebra , const StateIn &in , StateOut &out , const StepStorage &steps , const Coefficients &coef , Time dt ) const
|
|
36
|
+
{
|
|
37
|
+
typedef typename Coefficients::value_type value_type;
|
|
38
|
+
algebra.for_each3( out , in , steps[0].m_v , typename Operations::template scale_sum2< value_type , Time >( 1.0 , dt * coef[0] ) );
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
template< class Algebra , class Operations >
|
|
44
|
+
struct adams_bashforth_call_algebra< 2 , Algebra , Operations >
|
|
45
|
+
{
|
|
46
|
+
template< class StateIn , class StateOut , class StepStorage , class Coefficients , class Time >
|
|
47
|
+
void operator()( Algebra &algebra , const StateIn &in , StateOut &out , const StepStorage &steps , const Coefficients &coef , Time dt ) const
|
|
48
|
+
{
|
|
49
|
+
typedef typename Coefficients::value_type value_type;
|
|
50
|
+
algebra.for_each4( out , in , steps[0].m_v , steps[1].m_v ,
|
|
51
|
+
typename Operations::template scale_sum3< value_type , Time , Time >( 1.0 , dt * coef[0] , dt * coef[1] ) );
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
template< class Algebra , class Operations >
|
|
57
|
+
struct adams_bashforth_call_algebra< 3 , Algebra , Operations >
|
|
58
|
+
{
|
|
59
|
+
template< class StateIn , class StateOut , class StepStorage , class Coefficients , class Time >
|
|
60
|
+
void operator()( Algebra &algebra , const StateIn &in , StateOut &out , const StepStorage &steps , const Coefficients &coef , Time dt ) const
|
|
61
|
+
{
|
|
62
|
+
typedef typename Coefficients::value_type value_type;
|
|
63
|
+
algebra.for_each5( out , in , steps[0].m_v , steps[1].m_v , steps[2].m_v ,
|
|
64
|
+
typename Operations::template scale_sum4< value_type , Time , Time , Time >( 1.0 , dt * coef[0] , dt * coef[1] , dt * coef[2] ) );
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
template< class Algebra , class Operations >
|
|
70
|
+
struct adams_bashforth_call_algebra< 4 , Algebra , Operations >
|
|
71
|
+
{
|
|
72
|
+
template< class StateIn , class StateOut , class StepStorage , class Coefficients , class Time >
|
|
73
|
+
void operator()( Algebra &algebra , const StateIn &in , StateOut &out , const StepStorage &steps , const Coefficients &coef , Time dt ) const
|
|
74
|
+
{
|
|
75
|
+
typedef typename Coefficients::value_type value_type;
|
|
76
|
+
algebra.for_each6( out , in , steps[0].m_v , steps[1].m_v , steps[2].m_v , steps[3].m_v ,
|
|
77
|
+
typename Operations::template scale_sum5< value_type , Time , Time , Time >(
|
|
78
|
+
1.0 , dt * coef[0] , dt * coef[1] , dt * coef[2] , dt * coef[3] ) );
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
template< class Algebra , class Operations >
|
|
84
|
+
struct adams_bashforth_call_algebra< 5 , Algebra , Operations >
|
|
85
|
+
{
|
|
86
|
+
template< class StateIn , class StateOut , class StepStorage , class Coefficients , class Time >
|
|
87
|
+
void operator()( Algebra &algebra , const StateIn &in , StateOut &out , const StepStorage &steps , const Coefficients &coef , Time dt ) const
|
|
88
|
+
{
|
|
89
|
+
typedef typename Coefficients::value_type value_type;
|
|
90
|
+
algebra.for_each7( out , in , steps[0].m_v , steps[1].m_v , steps[2].m_v , steps[3].m_v , steps[4].m_v ,
|
|
91
|
+
typename Operations::template scale_sum6< value_type , Time , Time , Time , Time >(
|
|
92
|
+
1.0 , dt * coef[0] , dt * coef[1] , dt * coef[2] , dt * coef[3] , dt * coef[4] ) );
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
template< class Algebra , class Operations >
|
|
98
|
+
struct adams_bashforth_call_algebra< 6 , Algebra , Operations >
|
|
99
|
+
{
|
|
100
|
+
template< class StateIn , class StateOut , class StepStorage , class Coefficients , class Time >
|
|
101
|
+
void operator()( Algebra &algebra , const StateIn &in , StateOut &out , const StepStorage &steps , const Coefficients &coef , Time dt ) const
|
|
102
|
+
{
|
|
103
|
+
typedef typename Coefficients::value_type value_type;
|
|
104
|
+
algebra.for_each8( out , in , steps[0].m_v , steps[1].m_v , steps[2].m_v , steps[3].m_v , steps[4].m_v , steps[5].m_v ,
|
|
105
|
+
typename Operations::template scale_sum7< value_type , Time , Time , Time , Time , Time >(
|
|
106
|
+
1.0 , dt * coef[0] , dt * coef[1] , dt * coef[2] , dt * coef[3] , dt * coef[4] , dt * coef[5] ) );
|
|
107
|
+
}
|
|
108
|
+
};
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
template< class Algebra , class Operations >
|
|
112
|
+
struct adams_bashforth_call_algebra< 7 , Algebra , Operations >
|
|
113
|
+
{
|
|
114
|
+
template< class StateIn , class StateOut , class StepStorage , class Coefficients , class Time >
|
|
115
|
+
void operator()( Algebra &algebra , const StateIn &in , StateOut &out , const StepStorage &steps , const Coefficients &coef , Time dt ) const
|
|
116
|
+
{
|
|
117
|
+
typedef typename Coefficients::value_type value_type;
|
|
118
|
+
algebra.for_each9( out , in , steps[0].m_v , steps[1].m_v , steps[2].m_v , steps[3].m_v , steps[4].m_v , steps[5].m_v , steps[6].m_v ,
|
|
119
|
+
typename Operations::template scale_sum8< value_type , Time , Time , Time , Time , Time , Time >(
|
|
120
|
+
1.0 , dt * coef[0] , dt * coef[1] , dt * coef[2] , dt * coef[3] , dt * coef[4] , dt * coef[5] , dt * coef[6] ) );
|
|
121
|
+
}
|
|
122
|
+
};
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
template< class Algebra , class Operations >
|
|
126
|
+
struct adams_bashforth_call_algebra< 8 , Algebra , Operations >
|
|
127
|
+
{
|
|
128
|
+
template< class StateIn , class StateOut , class StepStorage , class Coefficients , class Time >
|
|
129
|
+
void operator()( Algebra &algebra , const StateIn &in , StateOut &out , const StepStorage &steps , const Coefficients &coef , Time dt ) const
|
|
130
|
+
{
|
|
131
|
+
typedef typename Coefficients::value_type value_type;
|
|
132
|
+
algebra.for_each10( out , in , steps[0].m_v , steps[1].m_v , steps[2].m_v , steps[3].m_v , steps[4].m_v , steps[5].m_v , steps[6].m_v , steps[7].m_v ,
|
|
133
|
+
typename Operations::template scale_sum9< value_type , Time , Time , Time , Time , Time , Time , Time >(
|
|
134
|
+
1.0 , dt * coef[0] , dt * coef[1] , dt * coef[2] , dt * coef[3] , dt * coef[4] , dt * coef[5] , dt * coef[6] , dt * coef[7] ) );
|
|
135
|
+
}
|
|
136
|
+
};
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
} // detail
|
|
142
|
+
} // odeint
|
|
143
|
+
} // numeric
|
|
144
|
+
} // boost
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
#endif // BOOST_NUMERIC_ODEINT_STEPPER_DETAIL_ADAMS_BASHFORTH_CALL_ALGEBRA_HPP_INCLUDED
|