====== Example of multiscale heat transfer ====== {{ :wiki:images:mupif-logo.png?nolink&100|}} 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. {{ :wiki:examples:scheme1.png?nolink&600 | 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. {{ :wiki:examples:micro-t_mesh.png?nolink&400 | 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. {{ :wiki:examples:macro-t_mesh.png?nolink&400 | 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/Demo12.py on MuPIF installation. import sys sys.path.append('../../..') from mupif import * from mupif import logger #Import module Example10/demoapp.py sys.path.append('../Example10') import demoapp #Read geometry and boundary condition for the microscale thermalMicro = demoapp.thermal('thermalMicro.in','') logger.info(thermalMicro.getApplicationSignature()) #Solve the microscale problem thermalMicro.solveStep(None) #Get effective conductivity from the microscale effConductivity = thermalMicro.getProperty(PropertyID.PID_effective_conductivity,0.0) logger.info('Computed effective conductivity from microscale: %f' % effConductivity.value) #Dump microscale results to VTK files thermalMicroField = thermalMicro.getField(FieldID.FID_Material_number, 0.0) thermalMicroField.field2VTKData().tofile('thermalMicroMaterial') thermalMicroField = thermalMicro.getField(FieldID.FID_Temperature, 0.0) thermalMicroField.field2VTKData().tofile('thermalMicroT') #Read geometry and boundary condition for the macroscale thermalMacro = demoapp.thermal('thermalMacro.in','') #Assign effective conductivity for the whole macroscale domain thermalMacro.setProperty(effConductivity) thermalMacro.solveStep(None) thermalMacroField = thermalMacro.getField(FieldID.FID_Temperature, 0.0) #Dump macroscale results to VTK files thermalMacroField.field2VTKData().tofile('thermalMacroT')