The new optional 'slash' scoping syntax is now the default and provides a more
intuitive and flexible syntax than the previous 'dot' syntax, corresponding to
the common directory/file access syntax used in UNIX, providing support for
reading entries from other dictionary files.
In the 'slash' syntax
'/' is the scope operator
'../' is the parent dictionary scope operator
'!' is the top-level dictionary scope operator
Examples:
internalField 3.4;
active
{
type fixedValue;
value.air $internalField;
}
inactive
{
type anotherFixedValue;
value $../active/value.air;
anotherValue $!active/value.air;
sub
{
value $../../active/value.air;
anotherValue $!active/value.air;
}
}
"U.*"
{
solver GAMG;
}
e.air
{
$U.air;
}
external
{
value $testSlashDict2!active/value.air;
}
active2
{
$testSlashDict2!active;
}
If there is a part of the keyword before the '!' then this is taken to be the
file name of the dictionary from which the entry will be looked-up using the
part of the keyword after the '!'. For example given a file testSlashDict containing
internalField 5.6;
active
{
type fixedValue;
value.air $internalField;
}
entries from it can be read directly from another file, e.g.
external
{
value $testSlashDict2!active/value.air;
}
active2
{
$testSlashDict2!active;
}
which expands to
external
{
value 5.6;
}
active2
{
type fixedValue;
value.air 5.6;
}
These examples are provided in applications/test/dictionary.
The the default syntax can be changed from 'slash' to 'dot' in etc/controlDict
to revert to the previous behaviour:
OptimisationSwitches
{
.
.
.
// Default dictionary scoping syntax
inputSyntax slash; // Change to dot for previous behaviour
}
or within a specific dictionary by adding the entry
See applications/test/dictionary/testDotDict.
Overview ======== + This is a template case with single inlet and outlet + Setup to run the simpleFoam solver + The case is designed to be meshed with snappyHexMesh + snappyHexMesh is setup to use a single trisurface file named CAD.obj + Copy the CAD.obj file to the constant/triSurface directory + The CAD.obj should contain an inlet and outlet region to create the relevant patches in the mesh Background Mesh =============== + The user should establish the bounds of their CAD.obj file + The blockMeshDict file contains a backgroundMesh subditionary + For internal flows, where CAD.obj describes the external boundary, set xMin, xMax, etc to be beyond the CAD.obj bounds + For external flows, the background mesh can define the external boundary by uncommenting entries, e.g. left, in the boundary section of blockMeshDict + Set background mesh density with xCells, yCells, zCells + Run blockMesh Castellated Mesh ================ + In the snappyHexMeshDict file, replace <inletPatch> with the name of the inlet region in the CAD.obj file + Replace <outletPatch> with the name of the outlet region + run snappyHexMesh to obtain a castellatedMesh + Review the mesh; modify refinement levels and regenerate the mesh as required (levels are set in refinementSurfaces and refinementRegions) Snapped Mesh ============ + In snappyHexMeshDict, set castellatedMesh off; snap on; + Run the snapping phase of snappyHexMesh + Review the mesh Layers ====== + To add layers to the mesh along wall boundary patches... + Switch on addLayers; switch snap off; + Run snappyHexMesh + The number of layers can be changed by modifying nSurfaceLayers Initialisation ============== + In the field files in the 0 directory, set inlet values + For example, in 0/U, set the inlet velocity Uinlet + Set the viscosity in constant/transportProperties