Combination of MRFsimpleFoam and conjugateHeatFoam CFD with - - PowerPoint PPT Presentation

combination of mrfsimplefoam and conjugateheatfoam cfd
SMART_READER_LITE
LIVE PREVIEW

Combination of MRFsimpleFoam and conjugateHeatFoam CFD with - - PowerPoint PPT Presentation

conjugateHeatFoam MRFSimpleFoam MRFconjugateHeatFoam Case Setup Case Run Combination of MRFsimpleFoam and conjugateHeatFoam CFD with OpenSource Software Hamed Jamshidi Fluid Dynamics Devision, Applied Mechanics Department, Chalmers


slide-1
SLIDE 1

conjugateHeatFoam MRFSimpleFoam MRFconjugateHeatFoam Case Setup Case Run

Combination of MRFsimpleFoam and conjugateHeatFoam CFD with OpenSource Software

Hamed Jamshidi

Fluid Dynamics Devision, Applied Mechanics Department, Chalmers University of Technology, Gothenburg, Sweden

2012-10-19

Hamed Jamshidi MRFconjugateHeatFoam 2012-10-19 1 / 28

slide-2
SLIDE 2

conjugateHeatFoam MRFSimpleFoam MRFconjugateHeatFoam Case Setup Case Run Introduction

Introduction to conjugateHeatFoam

The solver is included in OpenFoam-1.5-dev

Hamed Jamshidi MRFconjugateHeatFoam 2012-10-19 2 / 28

slide-3
SLIDE 3

conjugateHeatFoam MRFSimpleFoam MRFconjugateHeatFoam Case Setup Case Run Introduction

Introduction to conjugateHeatFoam

The solver is included in OpenFoam-1.5-dev Heat transfer problems where multiple regions (Solid & Fluid) exist

Hamed Jamshidi MRFconjugateHeatFoam 2012-10-19 2 / 28

slide-4
SLIDE 4

conjugateHeatFoam MRFSimpleFoam MRFconjugateHeatFoam Case Setup Case Run Introduction

Introduction to conjugateHeatFoam

The solver is included in OpenFoam-1.5-dev Heat transfer problems where multiple regions (Solid & Fluid) exist The Fluid part of the solver is based on the icoFoam solver

Hamed Jamshidi MRFconjugateHeatFoam 2012-10-19 2 / 28

slide-5
SLIDE 5

conjugateHeatFoam MRFSimpleFoam MRFconjugateHeatFoam Case Setup Case Run Introduction

Introduction to conjugateHeatFoam

The solver is included in OpenFoam-1.5-dev Heat transfer problems where multiple regions (Solid & Fluid) exist The Fluid part of the solver is based on the icoFoam solver The flow equations is only solved for the fluid part of the domain

Hamed Jamshidi MRFconjugateHeatFoam 2012-10-19 2 / 28

slide-6
SLIDE 6

conjugateHeatFoam MRFSimpleFoam MRFconjugateHeatFoam Case Setup Case Run Introduction

Introduction to conjugateHeatFoam

The solver is included in OpenFoam-1.5-dev Heat transfer problems where multiple regions (Solid & Fluid) exist The Fluid part of the solver is based on the icoFoam solver The flow equations is only solved for the fluid part of the domain The energy equation is solved for both the fluid and solid part in a coupled manner

Hamed Jamshidi MRFconjugateHeatFoam 2012-10-19 2 / 28

slide-7
SLIDE 7

conjugateHeatFoam MRFSimpleFoam MRFconjugateHeatFoam Case Setup Case Run Tutorial

Solving an example problem with conjugateHeatFoam

  • The geometry of this case consists of a two blocks.
  • The fluid blocks is a cavity filled with air.
  • The solid block contains the solid part of the domain.
  • The case is a 2D-case.

Hamed Jamshidi MRFconjugateHeatFoam 2012-10-19 3 / 28

slide-8
SLIDE 8

conjugateHeatFoam MRFSimpleFoam MRFconjugateHeatFoam Case Setup Case Run conjugateCavity

conjugateCavity Tutorial

  • Copy the conjugateHeatFoam tutorial folder to your

$FOAM RUN folder: cp -r $FOAM_TUTORIALS/coupled/conjugateHeatFoam/ $FOAM_RUN

  • Go into the case folder:

