with the more general and flexible 'postProcess' utility and '-postProcess' solver option Rationale --------- Both the 'postProcess' utility and '-postProcess' solver option use the same extensive set of functionObjects available for data-processing during the run avoiding the substantial code duplication necessary for the 'foamCalc' and 'postCalc' utilities and simplifying maintenance. Additionally consistency is guaranteed between solver data processing and post-processing. The functionObjects have been substantially re-written and generalized to simplify development and encourage contribution. Configuration ------------- An extensive set of simple functionObject configuration files are provided in OpenFOAM-dev/etc/caseDicts/postProcessing and more will be added in the future. These can either be copied into '<case>/system' directory and included into the 'controlDict.functions' sub-dictionary or included directly from 'etc/caseDicts/postProcessing' using the '#includeEtc' directive or the new and more convenient '#includeFunc' directive which searches the '<etc>/caseDicts/postProcessing' directories for the selected functionObject, e.g. functions { #includeFunc Q #includeFunc Lambda2 } '#includeFunc' first searches the '<case>/system' directory in case there is a local configuration. Description of #includeFunc --------------------------- Specify a functionObject dictionary file to include, expects the functionObject name to follow (without quotes). Search for functionObject dictionary file in user/group/shipped directories. The search scheme allows for version-specific and version-independent files using the following hierarchy: - \b user settings: - ~/.OpenFOAM/\<VERSION\>/caseDicts/postProcessing - ~/.OpenFOAM/caseDicts/postProcessing - \b group (site) settings (when $WM_PROJECT_SITE is set): - $WM_PROJECT_SITE/\<VERSION\>/caseDicts/postProcessing - $WM_PROJECT_SITE/caseDicts/postProcessing - \b group (site) settings (when $WM_PROJECT_SITE is not set): - $WM_PROJECT_INST_DIR/site/\<VERSION\>/caseDicts/postProcessing - $WM_PROJECT_INST_DIR/site/caseDicts/postProcessing - \b other (shipped) settings: - $WM_PROJECT_DIR/etc/caseDicts/postProcessing An example of the \c \#includeFunc directive: \verbatim #includeFunc <funcName> \endverbatim postProcess ----------- The 'postProcess' utility and '-postProcess' solver option provide the same set of controls to execute functionObjects after the run either by reading a specified set of fields to process in the case of 'postProcess' or by reading all fields and models required to start the run in the case of '-postProcess' for each selected time: postProcess -help Usage: postProcess [OPTIONS] options: -case <dir> specify alternate case directory, default is the cwd -constant include the 'constant/' dir in the times list -dict <file> read control dictionary from specified location -field <name> specify the name of the field to be processed, e.g. U -fields <list> specify a list of fields to be processed, e.g. '(U T p)' - regular expressions not currently supported -func <name> specify the name of the functionObject to execute, e.g. Q -funcs <list> specify the names of the functionObjects to execute, e.g. '(Q div(U))' -latestTime select the latest time -newTimes select the new times -noFunctionObjects do not execute functionObjects -noZero exclude the '0/' dir from the times list, has precedence over the -withZero option -parallel run in parallel -region <name> specify alternative mesh region -roots <(dir1 .. dirN)> slave root directories for distributed running -time <ranges> comma-separated time ranges - eg, ':10,20,40:70,1000:' -srcDoc display source code in browser -doc display application documentation in browser -help print the usage pimpleFoam -postProcess -help Usage: pimpleFoam [OPTIONS] options: -case <dir> specify alternate case directory, default is the cwd -constant include the 'constant/' dir in the times list -dict <file> read control dictionary from specified location -field <name> specify the name of the field to be processed, e.g. U -fields <list> specify a list of fields to be processed, e.g. '(U T p)' - regular expressions not currently supported -func <name> specify the name of the functionObject to execute, e.g. Q -funcs <list> specify the names of the functionObjects to execute, e.g. '(Q div(U))' -latestTime select the latest time -newTimes select the new times -noFunctionObjects do not execute functionObjects -noZero exclude the '0/' dir from the times list, has precedence over the -withZero option -parallel run in parallel -postProcess Execute functionObjects only -region <name> specify alternative mesh region -roots <(dir1 .. dirN)> slave root directories for distributed running -time <ranges> comma-separated time ranges - eg, ':10,20,40:70,1000:' -srcDoc display source code in browser -doc display application documentation in browser -help print the usage The functionObjects to execute may be specified on the command-line using the '-func' option for a single functionObject or '-funcs' for a list, e.g. postProcess -func Q postProcess -funcs '(div(U) div(phi))' In the case of 'Q' the default field to process is 'U' which is specified in and read from the configuration file but this may be overridden thus: postProcess -func 'Q(Ua)' as is done in the example above to calculate the two forms of the divergence of the velocity field. Additional fields which the functionObjects may depend on can be specified using the '-field' or '-fields' options. The 'postProcess' utility can only be used to execute functionObjects which process fields present in the time directories. However, functionObjects which depend on fields obtained from models, e.g. properties derived from turbulence models can be executed using the '-postProcess' of the appropriate solver, e.g. pisoFoam -postProcess -func PecletNo or sonicFoam -postProcess -func MachNo In this case all required fields will have already been read so the '-field' or '-fields' options are not be needed. Henry G. Weller CFD Direct Ltd. |
||
---|---|---|
.. | ||
freeSpacePeriodic | ||
freeSpaceStream | ||
supersonicCorner | ||
wedge15Ma5 | ||
README |
Fields are used by dsmcFoam in several ways, some of which are different to their use elsewhere in OpenFOAM. None of these fields are solved by partial differential equations, they are used either to record simulation data, or to supply boundary data. In each case there are 11 fields: boundaryT, boundaryU: The wall and free stream conditions at the boundary are specified for velocity and temperature with these fields - only the data on the patches is used, the cell data is not. These are the only two fields which supply data to the case. dsmcRhoN: The population of dsmc particles in cells is recorded to visualise how well the cell population conditions required for dsmc are met. The boundary conditions are zeroGradient because only cell data is meaningful. fD, q: The wall heat flux (q) and force density (fD, i.e. stress vector) is recorded with these fields - only the data on wall patches is relevant, the cell data is not. iDof, internalE, linearKE, momentum, rhoM, rhoN: These fields are the densities of extensive quantities in the simulation, i.e. of number, mass, momentum, energy. Cell data is recorded in the internal field and the boundaryField is used to record the data of particles that strike wall patches. The properties of particles striking wall faces are weighted by 1/(Un*fA), where Un is the normal component of the particle's velocity and fA is the face area. This is done so that when intensive quantities, such as velocity or temperature, are evaluated on the wall the values are correct this allows velocity slip and temperature jump to be evaluated. Therefore, the data in these fields on wall patches is of a different type to the volume data. This may cause problems when post-processing, as any interpolation of these fields will have a artifacts in the near wall cells because the values on the faces are radically different. This can be overcome by visualising the data uninterpolated, or by copying the fields and setting zeroGradient boundary conditions on walls. Calculated intensive fields do not have this issue. Further fields are produced by dsmcFoam, i.e. dsmcSigmaTcRMax (used in the selection of collision partners) and by the fieldAverage (averaging the extensive quantity densities) and dsmcFields (calculating intensive quantities, i.e. velocity and temperature, from extensive quantities) function objects in each case as it runs.