Dear all,
I would like to solve the problem below:
\nabla(-\lambda \nabla T) + \rho C_p \; \vec{u} \; \nabla T=0 \text{ on } \Omega_\mathrm{solid}
where \vec{u} is the velocity profile in \Omega_\mathrm{fluid}

I would like to be able to solve the velocity profile on a refined mesh of \Omega_\mathrm{fluid} then project it onto a coarser mesh of the whole domain \Omega_\mathrm{solid} + \Omega_\mathrm{fluid} to perform the heat transfer simulation.
I found demos to perform a NS + heat transfer coupled simulation but only on the same domain.
Could someone head me towards an example or at least a strategy to achieve this kind of simulation ?
Thank you so much for your help!
Here’s the code I’ve come up with so far.
from fenics import *
from mshr import Rectangle, Circle, generate_mesh
# Create refined mesh for fluid domain
lx = ly = 10
cx = lx / 2.0
cy = 0
radius = 2.5
rectangle_middle = Rectangle(Point(0, -ly/2), Point(lx, ly/2))
hole = Circle(Point(cx, cy), radius)
res = 40
domain = rectangle_middle - hole
mesh_fluid = generate_mesh(domain, res)
# "solve" NS equations
u_fluid = Expression(("cos(x[0])", "sin(x[1])"), degree=2)
V_fluid = VectorFunctionSpace(mesh_fluid, "CG", 1, 2)
u_fluid = project(u_fluid, V_fluid) # this is our solution
# mesh the whole domain (fluid + solid)
thickness = 2
rectangle_bottom = Rectangle(Point(0, -ly/2 - thickness), Point(lx, -ly/2))
rectangle_top = Rectangle(Point(0, ly/2 + thickness), Point(lx, ly/2))
rectangle = rectangle_middle + rectangle_bottom + rectangle_top
domain = rectangle - hole
domain.set_subdomain(1, rectangle_top + rectangle_bottom)
domain.set_subdomain(2, rectangle_middle)
res = 30
mesh_total = generate_mesh(
domain, res)
vm = MeshFunction("size_t", mesh_total, mesh_total.topology().dim(), mesh_total.domains())
dx = Measure("dx", subdomain_data=vm)
# create formulation mimicking HT simulation...
V_total = FunctionSpace(mesh_total, "DG", 1)
u_total = Function(V_total)
v_total = TestFunction(V_total)
F = u_total*v_total*dx - 3*v_total*dx #- u_fluid*v_total*dx(2)
solve(F == 0, u_total, bcs=[])
XDMFFile("out.xdmf").write(u_total)
Maybe you should look at the multiphenics project
@bleyerj I wasn’t able to find an example or demo. Is there something available close to this application ?
Hi,have you solved your problem, I get the same problem ,too . Can you give me some help??