建议太极库添加对 Python 中 lambda 函数的支持。
作者: YongYahn创建于 2023年9月5日更新于 2026年5月9日
标签feature requestwelcome contribution
当我再次使用taichi库来加速代码时,结果是taichi库不支持lambda函数。下面是我代码的一部分示例: @ti.func def coefficient_Qn(self, n: int): """Qn表达式""" theta = ti.var(ti.f32) Qn_func = lambda theta: ((self.alphaS0 / 2 - theta) ** (-1 / 3) - (self.alphaS0 / 2 + theta) ** (-1 / 3)) * sin( n * self.Ns * theta) Qn = ti.quad(Qn_func, (0, self.alphaS0 / 2), max_num_intervals=10) # print('Qn =', Qn) self.Qn = Qn return self.Qn @ti.kernel def calculate_lambda_a(self, theta: ti.f32):
Qn = lambda n: self.coefficient_Qn(n)
Ra = lambda n: self.parameter_Ra(n)
g1 = self.Rs - self.Rr # 参数系数
kc = self.ts * (5 * g1 + self.bs) / (self.ts * (5 * g1 + self.bs) - self.bs ** 2)
func_a = lambda n: (g1 * self.K0 * self.Ns + g1 * self.Ns * (kc - 1) * Qn(n) * Ra(n) * cos(
n * self.Ns * theta)) / (self.K0 * self.Ns *
self.R0 * log(self.Rs / self.Rr) + self.Rs * (kc - 1) * (-1) ** n * Qn(n) / n)
# lambda_a = mp.nsum(func_a, [1, N], method="richardson + shanks")
lambda_a = ti.nsum(func_a, [1, N])
self.lambda_a = lambda_a
return self.lambda_a
运行程序的结果:
内容来源: taichi-dev/taichi