/*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: v2106 | | \\ / A nd | Website: www.openfoam.com | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class dictionary; object dictionary; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // #sinclude "someUnknownFile" #sinclude "$FOAM_CASE/someUnknownFile" #includeIfPresent "$FOAM_CASE/someUnknownFile-$FOAM_CASENAME" zeroVelocity uniform (0 0 0); internalField uniform 1; // supply defaults #default internalField uniform 10; #default dimensions [ 1 2 -2 0 0 0 0 ]; #overwrite dimensions [ 0 2 -2 0 0 0 0 ]; // #warn dimensions [ 0 2 -2 0 0 0 0 ]; // #error dimensions [ 0 2 -2 0 0 0 0 ]; 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_6c { key ${/key}; } // Absolute scoping inlet_7 { ${inactive}} // Test variable expansion inlet_8 { $inactive } // Variable expansion for a keyword ${key} { $inactive } #include "testDictInc" outletBase { type inletOutlet; inletValue $internalField; value #include "value"; // error #remove self; x ${${varName}}; // Test indirection/recursive expansion y 6; } outlet { $outletBase } Default_Boundary_Region { valueOut $zeroVelocity; } // this should have no effect (not in scope) #remove inactive // But this should work to remove things in different scopes #remove "/zeroVelocity" inlet_7 { ${inactive} } // Test variable expansion inlet_8 { $inactive } inlet_7a { ${${varType}} } // Test indirection/recursive expansion inlet_7b { ${${varType}} } // Test indirection/recursive expansion #overwrite inlet_8 { type none; } } // No patterns with scoped removal // #remove "/boundaryField/outletB.*" #remove "/boundaryField/outletBase" #include "testDict2" verbatim #{ This is a somewhat larger chunk of verbatim text that we would much prefer to move as a token rather than copying its entire content each time we do parsing or need to resize the token list. #}; foo { $active } bar { $active } baz { $active } "anynumber.*" { $active } // This should work #remove x // This should work too #remove ( bar baz ) // Remove a sub-dictionary entry #remove "/anynumber.*/value" // Removal does not auto-vivify #remove "/nonExistentDict/value" // Add into existing dictionary "/anynumber.*/someValue" 100; // Auto-vivify // - but currently cannot auto-vivify entries with dictionary patterns "/abd/someValue" 100; "/def/'someValue.*" 100; // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //