Skip to content

CHT 002 - Conjugate heat transfer

In this example, conjugate heat transfer (CHT) in a quasi-2D Taylor-Couette flow is considered.

Model definition

The model is composed of a thin disc with two hollow concentric cylinders: the inner hollow cylinder forms a solid region and the outer hollow cylinder forms the fluid region.

Example image

The model setup is based on a paper by De Marinis et al. 1

  1. The outer surface (at radius RoR_o) of the outer cylinder is rotating with a tangential velocity Uo=2m/sU_o = 2 m/s.
  2. The temperature at the outer surface RoR_o is fixed at To=700KT_o = 700 K.
  3. The inner cylinder is stationary.
  4. The temperature at the inner surface of the inner cylinder RiR_i is fixed at Ti=500KT_i = 500 K.
  5. At the interface of the solid and fluid region (surface at RmR_m), a no-slip velocity constraint is applied.

For Taylor-Couette flow, typically a viscous fluid is considered. Here, water properties are used in fluid. However, its kinematic viscosity is increased to ν=1\nu = 1 m²/s (instead of νwater=1.002e6\nu _{water} = 1.002 e ^{-6} m²/s) to make it viscous.

For the simulation setup in Allsolve, the tangential velocity UoU_o is split into its X and Y components as detailed below. The heat transfer at fluid-solid interface is strongly coupled, therefore, no additional flux boundary condition are required at the interface.

Example image

Simulation setup guide

Below, you’ll find a simplified guide for setting this up in Quanscient Allsolve.

Step 0 - Define shared expressions

Start out in the Properties section by defining the following shared expressions:

NameDescriptionExpression
Roouter radius [m]1.8
Rminterface radius [m]0.9
Riinner radius [m]0.45
hheight [m]0.05
Totemperature at Ro [K]700
Titemperature at Ri [K]500
Uotangential velocity at Ro [m/s]2.0
wangular velocity at Ro [rad/s]Uo/Ro
ksbykfheat conductivity ratio between solid and fluid9.0
nukinematic viscosity of fluid [m²/s]1.0

 

Step 1 - Create the geometry

In the Model section, create the model geometry by creating Cylinder elements and by using the Fragment all and Remove operations as follows.

  1. Create 3 cylinders:

    NameElement typeCenter point (m)Size (m)Rotation (deg)
    inner cylinderCylinderX: 0Radius: Ri90
    Y: 0Height: h0
    Z: 00
    NameElement typeCenter point (m)Size (m)Rotation (deg)
    interface cylinderCylinderX: 0Radius: Rm90
    Y: 0Height: h0
    Z: 00
    NameElement typeCenter point (m)Size (m)Rotation (deg)
    outer cylinderCylinderX: 0Radius: Ro90
    Y: 0Height: h0
    Z: 00
  2. After creating the cylinders, apply the fragment all operation.

  3. Apply the remove operation, with the innermost cylinder (volume 1) as target: Example image

Now, your model geometry is finished, and should look like in the image below.

Example image

 

Step 2 - Define the materials

Proceed to the Properties section to define the model materials.

Water

First, pick the Water material from the material library and assign it to the outer cylinder (volume 3). Save the target as a shared region.

Set the Dynamic viscosity of your water material as par.rho() * nu.

Example image

Aluminium

Then, pick the Aluminium material from the material library and assign it to the interface cylinder (volume 2). Save the target as a shared region.

Set the Thermal conductivity of your aluminium material as ksbykf * 0.55. Here, 0.55 is the thermal conductivity of water.

Example image

Now, your model materials are defined.

 

Step 3 - Define the physics

Proceed to the Physics section to define the physics.

In this example, the Laminar flow, Heat fluid and Heat solid physics are required.

Laminar flow

  • As laminar flow target, select the water region (volume 3).
  • Add Velocity constraint.
    • As Target, select the water cylinder’s outer surface (surface 7).
    • Set Constraint value to [1, w * y; 1, -w * x; 1, 0.0].
    • This constraint essentially applies the constant tangential velocity Uo at the outer surface of the water cylinder.
    • Example image
  • Add Velocity constraint 2.
    • As Target, select the interface surface between fluid and solid (surface 4).
    • Set Constraint value to [1, 0; 1, 0; 1, 0].
    • This is essentially a no-slip constraint at the fluid and solid interface.
    • Example image
  • Add Velocity constraint 3.
    • As Target, select the water cylinder top and bottom surfaces (surfaces 8, 9).
    • Set Constraint value to [0, 0; 0, 0; 1, 0].
    • Example image
    • This constraint essentially stops water flow in the Z-direction through the water cylinder surfaces.
    • This boundary condition is what makes the simulation quasi-2D as the velocity in the Z-direction is set to zero.
  • Add Pressure constraint.
    • As Target, select points 3, 4.
    • Set Constraint value to 0.0.
    • Example image
  • Add the Laminar flow - Heat fluid coupling Thermal fluid.

Heat fluid

  • As Heat fluid target, select the water region (volume 3).
  • Add Constraint.
    • As Target, select the water cylinder outer surface 7.
    • Set Temperature constraint to To.
    • Example image

Heat solid

  • As Heat solid target, select the aluminium region (volume 2).
  • Add Constraint.
    • As Target, select the aluminium cylinder inner surface 1.
    • Set Temperature constraint to Ti.
    • Example image

Now, your physics, their interactions and the couplings are defined. Before moving on, check that your physics tree looks like in the image below. Example image

 

