OpenFOAM® v1606+: New Input/Output Functionality

30/06/2016

Global file handling

The handling for shared files has been improved. The search path for any OPENFOAM® type is now a property of the particular type. In general there are two different types of search and read behaviour:

global
for parallel running, if the file is not found locally, it will search in the parent directory. This is the behaviour for e.g. dictionaries. It automatically implies that the data is the same for all processors. If the fileModificationChecking optimisation switch (in the global controlDict dictionary) is set to timeStampMaster or inotifyMaster the data will be read on the master only and distributed to the slaves.
local
it will never search in the parent directory. This is the default behaviour for e.g. fields.

The runTimeModifiable property (rereading from file if it has changed) has been extended to include the UniformDimensionedField, GlobalIOField, GlobalIOList classes.

In practice this does not change any operation but it makes it easier to add master-only reading, and therefore e.g. set up distributed parallel running.

Dictionary tracking

In previous versions, any dictionary file gets (optionally) monitored for changes and triggers a re-read. However, moving dictionary entries into separate files and using #include to include it would break this re-reading.

Dictionary dependency checking has now been extended such that any file, or registered IOobject, can depend on changes to any other file. This is used such that now #include files are monitored for changes and trigger a re-read of anything that includes them as well. The system also makes sure to re-read files only once if files are multiply included.

Examples
windshieldCondensation: $FOAM_TUTORIALS/heatTransfer/chtMultiRegionFoam/windshieldCondensation
uses the timeActivatedFileUpdate function object to change an included file (instead of changing the whole file)

Source code
$FOAM_SRC/OpenFOAM/db/regIOobject