SIMPLEC (SIMPLE-consistent) is selected by setting "consistent" option true/yes:
SIMPLE
{
nNonOrthogonalCorrectors 0;
consistent yes;
}
which relaxes the pressure in a "consistent" manner and additional
relaxation of the pressure is not generally necessary. In addition
convergence of the p-U system is better and reliable with less
aggressive relaxation of the momentum equation, e.g. for the motorbike
tutorial:
relaxationFactors
{
equations
{
U 0.9;
k 0.7;
omega 0.7;
}
}
The cost per iteration is marginally higher but the convergence rate is
better so the number of iterations can be reduced.
The SIMPLEC algorithm also provides benefit for cases with large
body-forces, e.g. SRF, see tutorials/incompressible/SRFSimpleFoam/mixer
and feature request http://www.openfoam.org/mantisbt/view.php?id=1714
Example usage:
SBM
{
type tabulatedAccelerationSource;
active true;
selectionMode all;
tabulatedAccelerationSourceCoeffs
{
timeDataFileName "constant/acceleration.dat";
}
}
Where the file constant/acceleration.dat contains a list of tuples
containing time and a vector of the linear acceleration, angular
velocity and angular acceleration e.g.
100
(
(0 ((0 0 0) (0 0 0) (0 0 0)))
(0.001 ((-0.0001 0 4e-05) (5e-5 -0.0002 -3e-8) (0.24 -0.8 -1e-4)))
.
.
.
)
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.
The templates include a stategy to simplify meshing with snappyHexMesh,
particularly to help generate an initial mesh quickly that can subsequently be
improved. The templates are setup to enable rapid initial simulations, typically
with simpleFoam. The initial templates cover simple inflow-outflow and closed
domains, including rotating geometry, and an example axisymmetric flow. For
more details, consult the README file accompanying each template case.
The cases are located in $FOAM_ETC/templates
This had been used in functionObjects:
Info(log)<< "messages" << data << ....
in which it is not at all clear what the "log" argument does whereas
if (log) Info<< "messages" << data << ....
is totally clear and more efficient.
On 32bit OSs long is not unambiguously int32_t (or int64_t) causing
problems for IO operator resolution. This problem is avoided by
explicitly defining the following operators: