From af310075a095e56d59043d16d75820443bffa1db Mon Sep 17 00:00:00 2001 From: Mark Olesen <Mark.Olesen@esi-group.com> Date: Thu, 3 Jan 2019 01:30:27 +0100 Subject: [PATCH] ENH: handle dimensions in dimensioned<Type>::lookupOrAddToDict (#1116) --- .../phasesSystem/phaseSystem/phaseSystem.C | 3 +- .../dimensionedType/Test-dimensionedType.C | 30 ++++++++++++++++++- .../dimensionedType/dimensionedType.C | 8 +++-- 3 files changed, 37 insertions(+), 4 deletions(-) diff --git a/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/phasesSystem/phaseSystem/phaseSystem.C b/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/phasesSystem/phaseSystem/phaseSystem.C index e7ca5bdfb29..8b3850b23de 100644 --- a/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/phasesSystem/phaseSystem/phaseSystem.C +++ b/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/phasesSystem/phaseSystem/phaseSystem.C @@ -236,7 +236,8 @@ Foam::phaseSystem::phaseSystem phasePairs_(), totalPhasePairs_(), Prt_ - ( dimensioned<scalar>::lookupOrAddToDict + ( + dimensioned<scalar>::lookupOrAddToDict ( "Prt", *this, 1.0 ) diff --git a/applications/test/dimensionedType/Test-dimensionedType.C b/applications/test/dimensionedType/Test-dimensionedType.C index 04c7fda5328..c8e69786d26 100644 --- a/applications/test/dimensionedType/Test-dimensionedType.C +++ b/applications/test/dimensionedType/Test-dimensionedType.C @@ -3,7 +3,7 @@ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation - \\/ M anipulation | Copyright (C) 2018 OpenCFD Ltd. + \\/ M anipulation | Copyright (C) 2018-2019 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -23,7 +23,9 @@ License \*---------------------------------------------------------------------------*/ +#include "dictionary.H" #include "dimensionedTensor.H" + using namespace Foam; // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -100,6 +102,32 @@ int main(int argc, char *argv[]) Pout<< "zero vector: " << dimensionedVector(dimLength) << endl; Pout<< "zero tensor: " << dimensionedTensor(dimLength) << endl; + + dictionary dict; + { + dict.add("test1", scalar(10)); + dict.add("test2a", scalar(21)); + dict.add("test5", dimensionedScalar("", 50)); + // This will fail to tokenize: + // dict.add("test5", dimensionedScalar(50)); + } + + Info<< nl << "Get from dictionary: " << dict << nl; + + Info<< "test1 : " << dimensionedScalar("test1", dict) << nl; + Info<< "test2 : " << dimensionedScalar("test2", dimless, 20, dict) << nl; + Info<< "test2a : " << dimensionedScalar("test2a", dimless, 20, dict) << nl; + Info<< "test3 : " + << dimensionedScalar::lookupOrDefault("test3", dict, 30) << nl; + + Info<< "test4 : " + << dimensionedScalar::lookupOrAddToDict("test4", dict, 40) << nl; + + Info<< "test5 : " + << dimensionedScalar::lookupOrAddToDict("test5", dict, -50) << nl; + + Info<< nl << "Dictionary is now: " << dict << nl; + Info<< "End\n" << endl; return 0; diff --git a/src/OpenFOAM/dimensionedTypes/dimensionedType/dimensionedType.C b/src/OpenFOAM/dimensionedTypes/dimensionedType/dimensionedType.C index 4a932cf8425..652c9bd58d7 100644 --- a/src/OpenFOAM/dimensionedTypes/dimensionedType/dimensionedType.C +++ b/src/OpenFOAM/dimensionedTypes/dimensionedType/dimensionedType.C @@ -244,8 +244,12 @@ Foam::dimensioned<Type> Foam::dimensioned<Type>::lookupOrAddToDict const Type& defaultValue ) { - Type value = dict.lookupOrAddDefault<Type>(name, defaultValue); - return dimensioned<Type>(name, dims, value); + if (!dict.found(name)) + { + (void) dict.add(name, defaultValue); + } + + return dimensioned<Type>(name, dims, dict); } -- GitLab