Taichi的整数类型能否当做给定数组的索引啊

我想从一个固定数组中读取每个粒子的材料参数,我先设置了给每个粒子定义了一个整数类型标记它的材料,1-5分别是不同的材料,然后从一个固定数组中直接查找材料属性。但是循环内部的数据类型不是整数,不能当做数组的索引,有点懵逼。

代码如下:

import taichi as ti
import numpy as np

n_particle=10
mat = ti.field(ti.i32, shape=n_particle)    
mat_propety = np.array([1, 2, 3, 4, 5])    


@ti.kernel
def read_mat():
    for i in mat:
        mat[i] = ti.mod(i, 5)
        print(mat[i])
        print(mat_propety[int(mat[i])])  #这行数据类型报错了


read_mat()

你需要把numpy array转换成taichi field才能在kernel中调用

import taichi as ti
import numpy as np

n_particle=10
mat = ti.field(ti.i32, shape=n_particle)    
mat_propety_np = np.array([1, 2, 3, 4, 5])
mat_propety_ti = ti.field(ti.i32, 5)
mat_propety_ti.from_numpy(mat_propety_np)


@ti.kernel
def read_mat():
    for i in mat:
        mat[i] = ti.mod(i, 5)
        print(mat[i])
        print(mat_propety_ti[int(mat[i])])  #这行数据类型报错了


read_mat()
2 个赞

谢谢。明白了。

1 个赞