I have a question regarding definining boundaries in fenics.
I want to define boundaries using the length of the interval (one-dimensional) so that I can impose different boundary conditions on both ends. But, if I use a variable in defining boundaries, I get an error.
TypeError: bad operand type for abs(): ‘Form’
If I do not use a variable and use a number, no errors. Could you help me out?
from dolfin import * import matplotlib.pyplot as plt import numpy as np mesh = UnitIntervalMesh(32) V = FunctionSpace(mesh, 'Lagrange', 2) u0 = Constant('0.0') u_true = Expression('0.5*x*(1.0-x)', degree=2) plot(mesh) L = 1.0 u_right = Constant(0) u_left = Constant(0) def boundary_right(x, on_boundary): tol = 1E-14 return abs(x - L) < tol def boundary_left(x, on_boundary): tol = 1E-14 return abs(x) < tol bc_right = DirichletBC(V, u_right, boundary_right) bc_left = DirichletBC(V, u_left, boundary_left) bcs = [bc_right, bc_left] u = TrialFunction(V) v = TestFunction(V) f = Constant(1.0) a = inner(nabla_grad(u), nabla_grad(v))*dx L = f*v*dx u = Function(V) solve(a == L, u, bcs)