Simple testcase to show multi-world explicit coupling. It uses 'solidFoam'
(the solid functionality from chtMultiRegionFoam) and 'compressibleInterFoam'
to demonstrate cooling a solid block with water. WIP.
World solid
-----------
This is running in a single directory 'solid'. Its local patch 'top'
communicates with the 'fluid' world, patch 'bottom'. It runs solidFoam
to simulate a heated solid block. Note that the physical settings probably
do not make much sense.
World fluid
-----------
This is running in the 'fluid' directory. The local patch 'bottom'
communicates with the 'top' patch of the solid world.
Changes to the original tutorial ('depthCharge2D'):
- changed to a fixed timestep.
- added the 'syncObjects' functionObject. This transfers the data from
one world to the other, once every timestep.
- changed the system/blockMeshDict to define the coupling on the patch:
bottom
{
type mappedWall;
// What to sample:
sampleMode nearestPatchFace;
// Simulation world to sample
sampleWorld solid;
// Region to sample
sampleRegion region0;
// If sampleMode is nearestPatchFace : patch to find faces of
samplePatch top;
// Use database to get data from (one-way or loose coupling in
// combination with functionObject)
sampleDatabase true;
faces
(
(1 5 4 0)
);
}
A similar blockMeshDict boundary definition was used on the solid side:
top
{
type mappedWall;
// What to sample:
sampleMode nearestPatchFace;
// Simulation world to sample
sampleWorld fluid;
// Region to sample
sampleRegion region0;
// If sampleMode is nearestPatchFace : patch to find faces of
samplePatch bottom;
// Use database to get data from (one-way or loose coupling in
// combination with functionObject)
sampleDatabase true;
}
Note that if the 'sampleDatabase' is not mentioned the coupling will be done
from boundary condition to boundary condition. This is a closer coupling but
does mean that both solvers have to run the same number of correctors.