ThermalPhaseChangePhaseSystem.C Info statements for parallel run
Summary
Eulerian-Eulerian phase change solvers do not provide the right information about wDmdt, iDmdt and Tf when running in parallel and ThermalPhaseChangePhaseSystem.C is used.
Steps to reproduce
run $FOAM_TUTORIALS/heatTransfer/chtMultiRegionTwoPhaseEulerFoam/solidQuenching2D using one core and 4 cores. The information about wDmdt written in log will start to differ right from the beginning. If more cores are used it can get more obvious depends which core writes the log. Apparently, we can not see the iDmdt because boiling/condensation in the bulk is off but should be easy to see in the same manner.
Example case
A tutorial case can be used.
What is the current bug behaviour?
Described in the summary section.
What is the expected correct behavior?
The information written are meant to be min, mean and max values. Therefore these values are expected to be given as values on the whole domain not on "random" core.
Relevant logs and/or images
Environment information
- OpenFOAM version : v1906
- Operating system : Ubuntu 16.04.6 LTS
- Hardware info :
- Compiler : gcc
Possible fixes
I assume that it happens just because of the functions (min, max, average) used to find/calculate the values.
Using v1912:
ThermalPhaseChangePhaseSystem.C:432..436 `
Info<< "Tf." << pair.name()
<< ": min = " << min(Tf.primitiveField())
<< ", mean = " << average(Tf.primitiveField())
<< ", max = " << max(Tf.primitiveField())
<< endl;`
ThermalPhaseChangePhaseSystem.C:443..448 `
Info<< "iDmdt." << pair.name()
<< ": min = " << min(iDmdt.primitiveField())
<< ", mean = " << average(iDmdt.primitiveField())
<< ", max = " << max(iDmdt.primitiveField())
<< ", integral = " << fvc::domainIntegrate(iDmdt).value()
<< endl;`
ThermalPhaseChangePhaseSystem.C:527..532 `
Info<< "wDmdt." << pair.name()
<< ": min = " << min(wDmdt.primitiveField())
<< ", mean = " << average(wDmdt.primitiveField())
<< ", max = " << max(wDmdt.primitiveField())
<< ", integral = " << fvc::domainIntegrate(wDmdt).value()
<< endl;`
In all these lines change functions min to gMin, max to gMax, average to gAverage. I have not tried the code with the changes by myself.