diff --git a/.gitlab/issue_templates/bug.md b/.gitlab/issue_templates/bug.md index 1423a4aa00..636bc4d576 100644 --- a/.gitlab/issue_templates/bug.md +++ b/.gitlab/issue_templates/bug.md @@ -3,6 +3,9 @@ Before opening a new issue, make sure to search for keywords in the issues filtered by the "bug" label and check to see if it has already been reported + + You can see how your report will be rendered on the platform by using the + "preview" tab above --> - ### Steps to reproduce - ### Example case - ### What is the current *bug* behaviour? - ### What is the expected *correct* behavior? - ### Relevant logs and/or images - ### Environment information -OpenFOAM version : -Operating system : -Compiler : + +- OpenFOAM version : +- Operating system : +- Hardware info : +- Compiler : ### Possible fixes /label ~bug diff --git a/src/OpenFOAM/db/IOobjectList/IOobjectListTemplates.C b/src/OpenFOAM/db/IOobjectList/IOobjectListTemplates.C index 3c31f51aa6..14c4f2235e 100644 --- a/src/OpenFOAM/db/IOobjectList/IOobjectListTemplates.C +++ b/src/OpenFOAM/db/IOobjectList/IOobjectListTemplates.C @@ -622,11 +622,16 @@ Foam::label Foam::IOobjectList::filterClasses const bool pruning ) { -// return HashPtrTable::filterValues -// ( -// [&](const IOobject* io){ return pred(io->headerClassName()); }, -// pruning -// ); +// This is like +// return HashPtrTable::filterValues +// ( +// [&](const IOobject* io){ return pred(io->headerClassName()); }, +// pruning +// ); +// which is really +// return HashTable::filterValues +// +// except that it does not leak label changed = 0; @@ -654,7 +659,29 @@ Foam::label Foam::IOobjectList::filterObjects const bool pruning ) { - return HashPtrTable::filterKeys(pred, pruning); +// This is like +// return HashPtrTable::filterKeys(pred, pruning); +// which is really +// return HashTable::filterKeys(pred, pruning); +// +// except that it does not leak + + label changed = 0; + + for (iterator iter = begin(); iter != end(); ++iter) + { + // Matches? either prune (pruning) or keep (!pruning) + if + ( + (pred(iter.key()) ? pruning : !pruning) + && erase(iter) + ) + { + ++changed; + } + } + + return changed; } diff --git a/src/OpenFOAM/fields/DimensionedFields/DimensionedField/DimensionedField.C b/src/OpenFOAM/fields/DimensionedFields/DimensionedField/DimensionedField.C index da42cc7386..1fcf0353bc 100644 --- a/src/OpenFOAM/fields/DimensionedFields/DimensionedField/DimensionedField.C +++ b/src/OpenFOAM/fields/DimensionedFields/DimensionedField/DimensionedField.C @@ -299,7 +299,7 @@ Foam::DimensionedField::DimensionedField const DimensionedField& df ) : - regIOobject(newName, df, newName == df.name()), + regIOobject(newName, df, newName != df.name()), Field(df), mesh_(df.mesh_), dimensions_(df.dimensions_), diff --git a/src/TurbulenceModels/compressible/turbulentFluidThermoModels/derivedFvPatchFields/externalWallHeatFluxTemperature/externalWallHeatFluxTemperatureFvPatchScalarField.C b/src/TurbulenceModels/compressible/turbulentFluidThermoModels/derivedFvPatchFields/externalWallHeatFluxTemperature/externalWallHeatFluxTemperatureFvPatchScalarField.C index 3e1b312bdd..56bbf2d8db 100644 --- a/src/TurbulenceModels/compressible/turbulentFluidThermoModels/derivedFvPatchFields/externalWallHeatFluxTemperature/externalWallHeatFluxTemperatureFvPatchScalarField.C +++ b/src/TurbulenceModels/compressible/turbulentFluidThermoModels/derivedFvPatchFields/externalWallHeatFluxTemperature/externalWallHeatFluxTemperatureFvPatchScalarField.C @@ -413,14 +413,14 @@ void Foam::externalWallHeatFluxTemperatureFvPatchScalarField::updateCoeffs() scalarField lambdaTa4(pow4((1 - TpLambda)*Ta)); hp += emissivity_*sigma.value()*(pow4(Ts) - lambdaTa4)/Tp; - hpTa += sigma.value()*(emissivity_*lambdaTa4 + pow4(Ta)); + hpTa += emissivity_*sigma.value()*(lambdaTa4 + pow4(Ta)); } else { // ... if there is no solid wall thermal resistance use // the current wall temperature hp += emissivity_*sigma.value()*pow3(Tp); - hpTa += sigma.value()*pow4(Ta); + hpTa += emissivity_*sigma.value()*pow4(Ta); } } @@ -456,20 +456,14 @@ void Foam::externalWallHeatFluxTemperatureFvPatchScalarField::updateCoeffs() mixedFvPatchScalarField::updateCoeffs(); - if (debug) - { - const scalar Q = gSum(kappa(Tp)*patch().magSf()*snGrad()); - - Info<< patch().boundaryMesh().mesh().name() << ':' - << patch().name() << ':' - << internalField().name() << " :" - << " heat transfer rate:" << Q - << " wall temperature " - << " min:" << gMin(*this) - << " max:" << gMax(*this) - << " avg:" << gAverage(*this) - << endl; - } + DebugInfo + << patch().boundaryMesh().mesh().name() << ':' << patch().name() << ':' + << internalField().name() << " :" + << " heat transfer rate:" << gSum(kappa(Tp)*patch().magSf()*snGrad()) + << " wall temperature " + << " min:" << gMin(*this) + << " max:" << gMax(*this) + << " avg:" << gAverage(*this) << nl; } diff --git a/src/functionObjects/graphics/runTimePostProcessing/runTimePostProcessing.C b/src/functionObjects/graphics/runTimePostProcessing/runTimePostProcessing.C index 8d0deb0e2b..128caf7255 100644 --- a/src/functionObjects/graphics/runTimePostProcessing/runTimePostProcessing.C +++ b/src/functionObjects/graphics/runTimePostProcessing/runTimePostProcessing.C @@ -42,15 +42,14 @@ License #include "vtkSmartPointer.h" #include "vtkLight.h" +#include "vtkDummyController.h" + #ifdef FOAM_USING_VTK_MPI # include "vtkMPICommunicator.h" # include "vtkMPIController.h" +# include "vtkCompositedSynchronizedRenderers.h" +# include "vtkSynchronizedRenderWindows.h" #endif -#include "vtkDummyController.h" - -#include "vtkSynchronizedRenderWindows.h" -#include "vtkCompositedSynchronizedRenderers.h" - // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // @@ -137,27 +136,21 @@ void Foam::functionObjects::runTimePostProcessing::render Log << name() << " render" << endl; } - - // Normal rendering elements - vtkSmartPointer renderer; - vtkSmartPointer renderWindow; - - // Multi-process synchronization - vtkSmartPointer syncWindows; - vtkSmartPointer syncRenderers; - - // Disable any floating point trapping // (some low-level rendering functionality does not like it) sigFpe::ignore sigFpeHandling; //<- disable in local scope + // Normal rendering elements + vtkSmartPointer renderer; + vtkSmartPointer renderWindow; + // Initialise render window if (controller || Pstream::master()) { - renderWindow = vtkSmartPointer::New(); renderer = vtkSmartPointer::New(); + renderWindow = vtkSmartPointer::New(); renderWindow->OffScreenRenderingOn(); renderWindow->SetSize(output_.width_, output_.height_); @@ -174,15 +167,22 @@ void Foam::functionObjects::runTimePostProcessing::render renderWindow->AddRenderer(renderer); } - // Synchronization + + // --------------------- + #ifdef FOAM_USING_VTK_MPI + + // Multi-process synchronization + vtkSmartPointer syncRenderers; + vtkSmartPointer syncWindows; + if (controller) { - syncWindows = - vtkSmartPointer::New(); - syncRenderers = vtkSmartPointer::New(); + syncWindows = + vtkSmartPointer::New(); + syncWindows->SetRenderWindow(renderWindow); syncWindows->SetParallelController(controller); syncWindows->SetIdentifier(1); @@ -193,7 +193,7 @@ void Foam::functionObjects::runTimePostProcessing::render syncRenderers->SetRenderer(renderer); syncRenderers->SetParallelController(controller); } - + #endif // --------------------- scene_.initialise(renderer, output_.name_);