在不指定时间步长数组的情况下在 galpy 中进行轨道积分

Orbit integration in galpy without specifying the time steps array

我刚刚发现了 galpy 并整天浏览文档和示例,但我仍然对在不指定时间集的情况下整合轨道的可能性感到有点困惑。

文档中的一个简单示例如下:

from galpy import potential
import numpy
ts= numpy.linspace(0,100,10000)
o= Orbit([1.,0.1,1.1,0.,0.1,0.])
o.integrate(ts,potential.MWPotential2014)

但我问是否可以在不指定整个时间数组的情况下使用集成方法,而只指定适当单位的时间量。例如:

t = 100
o.integrate(t, potential.MWPotential2014)

谢谢。

如果文档没有说明存在这样的接口,您可以假设它不存在,但快速查看代码可以证实这一点。无论如何,即使存在这样的捷径,积分器函数本身仍然需要一系列时间步来积分,所以这只是一个捷径。

即使您只想指定“时间量”,您仍然需要提供一个时间步长,尽管您也可以有一个默认时间步长。您可以编写自己的快捷函数,例如:

def integrate_orbit(orbit, pot, t, dt=0.01):
    t = np.arange(0, t, dt)
    return orbit.integrate(t, pot)