mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
- The logic for switching input-mode was previously completely encapsulated within the #inputMode directive, but without any programming equivalent. Furthermore, the encapsulation in inputMode made the logic less clear in other places. Exposing the inputMode as an enum with direct access from entry simplifies things a fair bit. - eliminate one level of else/if nesting in entryIO.C for clearer logic - for dictionary function entries, simply use addNamedToMemberFunctionSelectionTable() and avoid defining a type() as a static. For most function entries the information is only used to get a name for the selection table lookup anyhow.
124 lines
2.7 KiB
C++
124 lines
2.7 KiB
C++
/*--------------------------------*- C++ -*----------------------------------*\
|
|
| ========= | |
|
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
|
| \\ / O peration | Version: plus |
|
|
| \\ / A nd | Web: www.OpenFOAM.com |
|
|
| \\/ M anipulation | |
|
|
\*---------------------------------------------------------------------------*/
|
|
FoamFile
|
|
{
|
|
version 2.0;
|
|
format ascii;
|
|
class dictionary;
|
|
object testDict;
|
|
}
|
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
#inputMode merge
|
|
#includeIfPresent "someUnknownFile"
|
|
#includeIfPresent "$FOAM_CASE/someUnknownFile"
|
|
#includeIfPresent "$FOAM_CASE/someUnknownFile-$FOAM_CASENAME"
|
|
|
|
internalField uniform 1;
|
|
|
|
// use 'protect' to supply defaults
|
|
#inputMode protect
|
|
internalField uniform 10;
|
|
dimensions [ 0 2 -2 0 0 0 0 ];
|
|
#inputMode merge
|
|
|
|
active
|
|
{
|
|
type turbulentIntensityKineticEnergyInlet;
|
|
intensity 0.1;
|
|
value $internalField;
|
|
}
|
|
|
|
inactive
|
|
{
|
|
type zeroGradient;
|
|
}
|
|
|
|
|
|
// Indirection
|
|
varType active;
|
|
|
|
// Indirection of values
|
|
x 5;
|
|
varName x;
|
|
|
|
|
|
//Indirection for keys
|
|
key inlet_9;
|
|
|
|
|
|
boundaryField
|
|
{
|
|
Default_Boundary_Region
|
|
{
|
|
type zeroGradient;
|
|
}
|
|
|
|
inlet_1 { $active }
|
|
inlet_2 { $inactive }
|
|
inlet_3 { $inactive }
|
|
inlet_4 { $inactive }
|
|
inlet_5 "a primitiveEntry is squashed by a directory entry";
|
|
inlet_5 { $inactive }
|
|
inlet_6a { $...inactive } // Relative scoping - fairly horrible to use
|
|
inlet_6b { $^inactive } // Absolute scoping
|
|
inlet_7 { ${inactive}} // Test variable expansion
|
|
inlet_8 { $inactive }
|
|
${key} { $inactive }
|
|
|
|
#include "testDictInc"
|
|
|
|
outlet
|
|
{
|
|
type inletOutlet;
|
|
inletValue $internalField;
|
|
value #include "value";
|
|
// error #remove self;
|
|
x ${${varName}}; // Test indirection/recursive expansion
|
|
y 6;
|
|
}
|
|
|
|
// this should have no effect
|
|
#remove inactive
|
|
|
|
inlet_7 { ${${varType}}} // Test indirection/recursive expansion
|
|
#inputMode overwrite
|
|
inlet_8 { $active }
|
|
}
|
|
|
|
// NB: the inputMode has a global scope
|
|
#inputMode merge
|
|
#include "testDict2"
|
|
|
|
foo
|
|
{
|
|
$active
|
|
}
|
|
|
|
bar
|
|
{
|
|
$active
|
|
}
|
|
|
|
baz
|
|
{
|
|
$active
|
|
}
|
|
|
|
"anynumber.*"
|
|
{
|
|
$active
|
|
}
|
|
|
|
// this should work
|
|
#remove active
|
|
|
|
// this should work too
|
|
#remove ( bar baz )
|
|
|
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|