To correct the previous commit, the BlockSolverPerformance has been enhanced
by a replace(...) and max(...) memeber function.
The matrix solve functions of fvMatrix, faMatrix and tetFemMatrix now store
solver performance data for all components in the solverPerformance dictionary
of solution. However, they will still return a scalar-valued
lduSolverPerformance based on the component with the max residual.
This is necessary as otherwise the type of a non-scalar field, which may be
specified in fvSolution::residualControl does not match the type which is
written to and read from the solverPerformance dictionary in the
maxTypeResidual(...) from solutionControl. If e.g. the field U is given
in fvSolution::residualControl of solutionControl, the constructor of
BlockSolverPerformance in the maxTypeResidual(...) from solutionControl
expects to read a vector ( u1 u2 u3 ) from the dictionary and not just one
component.
The changes are inspired and directly related to the following vanilla
commit:
1944b09bb5
Note: a minor bugfix is also included (previously, dev has been used instead of
dev2. This is included in the current mathematical reformulation).
Tested on cavity case: now simpleFoam with laminar turbulence model gives
exactly the same results as icoFoam.
Instead of calculating pressure gradient and convection terms in each
wall function (for each patch), function objects pressureGradient and
velocityConvection will update them and register them in the database and we
only fetch the data when updating wall functions.
Modified enhanced wall treatment by Sutalo, wall functions are
sensitive to convection and pressure gradient effects.
Author: Filip Sutalo, Merge: Vuko Vukcevic
Compound wall treatment by Popovac and Hanjalic, wall functions are sensitive to
flow unsteadiness, convection effects and pressure gradient effects.
Author: Filip Sutalo, Merge: Vuko Vukcevic