User Tools

Site Tools


Example of multiscale heat transfer

This example demonstrates a multiscale approach for solving stationary heat transfer on a perforated ceramic sheet. Due to a periodic sheet structure, it is advantageous to separate two scales:

  • Macroscale - the ceramic sheet has dimensions 400 x 200 mm and contains circular holes, see figure below. Heat transfer model simplifies such a heterogeneous morphology to a homogeneous continuum using an effective conductivity coming from a microscale.
  • Microscale - a representative volume element (RVE) captures morphology of ceramic sheet with a circular hole. RVE size is 2 x 2 mm. Effective conductivity of RVE is determined.

 Micro and macroscale problem

Microscale simulation considers RVE with a temperature gradient in x direction, assigning 0oC to the left edge and 1oC to the right edge. Solution of heat balance equation via finite elements provides temperature field on figure below. The RVE uses a regular structured mesh of 40 x 40 quadrilateral elements which yields 1599 equations for unknown temperature field. Heat conductivity is assigned as 1.0 W/m/K for solid elements. The effective conductivity is obtained by calculating heat flow on the right edge and from assigned boundary temperatures. The effective conductivity yields 0.314 W/m/K from the RVE and computation time is about 2.0 s.

 Temperature field on a microscale loaded with temperature gradient

Effective conductivity from the microscale is passed to the macroscale. Macroscale has dimensions 400 x 200 mm and is discretized into 40 x 20 finite elements, yielding 840 equations for unknown temperature field. Solution time is about 1.0 s. Figure below shows discretization and the resulting temperature field.

 Temperature field on a macroscale with assigned boundary conditions

The MuPIF control script for this simulation is showed below. It can be also found under examples/Example12/ on MuPIF installation.

import sys
from mupif import *
from mupif import logger
#Import module Example10/
import demoapp
#Read geometry and boundary condition for the microscale
thermalMicro = demoapp.thermal('','')
#Solve the microscale problem
#Get effective conductivity from the microscale
effConductivity = thermalMicro.getProperty(PropertyID.PID_effective_conductivity,0.0)'Computed effective conductivity from microscale: %f' % effConductivity.value)
#Dump microscale results to VTK files
thermalMicroField = thermalMicro.getField(FieldID.FID_Material_number, 0.0)
thermalMicroField = thermalMicro.getField(FieldID.FID_Temperature, 0.0)
#Read geometry and boundary condition for the macroscale
thermalMacro = demoapp.thermal('','')
#Assign effective conductivity for the whole macroscale domain
thermalMacroField = thermalMacro.getField(FieldID.FID_Temperature, 0.0)
#Dump macroscale results to VTK files
wiki/examples/multiscale-heat-transfer-demo.txt · Last modified: 2016/05/06 11:33 by bp