Комплексное число в фениксе - PullRequest
1 голос
/ 02 апреля 2020

В настоящее время я пытаюсь найти комплексное PDE с помощью Fenics в блокноте jupyter, но у меня возникают проблемы при использовании комплексного числа в 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'

Может кто-нибудь помочь мне? Кстати, Fenics, возможно, не лучший инструмент для решения комплексных PDE, и я хотел бы прочитать ваши предложения о таких проблемах.

...