Python Fenics帮助:将数据列表写入Fenics中非线性部分的表达式?

Python Fenics帮助:将数据列表写入Fenics中非线性部分的表达式?,python,nonlinear-functions,finite-element-analysis,Python,Nonlinear Functions,Finite Element Analysis,我试图解决费尼茨的一个非线性问题。我不知道非线性函数是一个表达式,我只知道数据形式的值 换句话说,如果我解的是nabla(k(u)。nabla(u))=C,我不知道k(u)或者不能用x[0]等来写它,我只知道所有u的值对应的k值 目前,我已经写了一些插值函数,并将其调用到“k”中,可以将其投影到函数空间,但当我将其转换为变分形式并求解时,它似乎不起作用 下面是一些代码来澄清这个问题:我使用了制造解决方案的方法,其中u=x^2,k=1+u^2作为测试,其中k_data=u=[0,(1+xmax^2

我试图解决费尼茨的一个非线性问题。我不知道非线性函数是一个表达式,我只知道数据形式的值

换句话说,如果我解的是nabla(k(u)。nabla(u))=C,我不知道k(u)或者不能用x[0]等来写它,我只知道所有u的值对应的k值

目前,我已经写了一些插值函数,并将其调用到“k”中,可以将其投影到函数空间,但当我将其转换为变分形式并求解时,它似乎不起作用

下面是一些代码来澄清这个问题:我使用了制造解决方案的方法,其中u=x^2,k=1+u^2作为测试,其中k_data=u=[0,(1+xmax^2)]的数据列表

有人告诉我,我可以在表达式中研究子类,但我不知道如何在不知道x[0]的情况下做到这一点。请帮忙

u = Function(V)
v = TestFunction(V)

u.interpolate(Expression("x[0]"))
k = interpolate_table(u,kappa_data)
plot(project(k,V))

C = Expression("-2.0-10.0*x[0]*x[0]*x[0]*x[0]")
diff_part = k*inner(grad(u),grad(v))*dx
source_part = C*v*dx

Res = diff_part - source_part
J = derivative(Res,u)
problem = NonlinearVariationalProblem(Res, u, bcs, J)
solver  = NonlinearVariationalSolver(problem)
solver.solve()

prm = solver.parameters['newton_solver']
prm['relative_tolerance'] = 1E-6
prm['absolute_tolerance'] = 1E-6
prm['maximum_iterations'] = 100

一些具体的问题?一些具体的问题?