在项目 yt 中创建场的梯度作为派生场

creating gradient of a field as a derived field in project yt

我需要一些帮助来创建一个派生场,它将 return 引力势的负梯度,从而引力加速度。 我试过这样的事情:

@derived_field(name = "gradient_gravpot", units = " cm/s**2")
def _gradient (field, data):
        G = add_gradient_fields(("gas"," gravitational_potental"))
        return (- data["gravitational_potential_gradient_x"])

我遇到了这个错误

   NameError: global name 'add_gradient_fields' is not defined

请建议我定义字段的正确方法。谢谢

看起来你得到了答案on the yt project mailing list。也就是说,我将在这里重复 add_gradient_fieldsDataset class 的一种方法,因此您需要在加载的数据集上调用它。例如:

ds = yt.load('path/to/dataset')
ds.add_gradient_fields(('gas', 'gravitational_potential'))