cd $FOAM_RUN/conjugateHeatFoam

  • Run the case by:

cd conjugateCavity ./Allrun

Hamed Jamshidi MRFconjugateHeatFoam 2012-10-19 4 / 28

slide-9
SLIDE 9

conjugateHeatFoam MRFSimpleFoam MRFconjugateHeatFoam Case Setup Case Run Results

Results of conjugateCavity Case

As seen in the following figures in this case the velocity field is simulated for fluid block and the temprature field is simulated for both blocks.

Temprature Field Velocity Field

Hamed Jamshidi MRFconjugateHeatFoam 2012-10-19 5 / 28

slide-10
SLIDE 10

conjugateHeatFoam MRFSimpleFoam MRFconjugateHeatFoam Case Setup Case Run Solver

A look at conjugateHeatFoam solver source code

The solver could be found in: $FOAM_SOLVERS/coupled/conjugateHeatFoam The conjugateHeatFoam includes: #include "fvCFD.H" #include "coupledFvMatrices.H" #include "regionCouplePolyPatch.H" int main(int argc, char *argv[]) { # include "setRootCase.H" # include "createTime.H" # include "createFluidMesh.H" # include "createSolidMesh.H" # include "createFields.H" # include "createSolidFields.H"

Hamed Jamshidi MRFconjugateHeatFoam 2012-10-19 6 / 28

slide-11
SLIDE 11

conjugateHeatFoam MRFSimpleFoam MRFconjugateHeatFoam Case Setup Case Run conjugateHeatFoam.C

Inside the time-loop

