Suggest that the taichi library add support for lambda functions in python.
When I use the taichi library again to speed up my code, the result is that the taichi library does not support lambda functions.
Below is an example of some of my code: @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_aThe result of running the programme:
Qn = lambda n: self.coefficient_Qn(n) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Unsupported node "Lambda"
Source: taichi-dev/taichi