Apologies for the beginner-level questions:
there is an external mesh which is imported to the Fenics. the elements of the Mesh are tagged with physical groups.
i wrote a simple diffusion code. But I want to have different diffusion coefficient in in different materials which is showed in the picture with mark 1,2 and 3.
I know that I have to use and define subdomain but unfortunately i could not do it with external mesh.
from fenics import * t_end = 3 dt = 0.1 k = 3 #diffusion Coefficient u_in = 20 u_out = -5 xml_file = "01Mesh.xml" mesh = Mesh(xml_file) fd = MeshFunction('size_t', mesh, "01Mesh_facet_region.xml"); V = FunctionSpace(mesh, 'P', 7) bc1 = DirichletBC(V, Constant(u_in), fd, 97) bc2 = DirichletBC(V, Constant(u_out), fd, 2) bc = [bc1, bc2] u = TrialFunction(V) v = TestFunction(V) u_n = Function(V) F = u*v*dx + dt*k*dot(grad(u), grad(v))*dx - u_n*v*dx a, L = lhs(F), rhs(F) u = Function(V) t = 0 vtkfile = File('output/output.pvd') num_steps = int(t_end/dt) for n in range(num_steps): t += dt solve(a == L, u, bc) u_n.assign(u) vtkfile << (u, t)