Skip to content

Commit fb45a75

Browse files
authored
Simplified heat exchanger tutorial (#301)
1 parent ce54891 commit fb45a75

46 files changed

Lines changed: 1932 additions & 0 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
---
2+
title: Heat exchanger (simplified)
3+
permalink: tutorials-heat-exchanger-simplified.html
4+
keywords: tutorial, CHT, conjugate-heat transfer, OpenFOAM, CalculiX, multi-coupling
5+
summary: This tutorial describes how to run a conjugate heat transfer simulation with three participants, with CalculiX as solid solver and Dirichlet-Neumann coupling.
6+
---
7+
8+
9+
{% note %}
10+
Get the [case files of this tutorial](https://github.com/precice/tutorials/tree/master/heat-exchanger-simplified). Read how in the [tutorials introduction](https://www.precice.org/tutorials.html).
11+
{% endnote %}
12+
13+
## Setup
14+
15+
This tutorial extends the [flow over heated plate: Two meshes](https://precice.org/tutorials-flow-over-heated-plate-two-meshes.html) tutorial, adding another channel flow below the plate. The plate is not heated in this scenario, but is acting as a conducting material for the two fluids, serving as a simplified heat exchanger example.
16+
17+
Contrary to the [heat exchanger](https://precice.org/tutorials-heat-exchanger.html) tutorial, which defines Robin-Robin coupling, this case defines a Dirichlet-Neumann coupling, exchanging temperature (from the fluids to the solid) and heat flux (from the solid to the fluids). Additionally, instead of composing two explicit coupling schemes, this tutorial uses a fully-implicit multi-coupling scheme and is transient.
18+
19+
## Available solvers
20+
21+
Fluid participants:
22+
23+
* OpenFOAM (buoyantPimpleFoam). For more information, have a look at the [OpenFOAM adapter documentation](https://www.precice.org/adapter-openfoam-overview.html).
24+
25+
Solid participant:
26+
27+
* CalculiX. For more information, have a look at the [CalculiX adapter documentation](http://precice.org/adapter-calculix-overview.html). Be sure to use at least version 2.19.1 of the adapter.
28+
29+
## Running the Simulation
30+
31+
Open two separate terminals and start the desired fluid and solid participant by calling the respective run script `run.sh` located in the participant directory. For example:
32+
33+
```bash
34+
cd fluid-top-openfoam
35+
./run.sh
36+
```
37+
38+
and
39+
40+
```bash
41+
cd fluid-bottom-openfoam
42+
./run.sh
43+
```
44+
45+
to run the fluid participants, as well as
46+
47+
```bash
48+
cd solid-calculix
49+
./run.sh
50+
```
51+
52+
to run the solid participant (which is also controlling the coupling).
53+
54+
## Post-processing
55+
56+
Similarly to the [flow over heated plate: Two meshes](https://precice.org/tutorials-flow-over-heated-plate-two-meshes.html) tutorial.
57+
58+
{% disclaimer %}
59+
This offering is not approved or endorsed by OpenCFD Limited, producer and distributor of the OpenFOAM software via www.openfoam.com, and owner of the OPENFOAM® and OpenCFD® trade marks.
60+
{% enddisclaimer %}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
../tools/clean-tutorial-base.sh
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
FoamFile
2+
{
3+
version 2.0;
4+
format ascii;
5+
class volScalarField;
6+
object T;
7+
}
8+
9+
dimensions [ 0 0 0 1 0 0 0 ];
10+
11+
internalField uniform 310;
12+
13+
boundaryField
14+
{
15+
interface
16+
{
17+
type fixedGradient;
18+
gradient uniform 0;
19+
}
20+
inlet
21+
{
22+
type fixedValue;
23+
value $internalField;
24+
}
25+
outlet
26+
{
27+
type zeroGradient;
28+
}
29+
top
30+
{
31+
type zeroGradient;
32+
}
33+
bottom
34+
{
35+
type zeroGradient;
36+
}
37+
slip-bottom
38+
{
39+
type zeroGradient;
40+
}
41+
outerWall
42+
{
43+
type zeroGradient;
44+
}
45+
defaultFaces
46+
{
47+
type empty;
48+
}
49+
}
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
FoamFile
2+
{
3+
version 2.0;
4+
format ascii;
5+
class volVectorField;
6+
object U;
7+
}
8+
9+
dimensions [ 0 1 -1 0 0 0 0 ];
10+
11+
internalField uniform ( 0.1 0 0 );
12+
13+
boundaryField
14+
{
15+
interface
16+
{
17+
type noSlip;
18+
}
19+
inlet
20+
{
21+
type fixedValue;
22+
value $internalField;
23+
}
24+
outlet
25+
{
26+
type zeroGradient;
27+
}
28+
top
29+
{
30+
type slip;
31+
}
32+
bottom
33+
{
34+
type noSlip;
35+
}
36+
slip-bottom
37+
{
38+
type slip;
39+
}
40+
defaultFaces
41+
{
42+
type empty;
43+
}
44+
}
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
FoamFile
2+
{
3+
version 2.0;
4+
format ascii;
5+
class volScalarField;
6+
object alphat;
7+
}
8+
9+
dimensions [ 1 -1 -1 0 0 0 0 ];
10+
11+
internalField uniform 0;
12+
13+
boundaryField
14+
{
15+
interface
16+
{
17+
type compressible::alphatWallFunction;
18+
value uniform 0;
19+
}
20+
inlet
21+
{
22+
type compressible::alphatWallFunction;
23+
value uniform 0;
24+
}
25+
outlet
26+
{
27+
type compressible::alphatWallFunction;
28+
value uniform 0;
29+
}
30+
top
31+
{
32+
type compressible::alphatWallFunction;
33+
value uniform 0;
34+
}
35+
bottom
36+
{
37+
type compressible::alphatWallFunction;
38+
value uniform 0;
39+
}
40+
slip-bottom
41+
{
42+
type compressible::alphatWallFunction;
43+
value uniform 0;
44+
}
45+
defaultFaces
46+
{
47+
type empty;
48+
}
49+
}
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
FoamFile
2+
{
3+
version 2.0;
4+
format ascii;
5+
class volScalarField;
6+
object epsilon;
7+
}
8+
9+
dimensions [ 0 2 -3 0 0 0 0 ];
10+
11+
internalField uniform 0.01;
12+
13+
boundaryField
14+
{
15+
interface
16+
{
17+
type epsilonWallFunction;
18+
value uniform 0.01;
19+
}
20+
inlet
21+
{
22+
type epsilonWallFunction;
23+
value uniform 0.01;
24+
}
25+
outlet
26+
{
27+
type epsilonWallFunction;
28+
value uniform 0.01;
29+
}
30+
top
31+
{
32+
type epsilonWallFunction;
33+
value uniform 0.01;
34+
}
35+
bottom
36+
{
37+
type epsilonWallFunction;
38+
value uniform 0.01;
39+
}
40+
slip-bottom
41+
{
42+
type epsilonWallFunction;
43+
value uniform 0.01;
44+
}
45+
defaultFaces
46+
{
47+
type empty;
48+
}
49+
}
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
FoamFile
2+
{
3+
version 2.0;
4+
format ascii;
5+
class volScalarField;
6+
object k;
7+
}
8+
9+
dimensions [ 0 2 -2 0 0 0 0 ];
10+
11+
internalField uniform 0.1;
12+
13+
boundaryField
14+
{
15+
interface
16+
{
17+
type kqRWallFunction;
18+
value uniform 0.1;
19+
}
20+
inlet
21+
{
22+
type kqRWallFunction;
23+
value uniform 0.1;
24+
}
25+
outlet
26+
{
27+
type kqRWallFunction;
28+
value uniform 0.1;
29+
}
30+
top
31+
{
32+
type kqRWallFunction;
33+
value uniform 0.1;
34+
}
35+
slip-bottom
36+
{
37+
type kqRWallFunction;
38+
value uniform 0.1;
39+
}
40+
bottom
41+
{
42+
type kqRWallFunction;
43+
value uniform 0.1;
44+
}
45+
defaultFaces
46+
{
47+
type empty;
48+
}
49+
}
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
FoamFile
2+
{
3+
version 2.0;
4+
format ascii;
5+
class volScalarField;
6+
object nut;
7+
}
8+
9+
dimensions [ 0 2 -1 0 0 0 0 ];
10+
11+
internalField uniform 0;
12+
13+
boundaryField
14+
{
15+
interface
16+
{
17+
type nutkWallFunction;
18+
value uniform 0;
19+
}
20+
inlet
21+
{
22+
type nutkWallFunction;
23+
value uniform 0;
24+
}
25+
outlet
26+
{
27+
type nutkWallFunction;
28+
value uniform 0;
29+
}
30+
top
31+
{
32+
type nutkWallFunction;
33+
value uniform 0;
34+
}
35+
bottom
36+
{
37+
type nutkWallFunction;
38+
value uniform 0;
39+
}
40+
slip-bottom
41+
{
42+
type nutkWallFunction;
43+
value uniform 0;
44+
}
45+
defaultFaces
46+
{
47+
type empty;
48+
}
49+
}

0 commit comments

Comments
 (0)