Step 4 - Generate the mesh

Proceed to the Simulations section and create a new mesh. For thin geometries like in this example, it makes sense to use mesh extrusion:

  1. Set Mesh quality to Expert settings.
  2. Set Used mesher to Basic.
  3. Set Scale factor to 0.2.
  4. Click + next to Mesh extrusion.
  5. As Target, select both volumes 2, 3.
  6. This should create just one extrusion layer. Set Sublayer count 1 to 3.
  7. Click Apply & mesh.
  8. Click Show preview. Your mesh preview should look something like in the image below.

Example image

 

Step 5 - Simulate

In this step, we’ll look at:

  1. Setting up the steady state simulation
  2. How to calculate the analytical solution in your steady state simulation through scripting (optional)
  3. Setting up an additional sweep simulation (optional)

Steady state

In the Simulations section, create a new simulation:

  • In Simulation settings:
    • Set Analysis type to Steady state.
    • Set Solver mode to Iterative solver.
    • Set Relative residual tolerance to 1e-6.
  • In Mesh, select the mesh you created.
  • In Outputs:
    • Add temperature field output T.
    • Add velocity field output V.
      • In Targets, select the water volume 3.
    • Add pressure field output p.
      • In Targets, select the water volume 3.

Run your simulation by clicking Not Run.

Scripting the analytical solution

To calculate the analytical solution, add this snippet of code to the end of your steady state simulation.py script file:

#################################################
# VERIFICATION WITH ANALYTICAL SOLUTION
Ro = expr.Ro
Rm = expr.Rm
Ri = expr.Ri
To = expr.To
Ti = expr.Ti
Uo = expr.Uo
ksbykf = expr.ksbykf
# Analytical solution for velocity
def V(r):
"""https://www.researchgate.net/publication/303316864_Improving_a_conjugate-heat-transfer_immersed-boundary_method"""
"""https://www.princeton.edu/~gasdyn/Research/T-C_Research_Folder/Analytical_Solution.html"""
if (r>Ro or r<Rm):
return 0.0
else:
vel = Uo * (Ro/r) * (r*r-Rm*Rm)/(Ro*Ro-Rm*Rm)
return vel
# Analytical solution for temperature
def T(r):
"""https://www.researchgate.net/publication/303316864_Improving_a_conjugate-heat-transfer_immersed-boundary_method"""
if (r >= Ri and r <= Rm):
temp = Ti + (To-Ti) * qs.log(r/Ri) / (qs.log(Rm/Ri)+qs.log(Ro/Rm)*ksbykf)
return temp.evaluate()
elif (r >= Rm and r <= Ro):
temp = To - (To-Ti) * qs.log(Ro/r) / (qs.log(Ro/Rm)+qs.log(Rm/Ri)/ksbykf)
return temp.evaluate()
else:
return 0.0
rT = Rm
Tinterface_analytical = T(rT)
Tinterface_simulation = (fld.T).allinterpolate(qs.selectall(), [0, rT, 0])[0]
rV = (Ro + Rm)/2.0
V_analytical = V(rV)
V_simulation = (fld.V).allinterpolate(qs.selectall(), [0, rV, 0])[0]
if(qs.getrank()==0):
str_rT = f"@ r = {rT}m"; str_rV = f"@ r = {rV}m"
print(f"{'VERIFICATION:'}", flush=True)
print(f"{'':-^75}", flush=True)
print(f"{'':12} {'Temperature [K]':<25} {'Velocity [m/s]':<25}", flush=True)
print(f"{'':12} {str_rT:<25} {str_rV:<25}", flush=True)
print(f"{'':-^75}", flush=True)
print(f"{'Analytical':<12} {Tinterface_analytical:<25} {V_analytical:<25}", flush=True)
print(f"{'Simulation':<12} {Tinterface_simulation:<25} {V_simulation:<25}", flush=True)
print(f"{'':-^75}", flush=True)
print("NOTE: Mesh convergence can be achieved with refinement")
#################################################

Sweep

Create a new simulation by copying the existing steady state simulation:

  • In Simulation 1 settings:
    • Click Copy.
    • Example image
  • In Simulation 1 copy settings:
    • Name the simulation as Sweep.
    • Example image
  • In Inputs:
    • Add ksbykf sweep.
      • Set Override expression to linspace(0.1, 20, 40).
  • In Outputs:
    • Add custom value output:
      • Name: Max T interface.
      • Output expression: maxvalue(reg.interface_surface, T, 5).
    • Add custom value output:
      • Name: FSI flux.
      • Output expression: integrate(reg.interface_surface, transpose(normal(reg.aluminium)) * on(reg.aluminium, -par.k()*grad(T)), 5).

Run the sweep by clicking Not Run.

 

Step 6 - Plot & visualize

In the Simulations section, add plots to see value output results, or visualizations to see field output results. Some examples are given below.

  • Temperature field T visualized:
    • Example image
  • Velocity field v visualized:
    • Example image
  • Pressure field p visualized:
    • Example image

Results

Example image
Simulated velocity and temperature profiles compared with the analytical solution.

References

Footnotes

  1. De Marinis, D., de Tullio, M.D., Napolitano, M. and Pascazio, G. (2016). Improving a conjugate-heat-transfer immersed-boundary method. International Journal of Numerical Methods for Heat & Fluid Flow, Vol. 26 No. 3/4, pp. 1272-1288. https://doi.org/10.1108/HFF-11-2015-0473>