RunFunctions: Added "isTest()" argument parsing function
tutorials: Updated Allrun scripts to propagate the "-test" option
tutorials: Removed the lower Alltest scripts and updated the Allrun to
use the "isTest()" function to handle test-specific operation
in decomposeParDict.
This default number of processors may be overridden by the new "-np"
option to runParallel which must be specified before the application
name e.g.:
runParallel -np 4 pisoFoam
The built-in explicit symplectic integrator has been replaced by a
general framework supporting run-time selectable integrators. Currently
the explicit symplectic, implicit Crank-Nicolson and implicit Newmark
methods are provided, all of which are 2nd-order in time:
Symplectic 2nd-order explicit time-integrator for 6DoF solid-body motion:
Reference:
Dullweber, A., Leimkuhler, B., & McLachlan, R. (1997).
Symplectic splitting methods for rigid body molecular dynamics.
The Journal of chemical physics, 107(15), 5840-5851.
Can only be used for explicit integration of the motion of the body,
i.e. may only be called once per time-step, no outer-correctors may be
applied. For implicit integration with outer-correctors choose either
CrankNicolson or Newmark schemes.
Example specification in dynamicMeshDict:
solver
{
type symplectic;
}
Newmark 2nd-order time-integrator for 6DoF solid-body motion:
Reference:
Newmark, N. M. (1959).
A method of computation for structural dynamics.
Journal of the Engineering Mechanics Division, 85(3), 67-94.
Example specification in dynamicMeshDict:
solver
{
type Newmark;
gamma 0.5; // Velocity integration coefficient
beta 0.25; // Position integration coefficient
}
Crank-Nicolson 2nd-order time-integrator for 6DoF solid-body motion:
The off-centering coefficients for acceleration (velocity integration) and
velocity (position/orientation integration) may be specified but default
values of 0.5 for each are used if they are not specified. With the default
off-centering this scheme is equivalent to the Newmark scheme with default
coefficients.
Example specification in dynamicMeshDict:
solver
{
type CrankNicolson;
aoc 0.5; // Acceleration off-centering coefficient
voc 0.5; // Velocity off-centering coefficient
}
Both the Newmark and Crank-Nicolson are proving more robust and reliable
than the symplectic method for solving complex coupled problems and the
tutorial cases have been updated to utilize this.
In this new framework it would be straight forward to add other methods
should the need arise.
Henry G. Weller
CFD Direct
so that the specification of the name and dimensions are optional in property dictionaries.
Update tutorials so that the name of the dimensionedScalar property is
no longer duplicated but optional dimensions are still provided and are
checked on read.
LTS is selected by the ddt scheme e.g. in the
tutorials/multiphase/interFoam/ras/DTCHull case:
ddtSchemes
{
default localEuler rDeltaT;
}
LTSInterFoam is no longer needed now that interFoam includes LTS
support.
Multi-species, mass-transfer and reaction support and multi-phase
structure provided by William Bainbridge.
Integration of the latest p-U and face-p_U algorithms with William's
multi-phase structure is not quite complete due to design
incompatibilities which needs further development. However the
integration of the functionality is complete.
The results of the tutorials are not exactly the same for the
twoPhaseEulerFoam and reactingTwoPhaseEulerFoam solvers but are very
similar. Further analysis in needed to ensure these differences are
physical or to resolve them; in the meantime the twoPhaseEulerFoam
solver will be maintained.
by introducing rational base-classes rather than using the hideous
'switch' statement. Further rationalization of the cell-selection
mechanism will be implemented via an appropriate class hierarchy to
replace the remaining 'switch' statement.
Mesh-motion is currently handled very inefficiently for cellSets and not
at all for inter-region coupling. The former will be improved when the
cell-selection classes are written and the latter by making the
meshToMesh class a MeshObject after it has been corrected for mapFields.
fvOptions does not have the appropriate structure to support MRF as it
is based on option selection by user-specified fields whereas MRF MUST
be applied to all velocity fields in the particular solver. A
consequence of the particular design choices in fvOptions made it
difficult to support MRF for multiphase and it is easier to support
frame-related and field related options separately.
Currently the MRF functionality provided supports only rotations but
the structure will be generalized to support other frame motions
including linear acceleration, SRF rotation and 6DoF which will be
run-time selectable.
Existing case did not properly converge and suffered slow convergence
with the water level failing to reach an equilibrium. A slight rise in
the channel appears to help the water level reach an equlibrium when the flow
rate over the rise matches the inlet flow rate.
nLimiterIter: Number of iterations during limiter construction
3 (default) is sufficient for 3D simulations with a Courant number 0.5 or so
For larger Courant numbers larger values may be needed but this is
only relevant for IMULES and CMULES
smoothLimiter: Coefficient to smooth the limiter to avoid "diamond"
staggering patters seen in regions of low particle phase-fraction in
fluidised-bed simulations.
The default is 0 as it is not needed for all simulations.
A value of 0.1 is appropriate for fluidised-bed simulations.
The useful range is 0 -> 0.5.
Values larger than 0.5 may cause excessive smearing of the solution.
Previous behavior which may be useful for moving-mesh cases can be
selected using the optional entry:
writeTotalArea yes;
The initial total area is written in the log and data file header e.g.:
# Source : faceZone f0
# Faces : 8
# Area : 1.063860e-02
Description
Specify an etc file to include when reading dictionaries, expects a
single string to follow.
Searches for files from user/group/shipped directories.
The search scheme allows for version-specific and
version-independent files using the following hierarchy:
- \b user settings:
- ~/.OpenFOAM/\<VERSION\>
- ~/.OpenFOAM/
- \b group (site) settings (when $WM_PROJECT_SITE is set):
- $WM_PROJECT_SITE/\<VERSION\>
- $WM_PROJECT_SITE
- \b group (site) settings (when $WM_PROJECT_SITE is not set):
- $WM_PROJECT_INST_DIR/site/\<VERSION\>
- $WM_PROJECT_INST_DIR/site/
- \b other (shipped) settings:
- $WM_PROJECT_DIR/etc/
An example of the \c \#includeEtc directive:
\verbatim
#includeEtc "etcFile"
\endverbatim
The usual expansion of environment variables and other constructs is
retained.
For multi-region cases the default location of blockMeshDict is now system/<region name>
If the blockMeshDict is not found in system then the constant directory
is also checked providing backward-compatibility