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,56 @@
|
|
|
1
|
+
/*
|
|
2
|
+
[auto_generated]
|
|
3
|
+
boost/numeric/odeint/stepper/generation/generation_runge_kutta_dopri5.hpp
|
|
4
|
+
|
|
5
|
+
[begin_description]
|
|
6
|
+
Enable the factory functions for the controller and the dense output of the Runge-Kutta-Dormand-Prince5 method.
|
|
7
|
+
[end_description]
|
|
8
|
+
|
|
9
|
+
Copyright 2011 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_GENERATION_GENERATION_RUNGE_KUTTA_DOPRI5_HPP_INCLUDED
|
|
19
|
+
#define BOOST_NUMERIC_ODEINT_STEPPER_GENERATION_GENERATION_RUNGE_KUTTA_DOPRI5_HPP_INCLUDED
|
|
20
|
+
|
|
21
|
+
#include <boost/numeric/odeint/stepper/controlled_runge_kutta.hpp>
|
|
22
|
+
#include <boost/numeric/odeint/stepper/dense_output_runge_kutta.hpp>
|
|
23
|
+
#include <boost/numeric/odeint/stepper/runge_kutta_dopri5.hpp>
|
|
24
|
+
#include <boost/numeric/odeint/stepper/generation/make_controlled.hpp>
|
|
25
|
+
#include <boost/numeric/odeint/stepper/generation/make_dense_output.hpp>
|
|
26
|
+
|
|
27
|
+
namespace boost {
|
|
28
|
+
namespace numeric {
|
|
29
|
+
namespace odeint {
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
template< class State , class Value , class Deriv , class Time , class Algebra , class Operations , class Resize >
|
|
33
|
+
struct get_controller< runge_kutta_dopri5< State , Value , Deriv , Time , Algebra , Operations , Resize > >
|
|
34
|
+
{
|
|
35
|
+
typedef runge_kutta_dopri5< State , Value , Deriv , Time , Algebra , Operations , Resize > stepper_type;
|
|
36
|
+
typedef controlled_runge_kutta< stepper_type > type;
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
template< class State , class Value , class Deriv , class Time , class Algebra , class Operations , class Resize >
|
|
41
|
+
struct get_dense_output< runge_kutta_dopri5< State , Value , Deriv , Time , Algebra , Operations , Resize > >
|
|
42
|
+
{
|
|
43
|
+
typedef runge_kutta_dopri5< State , Value , Deriv , Time , Algebra , Operations , Resize > stepper_type;
|
|
44
|
+
typedef controlled_runge_kutta< stepper_type > controller_type;
|
|
45
|
+
typedef dense_output_runge_kutta< controller_type > type;
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
} // odeint
|
|
52
|
+
} // numeric
|
|
53
|
+
} // boost
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
#endif // BOOST_NUMERIC_ODEINT_STEPPER_GENERATION_GENERATION_RUNGE_KUTTA_DOPRI5_HPP_INCLUDED
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/*
|
|
2
|
+
[auto_generated]
|
|
3
|
+
boost/numeric/odeint/stepper/generation/generation_runge_kutta_fehlberg78.hpp
|
|
4
|
+
|
|
5
|
+
[begin_description]
|
|
6
|
+
Enable the factory functions for the controller and the dense output of the Runge-Kutta-Fehlberg 78 method.
|
|
7
|
+
[end_description]
|
|
8
|
+
|
|
9
|
+
Copyright 2011 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_GENERATION_GENERATION_RUNGE_KUTTA_FEHLBERG78_HPP_INCLUDED
|
|
19
|
+
#define BOOST_NUMERIC_ODEINT_STEPPER_GENERATION_GENERATION_RUNGE_KUTTA_FEHLBERG78_HPP_INCLUDED
|
|
20
|
+
|
|
21
|
+
#include <boost/numeric/odeint/stepper/controlled_runge_kutta.hpp>
|
|
22
|
+
#include <boost/numeric/odeint/stepper/runge_kutta_fehlberg78.hpp>
|
|
23
|
+
#include <boost/numeric/odeint/stepper/generation/make_controlled.hpp>
|
|
24
|
+
|
|
25
|
+
namespace boost {
|
|
26
|
+
namespace numeric {
|
|
27
|
+
namespace odeint {
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
template< class State , class Value , class Deriv , class Time , class Algebra , class Operations , class Resize >
|
|
31
|
+
struct get_controller< runge_kutta_fehlberg78< State , Value , Deriv , Time , Algebra , Operations , Resize > >
|
|
32
|
+
{
|
|
33
|
+
typedef runge_kutta_fehlberg78< State , Value , Deriv , Time , Algebra , Operations , Resize > stepper_type;
|
|
34
|
+
typedef controlled_runge_kutta< stepper_type > type;
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
} // odeint
|
|
42
|
+
} // numeric
|
|
43
|
+
} // boost
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
#endif // BOOST_NUMERIC_ODEINT_STEPPER_GENERATION_GENERATION_RUNGE_KUTTA_FEHLBERG78_HPP_INCLUDED
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/*
|
|
2
|
+
[auto_generated]
|
|
3
|
+
boost/numeric/odeint/stepper/generation/make_controlled.hpp
|
|
4
|
+
|
|
5
|
+
[begin_description]
|
|
6
|
+
Factory function to simplify the creation of controlled steppers from error steppers.
|
|
7
|
+
[end_description]
|
|
8
|
+
|
|
9
|
+
Copyright 2011-2012 Karsten Ahnert
|
|
10
|
+
Copyright 2011-2012 Mario Mulansky
|
|
11
|
+
|
|
12
|
+
Distributed under the Boost Software License, Version 1.0.
|
|
13
|
+
(See accompanying file LICENSE_1_0.txt or
|
|
14
|
+
copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
#ifndef BOOST_NUMERIC_ODEINT_STEPPER_GENERATION_MAKE_CONTROLLED_HPP_INCLUDED
|
|
19
|
+
#define BOOST_NUMERIC_ODEINT_STEPPER_GENERATION_MAKE_CONTROLLED_HPP_INCLUDED
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
namespace boost {
|
|
25
|
+
namespace numeric {
|
|
26
|
+
namespace odeint {
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
// default template for the controller
|
|
31
|
+
template< class Stepper > struct get_controller { };
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
// default controller factory
|
|
36
|
+
template< class Stepper , class Controller >
|
|
37
|
+
struct controller_factory
|
|
38
|
+
{
|
|
39
|
+
Controller operator()(
|
|
40
|
+
typename Stepper::value_type abs_error ,
|
|
41
|
+
typename Stepper::value_type rel_error ,
|
|
42
|
+
const Stepper &stepper )
|
|
43
|
+
{
|
|
44
|
+
return Controller( abs_error , rel_error , stepper );
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
Controller operator()(
|
|
48
|
+
typename Stepper::value_type abs_error ,
|
|
49
|
+
typename Stepper::value_type rel_error ,
|
|
50
|
+
typename Stepper::time_type max_dt ,
|
|
51
|
+
const Stepper &stepper )
|
|
52
|
+
{
|
|
53
|
+
return Controller( abs_error , rel_error , max_dt, stepper );
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
namespace result_of
|
|
61
|
+
{
|
|
62
|
+
template< class Stepper >
|
|
63
|
+
struct make_controlled
|
|
64
|
+
{
|
|
65
|
+
typedef typename get_controller< Stepper >::type type;
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
template< class Stepper >
|
|
71
|
+
typename result_of::make_controlled< Stepper >::type make_controlled(
|
|
72
|
+
typename Stepper::value_type abs_error ,
|
|
73
|
+
typename Stepper::value_type rel_error ,
|
|
74
|
+
const Stepper & stepper = Stepper() )
|
|
75
|
+
{
|
|
76
|
+
typedef Stepper stepper_type;
|
|
77
|
+
typedef typename result_of::make_controlled< stepper_type >::type controller_type;
|
|
78
|
+
typedef controller_factory< stepper_type , controller_type > factory_type;
|
|
79
|
+
factory_type factory;
|
|
80
|
+
return factory( abs_error , rel_error , stepper );
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
template< class Stepper >
|
|
85
|
+
typename result_of::make_controlled< Stepper >::type make_controlled(
|
|
86
|
+
typename Stepper::value_type abs_error ,
|
|
87
|
+
typename Stepper::value_type rel_error ,
|
|
88
|
+
typename Stepper::time_type max_dt ,
|
|
89
|
+
const Stepper & stepper = Stepper() )
|
|
90
|
+
{
|
|
91
|
+
typedef Stepper stepper_type;
|
|
92
|
+
typedef typename result_of::make_controlled< stepper_type >::type controller_type;
|
|
93
|
+
typedef controller_factory< stepper_type , controller_type > factory_type;
|
|
94
|
+
factory_type factory;
|
|
95
|
+
return factory( abs_error , rel_error , max_dt, stepper );
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
} // odeint
|
|
99
|
+
} // numeric
|
|
100
|
+
} // boost
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
#endif // BOOST_NUMERIC_ODEINT_STEPPER_GENERATION_MAKE_CONTROLLED_HPP_INCLUDED
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/*
|
|
2
|
+
[auto_generated]
|
|
3
|
+
boost/numeric/odeint/stepper/generation/make_dense_output.hpp
|
|
4
|
+
|
|
5
|
+
[begin_description]
|
|
6
|
+
Factory function to simplify the creation of dense output steppers from error steppers.
|
|
7
|
+
[end_description]
|
|
8
|
+
|
|
9
|
+
Copyright 2011-2012 Karsten Ahnert
|
|
10
|
+
Copyright 2011-2012 Mario Mulansky
|
|
11
|
+
|
|
12
|
+
Distributed under the Boost Software License, Version 1.0.
|
|
13
|
+
(See accompanying file LICENSE_1_0.txt or
|
|
14
|
+
copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
#ifndef BOOST_NUMERIC_ODEINT_STEPPER_GENERATION_MAKE_DENSE_OUTPUT_HPP_INCLUDED
|
|
19
|
+
#define BOOST_NUMERIC_ODEINT_STEPPER_GENERATION_MAKE_DENSE_OUTPUT_HPP_INCLUDED
|
|
20
|
+
|
|
21
|
+
namespace boost {
|
|
22
|
+
namespace numeric {
|
|
23
|
+
namespace odeint {
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
// default template for the dense output
|
|
27
|
+
template< class Stepper > struct get_dense_output { };
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
// default dense output factory
|
|
32
|
+
template< class Stepper , class DenseOutput >
|
|
33
|
+
struct dense_output_factory
|
|
34
|
+
{
|
|
35
|
+
DenseOutput operator()(
|
|
36
|
+
typename Stepper::value_type abs_error ,
|
|
37
|
+
typename Stepper::value_type rel_error ,
|
|
38
|
+
const Stepper &stepper )
|
|
39
|
+
{
|
|
40
|
+
return DenseOutput( abs_error , rel_error , stepper );
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
DenseOutput operator()(
|
|
44
|
+
typename Stepper::value_type abs_error ,
|
|
45
|
+
typename Stepper::value_type rel_error ,
|
|
46
|
+
typename Stepper::time_type max_dt ,
|
|
47
|
+
const Stepper &stepper )
|
|
48
|
+
{
|
|
49
|
+
return DenseOutput( abs_error , rel_error , max_dt , stepper );
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
namespace result_of
|
|
56
|
+
{
|
|
57
|
+
template< class Stepper >
|
|
58
|
+
struct make_dense_output
|
|
59
|
+
{
|
|
60
|
+
typedef typename get_dense_output< Stepper >::type type;
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
template< class Stepper >
|
|
67
|
+
typename result_of::make_dense_output< Stepper >::type make_dense_output(
|
|
68
|
+
typename Stepper::value_type abs_error ,
|
|
69
|
+
typename Stepper::value_type rel_error ,
|
|
70
|
+
const Stepper &stepper = Stepper() )
|
|
71
|
+
{
|
|
72
|
+
typedef Stepper stepper_type;
|
|
73
|
+
typedef typename result_of::make_dense_output< stepper_type >::type dense_output_type;
|
|
74
|
+
typedef dense_output_factory< stepper_type , dense_output_type > factory_type;
|
|
75
|
+
factory_type factory;
|
|
76
|
+
return factory( abs_error , rel_error , stepper );
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
template< class Stepper >
|
|
81
|
+
typename result_of::make_dense_output< Stepper >::type make_dense_output(
|
|
82
|
+
typename Stepper::value_type abs_error ,
|
|
83
|
+
typename Stepper::value_type rel_error ,
|
|
84
|
+
typename Stepper::time_type max_dt ,
|
|
85
|
+
const Stepper &stepper = Stepper() )
|
|
86
|
+
{
|
|
87
|
+
typedef Stepper stepper_type;
|
|
88
|
+
typedef typename result_of::make_dense_output< stepper_type >::type dense_output_type;
|
|
89
|
+
typedef dense_output_factory< stepper_type , dense_output_type > factory_type;
|
|
90
|
+
factory_type factory;
|
|
91
|
+
return factory( abs_error , rel_error , max_dt, stepper );
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
} // odeint
|
|
96
|
+
} // numeric
|
|
97
|
+
} // boost
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
#endif // BOOST_NUMERIC_ODEINT_STEPPER_GENERATION_MAKE_DENSE_OUTPUT_HPP_INCLUDED
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/*
|
|
2
|
+
[auto_generated]
|
|
3
|
+
boost/numeric/odeint/stepper/generation.hpp
|
|
4
|
+
|
|
5
|
+
[begin_description]
|
|
6
|
+
Forward header for the factory functions. Includes all files from the generation directory.
|
|
7
|
+
[end_description]
|
|
8
|
+
|
|
9
|
+
Copyright 2011 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_GENERATION_HPP_INCLUDED
|
|
19
|
+
#define BOOST_NUMERIC_ODEINT_STEPPER_GENERATION_HPP_INCLUDED
|
|
20
|
+
|
|
21
|
+
#include <boost/numeric/odeint/stepper/generation/make_controlled.hpp>
|
|
22
|
+
#include <boost/numeric/odeint/stepper/generation/make_dense_output.hpp>
|
|
23
|
+
|
|
24
|
+
#include <boost/numeric/odeint/stepper/generation/generation_controlled_runge_kutta.hpp>
|
|
25
|
+
#include <boost/numeric/odeint/stepper/generation/generation_dense_output_runge_kutta.hpp>
|
|
26
|
+
|
|
27
|
+
#include <boost/numeric/odeint/stepper/generation/generation_runge_kutta_cash_karp54_classic.hpp>
|
|
28
|
+
#include <boost/numeric/odeint/stepper/generation/generation_runge_kutta_cash_karp54.hpp>
|
|
29
|
+
#include <boost/numeric/odeint/stepper/generation/generation_runge_kutta_dopri5.hpp>
|
|
30
|
+
#include <boost/numeric/odeint/stepper/generation/generation_runge_kutta_fehlberg78.hpp>
|
|
31
|
+
|
|
32
|
+
#include <boost/numeric/odeint/stepper/generation/generation_controlled_adams_bashforth_moulton.hpp>
|
|
33
|
+
|
|
34
|
+
#include <boost/numeric/odeint/stepper/generation/generation_rosenbrock4.hpp>
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
#endif // BOOST_NUMERIC_ODEINT_STEPPER_GENERATION_HPP_INCLUDED
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
/*
|
|
2
|
+
[auto_generated]
|
|
3
|
+
boost/numeric/odeint/stepper/implicit_euler.hpp
|
|
4
|
+
|
|
5
|
+
[begin_description]
|
|
6
|
+
Impementation of the implicit Euler method. Works with ublas::vector as state type.
|
|
7
|
+
[end_description]
|
|
8
|
+
|
|
9
|
+
Copyright 2010-2012 Mario Mulansky
|
|
10
|
+
Copyright 2010-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_STEPPER_IMPLICIT_EULER_HPP_INCLUDED
|
|
20
|
+
#define BOOST_NUMERIC_ODEINT_STEPPER_IMPLICIT_EULER_HPP_INCLUDED
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
#include <utility>
|
|
24
|
+
|
|
25
|
+
#include <boost/numeric/odeint/util/bind.hpp>
|
|
26
|
+
#include <boost/numeric/odeint/util/unwrap_reference.hpp>
|
|
27
|
+
#include <boost/numeric/odeint/stepper/stepper_categories.hpp>
|
|
28
|
+
|
|
29
|
+
#include <boost/numeric/odeint/util/ublas_wrapper.hpp>
|
|
30
|
+
#include <boost/numeric/odeint/util/is_resizeable.hpp>
|
|
31
|
+
#include <boost/numeric/odeint/util/resizer.hpp>
|
|
32
|
+
|
|
33
|
+
#include <boost/numeric/ublas/vector.hpp>
|
|
34
|
+
#include <boost/numeric/ublas/matrix.hpp>
|
|
35
|
+
#include <boost/numeric/ublas/lu.hpp>
|
|
36
|
+
|
|
37
|
+
namespace boost {
|
|
38
|
+
namespace numeric {
|
|
39
|
+
namespace odeint {
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
template< class ValueType , class Resizer = initially_resizer >
|
|
49
|
+
class implicit_euler
|
|
50
|
+
{
|
|
51
|
+
|
|
52
|
+
public:
|
|
53
|
+
|
|
54
|
+
typedef ValueType value_type;
|
|
55
|
+
typedef value_type time_type;
|
|
56
|
+
typedef boost::numeric::ublas::vector< value_type > state_type;
|
|
57
|
+
typedef state_wrapper< state_type > wrapped_state_type;
|
|
58
|
+
typedef state_type deriv_type;
|
|
59
|
+
typedef state_wrapper< deriv_type > wrapped_deriv_type;
|
|
60
|
+
typedef boost::numeric::ublas::matrix< value_type > matrix_type;
|
|
61
|
+
typedef state_wrapper< matrix_type > wrapped_matrix_type;
|
|
62
|
+
typedef boost::numeric::ublas::permutation_matrix< size_t > pmatrix_type;
|
|
63
|
+
typedef state_wrapper< pmatrix_type > wrapped_pmatrix_type;
|
|
64
|
+
typedef Resizer resizer_type;
|
|
65
|
+
typedef stepper_tag stepper_category;
|
|
66
|
+
typedef implicit_euler< ValueType , Resizer > stepper_type;
|
|
67
|
+
|
|
68
|
+
implicit_euler( value_type epsilon = 1E-6 )
|
|
69
|
+
: m_epsilon( epsilon )
|
|
70
|
+
{ }
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
template< class System >
|
|
74
|
+
void do_step( System system , state_type &x , time_type t , time_type dt )
|
|
75
|
+
{
|
|
76
|
+
typedef typename odeint::unwrap_reference< System >::type system_type;
|
|
77
|
+
typedef typename odeint::unwrap_reference< typename system_type::first_type >::type deriv_func_type;
|
|
78
|
+
typedef typename odeint::unwrap_reference< typename system_type::second_type >::type jacobi_func_type;
|
|
79
|
+
system_type &sys = system;
|
|
80
|
+
deriv_func_type &deriv_func = sys.first;
|
|
81
|
+
jacobi_func_type &jacobi_func = sys.second;
|
|
82
|
+
|
|
83
|
+
m_resizer.adjust_size(x, [this](auto&& arg) { return this->resize_impl<state_type>(std::forward<decltype(arg)>(arg)); });
|
|
84
|
+
|
|
85
|
+
for( size_t i=0 ; i<x.size() ; ++i )
|
|
86
|
+
m_pm.m_v[i] = i;
|
|
87
|
+
|
|
88
|
+
t += dt;
|
|
89
|
+
|
|
90
|
+
// apply first Newton step
|
|
91
|
+
deriv_func( x , m_dxdt.m_v , t );
|
|
92
|
+
|
|
93
|
+
m_b.m_v = dt * m_dxdt.m_v;
|
|
94
|
+
|
|
95
|
+
jacobi_func( x , m_jacobi.m_v , t );
|
|
96
|
+
m_jacobi.m_v *= dt;
|
|
97
|
+
m_jacobi.m_v -= boost::numeric::ublas::identity_matrix< value_type >( x.size() );
|
|
98
|
+
|
|
99
|
+
solve( m_b.m_v , m_jacobi.m_v );
|
|
100
|
+
|
|
101
|
+
m_x.m_v = x - m_b.m_v;
|
|
102
|
+
|
|
103
|
+
// iterate Newton until some precision is reached
|
|
104
|
+
// ToDo: maybe we should apply only one Newton step -> linear implicit one-step scheme
|
|
105
|
+
while( boost::numeric::ublas::norm_2( m_b.m_v ) > m_epsilon )
|
|
106
|
+
{
|
|
107
|
+
deriv_func( m_x.m_v , m_dxdt.m_v , t );
|
|
108
|
+
m_b.m_v = x - m_x.m_v + dt*m_dxdt.m_v;
|
|
109
|
+
|
|
110
|
+
// simplified version, only the first Jacobian is used
|
|
111
|
+
// jacobi( m_x , m_jacobi , t );
|
|
112
|
+
// m_jacobi *= dt;
|
|
113
|
+
// m_jacobi -= boost::numeric::ublas::identity_matrix< value_type >( x.size() );
|
|
114
|
+
|
|
115
|
+
solve( m_b.m_v , m_jacobi.m_v );
|
|
116
|
+
|
|
117
|
+
m_x.m_v -= m_b.m_v;
|
|
118
|
+
}
|
|
119
|
+
x = m_x.m_v;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
template< class StateType >
|
|
123
|
+
void adjust_size( const StateType &x )
|
|
124
|
+
{
|
|
125
|
+
resize_impl( x );
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
private:
|
|
130
|
+
|
|
131
|
+
template< class StateIn >
|
|
132
|
+
bool resize_impl( const StateIn &x )
|
|
133
|
+
{
|
|
134
|
+
bool resized = false;
|
|
135
|
+
resized |= adjust_size_by_resizeability( m_dxdt , x , typename is_resizeable<deriv_type>::type() );
|
|
136
|
+
resized |= adjust_size_by_resizeability( m_x , x , typename is_resizeable<state_type>::type() );
|
|
137
|
+
resized |= adjust_size_by_resizeability( m_b , x , typename is_resizeable<deriv_type>::type() );
|
|
138
|
+
resized |= adjust_size_by_resizeability( m_jacobi , x , typename is_resizeable<matrix_type>::type() );
|
|
139
|
+
resized |= adjust_size_by_resizeability( m_pm , x , typename is_resizeable<pmatrix_type>::type() );
|
|
140
|
+
return resized;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
void solve( state_type &x , matrix_type &m )
|
|
145
|
+
{
|
|
146
|
+
int res = boost::numeric::ublas::lu_factorize( m , m_pm.m_v );
|
|
147
|
+
if( res != 0 ) std::exit(0);
|
|
148
|
+
boost::numeric::ublas::lu_substitute( m , m_pm.m_v , x );
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
private:
|
|
152
|
+
|
|
153
|
+
value_type m_epsilon;
|
|
154
|
+
resizer_type m_resizer;
|
|
155
|
+
wrapped_deriv_type m_dxdt;
|
|
156
|
+
wrapped_state_type m_x;
|
|
157
|
+
wrapped_deriv_type m_b;
|
|
158
|
+
wrapped_matrix_type m_jacobi;
|
|
159
|
+
wrapped_pmatrix_type m_pm;
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
};
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
} // odeint
|
|
166
|
+
} // numeric
|
|
167
|
+
} // boost
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
#endif // BOOST_NUMERIC_ODEINT_STEPPER_IMPLICIT_EULER_HPP_INCLUDED
|