Pde Fenics中的复数

Pde Fenics中的复数,pde,fenics,Pde,Fenics,我目前正试图用jupyter笔记本中的Fenics解一个复数PDE,但当我试图用Fenics中的复数时,我遇到了麻烦 下面是我如何定义变分问题的: u = TrialFunction(V) v = TestFunction(V) a = (inner(grad(u[0]), grad(v[0])) + inner(grad(u[1]), grad(v[1])))*dx + sin(lat)*(u[0]*v[1]-u[1]*v[0])*dx+1j*((-inner(grad(u[0]), grad

我目前正试图用jupyter笔记本中的Fenics解一个复数PDE,但当我试图用Fenics中的复数时,我遇到了麻烦

下面是我如何定义变分问题的:

u = TrialFunction(V)
v = TestFunction(V)
a = (inner(grad(u[0]), grad(v[0])) + inner(grad(u[1]), grad(v[1])))*dx + sin(lat)*(u[0]*v[1]-u[1]*v[0])*dx+1j*((-inner(grad(u[0]), grad(v[1])) + inner(grad(u[1]), grad(v[0])))*dx + (sin(lat)*(u[0]*v[0]-u[1]*v[1])*dx))
f = Constant((1.0,1.0))
b = (v[0]*f[0]+f[1]*v[1])*ds+1j*((f[1]*v[0]-f[0]*v[1])*ds)
我收到以下错误消息:

AttributeError  Traceback (most recent call last)
<ipython-input-74-7760afa5a395> in <module>()



    1 u = TrialFunction(V)
       2 v = TestFunction(V)
 ----> 3 a = (inner(grad(u[0]), grad(v[0])) + inner(grad(u[1]), grad(v[1])))*dx + sin(lat)*(u[0]*v[1]-u[1]*v[0])*dx+1j*((-inner(grad(u[0]), grad(v[1])) + inner(grad(u[1]), grad(v[0])))*dx + (sin(lat)*(u[0]*v[0]-u[1]*v[1])*dx)
       4 f = Constant((0.0,0.0))
       5 b = (v[0]*f[0]+f[1]*v[1])*ds+1j*((f[1]*v[0]-f[0]*v[1])*ds)

~/anaconda3_420/lib/python3.5/site-packages/ufl/form.py in __rmul__(self, scalar)
    305         "Multiply all integrals in form with constant scalar value."
    306         # This enables the handy "0*form" or "dt*form" syntax
--> 307         if is_scalar_constant_expression(scalar):
    308             return Form([scalar*itg for itg in self.integrals()])
    309         return NotImplemented

~/anaconda3_420/lib/python3.5/site-packages/ufl/checks.py in is_scalar_constant_expression(expr)
     84     if is_python_scalar(expr):
     85         return True
---> 86     if expr.ufl_shape:
     87         return False
     88     return is_globally_constant(expr)

AttributeError: 'complex' object has no attribute 'ufl_shape'
AttributeError回溯(最近一次调用)
在()
1 u=三重功能(V)
2 v=测试功能(v)
---->3 a=(内部(梯度(u[0]),梯度(v[0])+内部(梯度(u[1]),梯度(v[1]))*dx+sin(lat)*(u[0]*v[1]-u[1]*v[0])*dx+1j*(-内部(梯度(u[0]),梯度(v[1])+内部(梯度(u[1]),梯度(u[0])*dx+(sin sin lat x*u[0]*u[0]*v[1])*dx]
4 f=常数((0.0,0.0))
5b=(v[0]*f[0]+f[1]*v[1])*ds+1j*((f[1]*v[0]-f[0]*v[1])*ds)
~/anaconda3_420/lib/python3.5/site-packages/ufl/form.py in_uuuuuurmul_uuuuuu(self,scalar)
305“将所有形式的积分乘以常数标量值。”
306#这启用了方便的“0*form”或“dt*form”语法
-->307如果是标量常数表达式(标量):
308返回形式([scalar*itg for itg in self.integrations()]中的itg)
309返回未执行
是标量常量表达式(expr)中的~/anaconda3_420/lib/python3.5/site-packages/ufl/checks.py
84如果是标量(expr):
85返回真值
--->86如果expr.ufl_形状:
87返回错误
88返回为常数(expr)
AttributeError:“复杂”对象没有属性“ufl\U形状”
谁能帮帮我吗? 顺便说一句,Fenics可能不是解决复杂值偏微分方程的最佳工具,我想阅读您对此类问题的建议