From 54c516120ca96dec8dc671a92768c3bbfab678d3 Mon Sep 17 00:00:00 2001 From: Henry Weller Date: Sat, 5 Nov 2016 18:17:24 +0000 Subject: [PATCH] driftFluxFoam: Corrected Udm BCs Added 'READ_IF_PRESENT' option to support overriding of the default BCs for complex problems requiring special treatment of Udm at boundaries. Resolves bug-report http://bugs.openfoam.org/view.php?id=2317 --- .../relativeVelocityModel.C | 36 +++++++++++++++++-- .../relativeVelocityModel.H | 6 +++- 2 files changed, 39 insertions(+), 3 deletions(-) diff --git a/applications/solvers/multiphase/driftFluxFoam/relativeVelocityModels/relativeVelocityModel/relativeVelocityModel.C b/applications/solvers/multiphase/driftFluxFoam/relativeVelocityModels/relativeVelocityModel/relativeVelocityModel.C index c8e3bb372..b6e7fbae0 100644 --- a/applications/solvers/multiphase/driftFluxFoam/relativeVelocityModels/relativeVelocityModel/relativeVelocityModel.C +++ b/applications/solvers/multiphase/driftFluxFoam/relativeVelocityModels/relativeVelocityModel/relativeVelocityModel.C @@ -24,6 +24,9 @@ License \*---------------------------------------------------------------------------*/ #include "relativeVelocityModel.H" +#include "fixedValueFvPatchFields.H" +#include "slipFvPatchFields.H" +#include "partialSlipFvPatchFields.H" // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // @@ -33,6 +36,34 @@ namespace Foam defineRunTimeSelectionTable(relativeVelocityModel, dictionary); } +// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // + +Foam::wordList Foam::relativeVelocityModel::UdmPatchFieldTypes() const +{ + const volVectorField& U = mixture_.U(); + + wordList UdmTypes + ( + U.boundaryField().size(), + calculatedFvPatchScalarField::typeName + ); + + forAll(U.boundaryField(), i) + { + if + ( + isA(U.boundaryField()[i]) + || isA(U.boundaryField()[i]) + || isA(U.boundaryField()[i]) + ) + { + UdmTypes[i] = fixedValueFvPatchVectorField::typeName; + } + } + + return UdmTypes; +} + // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // @@ -55,11 +86,12 @@ Foam::relativeVelocityModel::relativeVelocityModel "Udm", alphac_.time().timeName(), alphac_.mesh(), - IOobject::NO_READ, + IOobject::READ_IF_PRESENT, IOobject::AUTO_WRITE ), alphac_.mesh(), - dimensionedVector("Udm", dimVelocity, Zero) + dimensionedVector("Udm", dimVelocity, Zero), + UdmPatchFieldTypes() ) {} diff --git a/applications/solvers/multiphase/driftFluxFoam/relativeVelocityModels/relativeVelocityModel/relativeVelocityModel.H b/applications/solvers/multiphase/driftFluxFoam/relativeVelocityModels/relativeVelocityModel/relativeVelocityModel.H index 475c87704..420a7c3e8 100644 --- a/applications/solvers/multiphase/driftFluxFoam/relativeVelocityModels/relativeVelocityModel/relativeVelocityModel.H +++ b/applications/solvers/multiphase/driftFluxFoam/relativeVelocityModels/relativeVelocityModel/relativeVelocityModel.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2014 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2014-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -52,12 +52,16 @@ class relativeVelocityModel { // Private Member Functions + //- Return the list of patchFieldTypes for Udm derived from U + wordList UdmPatchFieldTypes() const; + //- Disallow default bitwise copy construct relativeVelocityModel(const relativeVelocityModel&); //- Disallow default bitwise assignment void operator=(const relativeVelocityModel&); + protected: // Protected data