有没有办法为SED的“spec”参数或Bandpass的“吞吐量”参数传递分段(不连续)函数?我尝试使用numpy传递delta函数和三角函数,但galsim不接受任何有效的python函数。
我想尝试在单个波长下绘制一个物体,并且我认为我应该修改SED或带通以仅在单个波长处具有值。如果有更好的方法,请告诉我!
答案 0 :(得分:1)
有一种更好的方法可以做到这一点。
如果您已经有一个带有一些SED的ChromaticObject,您可以使用ChromaticObject.evaluateAtWavelength()方法在单个波长处获得与该ChromaticObject对应的GSObject。拥有该GSObject后,您可以将其绘制成图像。例如:
sed = galsim.SED('wave**0.2')
sed2 = galsim.SED('wave**1.0')
obj = galsim.Gaussian(sigma=0.1)*sed + galsim.Gaussian(sigma=0.5)*sed2
foo = obj.evaluateAtWavelength(800.0) # argument is wavelength in nm
你可以这样做,发现obj是彩色的,而foo不是。您可以轻松地对任意数量的波长执行此操作,而无需重新定义SED。