将运行时参数传递给odeint integrator

时间:2015-11-22 16:04:07

标签: c++ boost boost-units

我想使用odeint boost积分器来查看Kerr时空中的测地曲线。这需要为各种参数值运行积分器(我有初始条件和初始动量矢量,因此系统的角动量将根据我的启动方式而变化)

我一直在关注这里列出的优秀例子

http://headmyshoulder.github.io/odeint-v2/examples.html

特别是Lorenz吸引子的例子。

我注意到的第一件事(在我的Kerr系统中,而不是Lorenz)是因为在某些初始条件下,我在t = 0时间点之后得到NaN(尽管毫无疑问这表明某处有更深的错误)。为了更好地探索这一点,我希望能够在不必每次重新编译的情况下更改系统的参数。这相当于想要改变,比如R或sigma而不重新编译。据我所知,没有直接的方法将额外的参数传递给集成函数,除了这里的第二个代码块

http://headmyshoulder.github.io/odeint-v2/doc/boost_numeric_odeint/tutorial/harmonic_oscillator.html

我承认,由于我缺乏C ++知识,我不太明白。

我很欣赏如何获取运行时参数并将它们传递给这个求解器的知识,这样我就可以在不编译的情况下运行一堆批处理。

2 个答案:

答案 0 :(得分:2)

您可以将运行时参数传递给定义ODE的系统函数:

.
├── .tmp
│   ├── app.css
│   ├── app.js
│   ├── header.html
│   └── index.html
├── bower_components
│   └── angular
├── dist
│   ├── app.min.css
│   ├── app.min.js
│   └── index.html
└── src
    ├── app.scss
    ├── app.ts
    ├── components
    ├── header.jade
    ├── index.html
    └── shared

答案 1 :(得分:0)

我遇到了类似的问题。我所做的是定义了全局变量,以便我的函数可以访问我通过argvs传递的变量。如果您需要示例,请告诉我。