气氛和。大气屏幕然后相位屏幕列表

Atmosphere vs. AtmosphericScreen then PhaseScreenList

我正在尝试使用 phase_screens.py 中提供的代码来重现 Jee & Tyson (2011) 的情节。当我尝试 运行 行

    psf = atm.makePSF(lam = 700., exptime = 15., diam = 8.4, obscuration = .6)

我得到一个 AttributeError 说,'generator' 对象没有属性 'stepK.'

但是 atm 的类型是 PhaseScreenList。为什么我不能调用 atm.makePSF 或 atm.wavefront?在制作多屏幕氛围时,(1) 在 Atmosphere 构造函数中将列表作为参数传递和 (2) 定义 AtmosphericScreen 对象然后在 PhaseScreenList 构造函数中传递对象列表之间存在细微差别?提前致谢!

我认为这是 Atmosphere() 函数中的一个错误,将在分支 #824 合并到 master 时修复。如果您现在可以在该分支机构工作,那么您可能会没事。如果你只想修补大师,那么我认为用以下内容替换 Atmosphere() 的最后一行应该可行:

    return galsim.PhaseScreenList(
        [AtmosphericScreen(**kw) 
         for kw in galsim.utilities.lod_to_dol(kwargs, nmax)])