Info<< "\nStarting time loop\n" << endl; for (runTime++; !runTime.end(); runTime++) { Info<< "Time = " << runTime.timeName() << nl << endl; # include "solveFluid.H" // Simplified Navier stokes # include "solveEnergy.H" // Energy equation runTime.write(); Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s\n\n" << endl; } Info<< "End\n" << endl; return(0); }

Hamed Jamshidi MRFconjugateHeatFoam 2012-10-19 7 / 28

slide-12
SLIDE 12

conjugateHeatFoam MRFSimpleFoam MRFconjugateHeatFoam Case Setup Case Run solveFluid.H & solveEnergy.H

Energy and Fluid Flow Equations

Hamed Jamshidi MRFconjugateHeatFoam 2012-10-19 8 / 28

slide-13
SLIDE 13

conjugateHeatFoam MRFSimpleFoam MRFconjugateHeatFoam Case Setup Case Run Review

Quick Review of MRFSimpleFoam

  • Multiple frames of reference is a development of the SRF equation.
  • Compute the absolute Cartesian velocity components, using the flux

relative to the rotation of the local frame of reference

  • The MRFSimpleFoam solver is derived from the simpleFoam solver

by some changes.

Hamed Jamshidi MRFconjugateHeatFoam 2012-10-19 9 / 28

slide-14
SLIDE 14

conjugateHeatFoam MRFSimpleFoam MRFconjugateHeatFoam Case Setup Case Run Review of Tutorial

Quick Review of mixerVessel2D Tutorial

  • Compile solver:

cd $FOAM_RUN/../applications cp -r $FOAM_TUTORIALS/incompressible/MRFSimpleFoam/MRFSimpleFoam wmake MRFSimpleFoam

  • Run tutorial:

cp -r $FOAM_TUTORIALS/incompressible/MRFSimpleFoam\ /mixerVessel2D $FOAM_RUN cd $FOAM_RUN/mixerVessel2D ./Allrun >& log_Allrun &

Hamed Jamshidi MRFconjugateHeatFoam 2012-10-19 10 / 28

slide-15
SLIDE 15

conjugateHeatFoam MRFSimpleFoam MRFconjugateHeatFoam Case Setup Case Run Results of Tutorial

Results of mixerVessel2D Tutorial

Hamed Jamshidi MRFconjugateHeatFoam 2012-10-19 11 / 28

slide-16
SLIDE 16

conjugateHeatFoam MRFSimpleFoam MRFconjugateHeatFoam Case Setup Case Run Introduction

Combination of MRFSimpleFoam & conjugateHeatFoam

Motivation: To simulate heat transfer (at least for especial cases) in Turbomachinery

Hamed Jamshidi MRFconjugateHeatFoam 2012-10-19 12 / 28

slide-17
SLIDE 17

conjugateHeatFoam MRFSimpleFoam MRFconjugateHeatFoam Case Setup Case Run Introduction

Combination of MRFSimpleFoam & conjugateHeatFoam

Motivation: To simulate heat transfer (at least for especial cases) in Turbomachinery How to do this? Implement the MRFSimpleFoam solver into the conjugateHeatFoam

Hamed Jamshidi MRFconjugateHeatFoam 2012-10-19 12 / 28

slide-18
SLIDE 18

conjugateHeatFoam MRFSimpleFoam MRFconjugateHeatFoam Case Setup Case Run Introduction

Combination of MRFSimpleFoam & conjugateHeatFoam

Motivation: To simulate heat transfer (at least for especial cases) in Turbomachinery How to do this? Implement the MRFSimpleFoam solver into the conjugateHeatFoam Steady-state solver for incompressible, turbulent flow of non-Newtonian fluids with MRF regions in fluid block and heat transfer in both solid & fluid block

Hamed Jamshidi MRFconjugateHeatFoam 2012-10-19 12 / 28

slide-19
SLIDE 19

conjugateHeatFoam MRFSimpleFoam MRFconjugateHeatFoam Case Setup Case Run Introduction

Combination of MRFSimpleFoam & conjugateHeatFoam

Motivation: To simulate heat transfer (at least for especial cases) in Turbomachinery How to do this? Implement the MRFSimpleFoam solver into the conjugateHeatFoam Steady-state solver for incompressible, turbulent flow of non-Newtonian fluids with MRF regions in fluid block and heat transfer in both solid & fluid block Copy the MRFconjugateHeatFoam folder to your $FOAM RUN folder and get into it: cd $FOAM_RUN/MRFconjugateHeatFoam

Hamed Jamshidi MRFconjugateHeatFoam 2012-10-19 12 / 28

slide-20
SLIDE 20

conjugateHeatFoam MRFSimpleFoam MRFconjugateHeatFoam Case Setup Case Run Source Code

Look into MRFconjugateHeatFoam.C

The MRFconjugateHeatFoam includes: #include "fvCFD.H" #include "coupledFvMatrices.H" #include "regionCouplePolyPatch.H" #include "singlePhaseTransportModel.H" #include "incompressible/RASModel/RASModel.H" #include "MRFZones.H" int main(int argc, char *argv[]) { # include "setRootCase.H" # include "createTime.H" # include "createFluidMesh.H" # include "createSolidMesh.H" # include "createFields.H" # include "createSolidFields.H"

Hamed Jamshidi MRFconjugateHeatFoam 2012-10-19 13 / 28

slide-21
SLIDE 21

conjugateHeatFoam MRFSimpleFoam MRFconjugateHeatFoam Case Setup Case Run MRFconjugateHeatFoam.C

Inside the time-loop

Info<< "\nStarting time loop\n" << endl; for (runTime++; !runTime.end(); runTime++) { Info<< "Time = " << runTime.timeName() << nl << endl; # include "solveFluid.H" # include "solveEnergy.H" runTime.write(); Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s" << " ClockTime = " << runTime.elapsedClockTime() << " s" << nl << endl; } Info<< "End\n" << endl; return(0); }

Hamed Jamshidi MRFconjugateHeatFoam 2012-10-19 14 / 28

slide-22
SLIDE 22

conjugateHeatFoam MRFSimpleFoam MRFconjugateHeatFoam Case Setup Case Run solveFluid.H

Inside the solveFluid.H

# include "detachPatches.H" # include "CourantNo.H" # include "readSIMPLEControls.H" p.storePrevIter(); // Pressure-velocity SIMPLE corrector // Momentum predictor tmp<fvVectorMatrix> UEqn ( fvm::div(phi, U) + turbulence->divDevReff(U) ); mrfZones.addCoriolis(UEqn()); UEqn().relax(); solve(UEqn() == -fvc::grad(p)); p.boundaryField().updateCoeffs();

Hamed Jamshidi MRFconjugateHeatFoam 2012-10-19 15 / 28

slide-23
SLIDE 23

conjugateHeatFoam MRFSimpleFoam MRFconjugateHeatFoam Case Setup Case Run Compile theSolver

Compile the MRFconjugateHeatFoam solver

Compile solver: cd $FOAM_RUN/../applications cp -r $FOAM_RUN/MRFconjugateHeatFoam . wmake MRFconjugateHeatFoam

Hamed Jamshidi MRFconjugateHeatFoam 2012-10-19 16 / 28

slide-24
SLIDE 24

conjugateHeatFoam MRFSimpleFoam MRFconjugateHeatFoam Case Setup Case Run Generate a Tutorial

Create a Case to Use MRFconjugateHeatFoam

To make a test case for MRFconjugateHeatFoam we strat from the MRFSimple Tutorial mixerVessel2D

Hamed Jamshidi MRFconjugateHeatFoam 2012-10-19 17 / 28

slide-25
SLIDE 25

conjugateHeatFoam MRFSimpleFoam MRFconjugateHeatFoam Case Setup Case Run Generate a Tutorial

Create a Case to Use MRFconjugateHeatFoam

To make a test case for MRFconjugateHeatFoam we strat from the MRFSimple Tutorial mixerVessel2D cd $FOAM_RUN mkdir MRFconjugateHeatFoamcase cd MRFconjugateHeatFoamcase cp -r $FOAM_TUTORIALS/incompressible/MRFSimpleFoam/\ mixerVessel2D .

Hamed Jamshidi MRFconjugateHeatFoam 2012-10-19 17 / 28

slide-26
SLIDE 26

conjugateHeatFoam MRFSimpleFoam MRFconjugateHeatFoam Case Setup Case Run Generate a Tutorial

Create a Case to Use MRFconjugateHeatFoam

To make a test case for MRFconjugateHeatFoam we strat from the MRFSimple Tutorial mixerVessel2D cd $FOAM_RUN mkdir MRFconjugateHeatFoamcase cd MRFconjugateHeatFoamcase cp -r $FOAM_TUTORIALS/incompressible/MRFSimpleFoam/\ mixerVessel2D . Now the geometry should be modified and a solid block added to the

  • uter side of stator

Hamed Jamshidi MRFconjugateHeatFoam 2012-10-19 17 / 28

slide-27
SLIDE 27

conjugateHeatFoam MRFSimpleFoam MRFconjugateHeatFoam Case Setup Case Run Generate a Tutorial

Create a Case to Use MRFconjugateHeatFoam

To make a test case for MRFconjugateHeatFoam we strat from the MRFSimple Tutorial mixerVessel2D cd $FOAM_RUN mkdir MRFconjugateHeatFoamcase cd MRFconjugateHeatFoamcase cp -r $FOAM_TUTORIALS/incompressible/MRFSimpleFoam/\ mixerVessel2D . Now the geometry should be modified and a solid block added to the

  • uter side of stator

The initial condition fo T and DT should be set

Hamed Jamshidi MRFconjugateHeatFoam 2012-10-19 17 / 28

slide-28
SLIDE 28

conjugateHeatFoam MRFSimpleFoam MRFconjugateHeatFoam Case Setup Case Run Generate a Tutorial

Create a Case to Use MRFconjugateHeatFoam

To make a test case for MRFconjugateHeatFoam we strat from the MRFSimple Tutorial mixerVessel2D cd $FOAM_RUN mkdir MRFconjugateHeatFoamcase cd MRFconjugateHeatFoamcase cp -r $FOAM_TUTORIALS/incompressible/MRFSimpleFoam/\ mixerVessel2D . Now the geometry should be modified and a solid block added to the

  • uter side of stator

The initial condition fo T and DT should be set Some modification should be done on fvScheme and fvSoloution files

Hamed Jamshidi MRFconjugateHeatFoam 2012-10-19 17 / 28

slide-29
SLIDE 29

conjugateHeatFoam MRFSimpleFoam MRFconjugateHeatFoam Case Setup Case Run Run the Tutorial

MRFconjugateHeatFoam Test Case

  • copy the MRFconjugateHeatFoamcase into $FOAM RUN

directory and go in it: cd $FOAM_RUN/MRFconjugateHeatFoamcase

  • This case is look like :

Hamed Jamshidi MRFconjugateHeatFoam 2012-10-19 18 / 28

slide-30
SLIDE 30

conjugateHeatFoam MRFSimpleFoam MRFconjugateHeatFoam Case Setup Case Run Test Case Folder Structure

Look into MRFconjugateHeatFoam Case Folders

The case Folder include two folder one for fluid block and one for solid block.

Hamed Jamshidi MRFconjugateHeatFoam 2012-10-19 19 / 28

slide-31
SLIDE 31

conjugateHeatFoam MRFSimpleFoam MRFconjugateHeatFoam Case Setup Case Run Test Case Folder Structure

Look into MRFconjugateHeatFoam Case Folders

The case Folder include two folder one for fluid block and one for solid block. mixerVessel2DFluid is the main folder for solver which also include the solid block information (I.C., B.C. & Mesh) ls mixerVessel2DFluid/0 ls mixerVessel2DFluid/constant

Hamed Jamshidi MRFconjugateHeatFoam 2012-10-19 19 / 28

slide-32
SLIDE 32

conjugateHeatFoam MRFSimpleFoam MRFconjugateHeatFoam Case Setup Case Run Mesh Generation

Generation of Mesh for Fluid and Solid Blocks

The blockMeshDict is generated using m4 macro language and then the mesh is generated by blockMesh vi mixerVessel2DFluid/makeMesh

Hamed Jamshidi MRFconjugateHeatFoam 2012-10-19 20 / 28

slide-33
SLIDE 33

conjugateHeatFoam MRFSimpleFoam MRFconjugateHeatFoam Case Setup Case Run Mesh Generation

Generation of Mesh for Fluid and Solid Blocks

The blockMeshDict is generated using m4 macro language and then the mesh is generated by blockMesh vi mixerVessel2DFluid/makeMesh The makeMesh file contain the following functions: m4 < constant/polyMesh/blockMeshDict.m4 > constant/polyMesh/blockMeshDict blockMesh cellSet setsToZones -noFlipMap

Hamed Jamshidi MRFconjugateHeatFoam 2012-10-19 20 / 28

slide-34
SLIDE 34

conjugateHeatFoam MRFSimpleFoam MRFconjugateHeatFoam Case Setup Case Run Mesh Generation

Generation of Mesh for Fluid and Solid Blocks

The blockMeshDict is generated using m4 macro language and then the mesh is generated by blockMesh vi mixerVessel2DFluid/makeMesh The makeMesh file contain the following functions: m4 < constant/polyMesh/blockMeshDict.m4 > constant/polyMesh/blockMeshDict blockMesh cellSet setsToZones -noFlipMap Look into blockMeshDict.m4 files: vi mixerVessel2DFluid/constant/polyMeshblockMeshDict.m4 vi HeatingVessel/constant/polyMeshblockMeshDict.m4

Hamed Jamshidi MRFconjugateHeatFoam 2012-10-19 20 / 28

slide-35
SLIDE 35

conjugateHeatFoam MRFSimpleFoam MRFconjugateHeatFoam Case Setup Case Run Fluid Mesh Modification

Modification of Mesh for Fluid Block

After running the blockMesh The boundry file should be modified to apply the regioncoupling boundry condition

Hamed Jamshidi MRFconjugateHeatFoam 2012-10-19 21 / 28

slide-36
SLIDE 36

conjugateHeatFoam MRFSimpleFoam MRFconjugateHeatFoam Case Setup Case Run Fluid Mesh Modification

Modification of Mesh for Fluid Block

After running the blockMesh The boundry file should be modified to apply the regioncoupling boundry condition

Hamed Jamshidi MRFconjugateHeatFoam 2012-10-19 21 / 28

slide-37
SLIDE 37

conjugateHeatFoam MRFSimpleFoam MRFconjugateHeatFoam Case Setup Case Run Fluid Mesh Modification

Modification of Mesh for Fluid Block

After running the blockMesh The boundry file should be modified to apply the regioncoupling boundry condition stator { type wall; nFaces 192; startFace 6144; }

Hamed Jamshidi MRFconjugateHeatFoam 2012-10-19 21 / 28

slide-38
SLIDE 38

conjugateHeatFoam MRFSimpleFoam MRFconjugateHeatFoam Case Setup Case Run Fluid Mesh Modification

Modification of Mesh for Fluid Block

After running the blockMesh The boundry file should be modified to apply the regioncoupling boundry condition stator { type wall; nFaces 192; startFace 6144; } stator { type regionCouple; nFaces 192; startFace 6144; shadowRegion region0; shadowPatch stator; attached

  • n;

isWall yes; }

Hamed Jamshidi MRFconjugateHeatFoam 2012-10-19 21 / 28

slide-39
SLIDE 39

conjugateHeatFoam MRFSimpleFoam MRFconjugateHeatFoam Case Setup Case Run Solid Mesh Modification

Modification of Mesh for Solid Block

The boundry file should be modified to apply the regioncoupling boundry condition

Hamed Jamshidi MRFconjugateHeatFoam 2012-10-19 22 / 28

slide-40
SLIDE 40

conjugateHeatFoam MRFSimpleFoam MRFconjugateHeatFoam Case Setup Case Run Solid Mesh Modification

Modification of Mesh for Solid Block

The boundry file should be modified to apply the regioncoupling boundry condition

Hamed Jamshidi MRFconjugateHeatFoam 2012-10-19 22 / 28

slide-41
SLIDE 41

conjugateHeatFoam MRFSimpleFoam MRFconjugateHeatFoam Case Setup Case Run Solid Mesh Modification

Modification of Mesh for Solid Block

The boundry file should be modified to apply the regioncoupling boundry condition stator { type patch; nFaces 96; startFace 2208; }

Hamed Jamshidi MRFconjugateHeatFoam 2012-10-19 22 / 28

slide-42
SLIDE 42

conjugateHeatFoam MRFSimpleFoam MRFconjugateHeatFoam Case Setup Case Run Solid Mesh Modification

Modification of Mesh for Solid Block

The boundry file should be modified to apply the regioncoupling boundry condition stator { type patch; nFaces 96; startFace 2208; } stator { type regionCouple; nFaces 96; startFace 2208; shadowRegion region0; shadowPatch stator; attached

  • n;

isWall yes; }

Hamed Jamshidi MRFconjugateHeatFoam 2012-10-19 22 / 28

slide-43
SLIDE 43

conjugateHeatFoam MRFSimpleFoam MRFconjugateHeatFoam Case Setup Case Run Other Modifications

fvSchemes and fvSoloution Modifications

Some extra modification should be done on fvSchemes and fvSoloution files for fluid block. Some of the solvers do not comply with regionCouple boundry conditions.

Hamed Jamshidi MRFconjugateHeatFoam 2012-10-19 23 / 28

slide-44
SLIDE 44

conjugateHeatFoam MRFSimpleFoam MRFconjugateHeatFoam Case Setup Case Run Initial and Boundry Conditions

Setting Initial and Boundry Conditions

For the Initial T condition an especial boundryField should be set: stator { type regionCoupling; value uniform 500; remoteField T; }

Hamed Jamshidi MRFconjugateHeatFoam 2012-10-19 24 / 28

slide-45
SLIDE 45

conjugateHeatFoam MRFSimpleFoam MRFconjugateHeatFoam Case Setup Case Run Initial and Boundry Conditions for DT

Setting Initial and Boundry Conditions for DT

Also forDT an especial boundryField should be set: stator { type regionCoupling; value uniform 1e-3; remoteField DT; }

Hamed Jamshidi MRFconjugateHeatFoam 2012-10-19 25 / 28

slide-46
SLIDE 46

conjugateHeatFoam MRFSimpleFoam MRFconjugateHeatFoam Case Setup Case Run Run the MRFconjugateHeatFoam

Run the MRFconjugateHeatFoam Solver on the Case

cd $FOAM_RUN/MRFconjugateHeatFoam MRFconjugateHeatFoam -case mixerVessel2DFluid

Hamed Jamshidi MRFconjugateHeatFoam 2012-10-19 26 / 28

slide-47
SLIDE 47

conjugateHeatFoam MRFSimpleFoam MRFconjugateHeatFoam Case Setup Case Run Results

Results of MRFconjugateHeatFoam Case

Temprature Field Velocity Field

Hamed Jamshidi MRFconjugateHeatFoam 2012-10-19 27 / 28

slide-48
SLIDE 48

conjugateHeatFoam MRFSimpleFoam MRFconjugateHeatFoam Case Setup Case Run Results 1.5.dev

Results of MRFconjugateHeatFoam Case With Both Regions

Temprature Field Velocity Field

Hamed Jamshidi MRFconjugateHeatFoam 2012-10-19 28 / 28