From 31b172217cb728558a135e93bcf483f8d6882c61 Mon Sep 17 00:00:00 2001 From: Mark Olesen Date: Tue, 2 Jun 2020 12:22:54 +0200 Subject: [PATCH] ENH: support predicate checks for argList (similar to dictionary methods) - Favour use of argList methods that are more similar to dictionary method names with the aim of reducing the cognitive load. * Silently deprecate two-parameter get() method in favour of the more familiar getOrDefault. * Silently deprecate opt() method in favour of get() These may be verbosely deprecated in future versions. --- .../basic/potentialFoam/createFields.H | 2 +- .../overPotentialFoam/createFields.H | 2 +- .../solvers/lagrangian/DPMFoam/createFields.H | 2 +- .../createFields.H | 2 +- .../createFields.H | 2 +- applications/test/argList/Test-argList.C | 59 ++++++++- .../Test-checkDecomposePar.C | 5 +- .../test/decomposePar/Test-decomposePar.C | 12 +- .../Test-externalFileCoupler.C | 4 +- .../momentOfInertia/Test-momentOfInertia.C | 3 +- applications/test/spline/Test-spline.C | 3 +- .../Test-surfaceIntersection.C | 4 +- .../Test-surfaceMeshConvert.C | 4 +- .../test/surfaceWriter/Test-surfaceWriter.C | 5 +- applications/test/tokenize/Test-tokenize.C | 3 +- .../vtkSeriesWriter/Test-vtkSeriesWriter.C | 4 +- applications/tools/foamCalc/foamCalc.C | 2 +- .../combinePatchFaces/combinePatchFaces.C | 4 +- .../mesh/advanced/splitCells/splitCells.C | 3 +- .../mesh/conversion/ansysToFoam/ansysToFoam.L | 2 +- .../mesh/conversion/ccm/ccmToFoam/ccmToFoam.C | 4 +- .../mesh/conversion/cfx4ToFoam/cfx4ToFoam.C | 3 +- .../mesh/conversion/fireToFoam/fireToFoam.C | 4 +- .../fluentMeshToFoam/fluentMeshToFoam.L | 3 +- .../foamToStarMesh/foamToStarMesh.C | 4 +- .../conversion/foamToSurface/foamToSurface.C | 3 +- .../conversion/gambitToFoam/gambitToFoam.L | 3 +- .../mesh/conversion/kivaToFoam/kivaToFoam.C | 6 +- .../conversion/plot3dToFoam/plot3dToFoam.C | 3 +- .../mesh/conversion/star4ToFoam/star4ToFoam.C | 4 +- .../extrude/extrudeMesh/extrudeMesh.C | 2 +- .../foamyMesh/foamyHexMesh/foamyHexMesh.C | 4 +- .../foamyHexMeshBackgroundMesh.C | 7 +- .../generation/snappyHexMesh/snappyHexMesh.C | 4 +- .../mesh/manipulation/checkMesh/checkMesh.C | 2 +- .../manipulation/createPatch/createPatch.C | 2 +- .../manipulation/mergeMeshes/mergeMeshes.C | 6 +- .../mesh/manipulation/refineMesh/refineMesh.C | 4 +- .../transformPoints/transformPoints.C | 6 +- .../foamDictionary/foamDictionary.C | 2 +- .../decomposePar/decomposePar.C | 8 +- .../reconstructParMesh/reconstructParMesh.C | 5 +- .../redistributePar/redistributePar.C | 11 +- .../foamToEnsight/foamToEnsight.C | 4 +- .../dataConversion/foamToVTK/foamToVTK.C | 5 +- .../lumpedPointMovement/lumpedPointMovement.C | 8 +- .../temporalInterpolate/temporalInterpolate.C | 6 +- .../createZeroDirectory/createZeroDirectory.C | 2 +- .../foamUpgradeCyclics/foamUpgradeCyclics.C | 5 +- .../preProcessing/mapFields/mapFields.C | 4 +- .../setExprFields/setExprFields.C | 4 +- .../utilities/surface/surfaceAdd/surfaceAdd.C | 4 +- .../surfaceBooleanFeatures.C | 2 +- .../surface/surfaceCheck/surfaceCheck.C | 7 +- .../surface/surfaceClean/surfaceClean.C | 3 +- .../surface/surfaceCoarsen/surfaceCoarsen.C | 3 +- .../surface/surfaceConvert/surfaceConvert.C | 2 +- .../surface/surfaceFind/surfaceFind.C | 7 +- .../surface/surfaceInertia/surfaceInertia.C | 2 +- .../surface/surfaceInflate/surfaceInflate.C | 5 +- .../surfaceMeshConvert/surfaceMeshConvert.C | 2 +- .../surfaceMeshExport/surfaceMeshExport.C | 4 +- .../surfaceMeshImport/surfaceMeshImport.C | 4 +- .../surface/surfaceMeshInfo/surfaceMeshInfo.C | 4 +- .../surface/surfaceOrient/surfaceOrient.C | 3 +- .../surfacePointMerge/surfacePointMerge.C | 3 +- .../surfaceRedistributePar.C | 2 +- .../surface/surfaceToPatch/surfaceToPatch.C | 3 +- .../functionObjectList/functionObjectList.C | 4 +- src/OpenFOAM/global/argList/argList.C | 10 ++ src/OpenFOAM/global/argList/argList.H | 125 ++++++++++++++---- src/OpenFOAM/global/argList/argListI.H | 96 +++++++++++--- .../include/setConstantMeshDictionaryIO.H | 2 +- .../include/setConstantRunTimeDictionaryIO.H | 2 +- .../include/setSystemMeshDictionaryIO.H | 2 +- .../include/setSystemRunTimeDictionaryIO.H | 2 +- 76 files changed, 398 insertions(+), 170 deletions(-) diff --git a/applications/solvers/basic/potentialFoam/createFields.H b/applications/solvers/basic/potentialFoam/createFields.H index 89460e2037..352458d00c 100644 --- a/applications/solvers/basic/potentialFoam/createFields.H +++ b/applications/solvers/basic/potentialFoam/createFields.H @@ -40,7 +40,7 @@ if (args.found("initialiseUBCs")) // converting fixed-value BCs to zero-gradient and vice versa. // Allow override from command-line -pName option -const word pName = args.get("pName", "p"); +const word pName = args.getOrDefault("pName", "p"); // Infer the pressure BCs from the velocity wordList pBCTypes diff --git a/applications/solvers/basic/potentialFoam/overPotentialFoam/createFields.H b/applications/solvers/basic/potentialFoam/overPotentialFoam/createFields.H index 1f4f06550c..c793af226d 100644 --- a/applications/solvers/basic/potentialFoam/overPotentialFoam/createFields.H +++ b/applications/solvers/basic/potentialFoam/overPotentialFoam/createFields.H @@ -40,7 +40,7 @@ if (args.found("initialiseUBCs")) // converting fixed-value BCs to zero-gradient and vice versa. // Allow override from command-line -pName option -const word pName = args.get("pName", "p"); +const word pName = args.getOrDefault("pName", "p"); // Infer the pressure BCs from the velocity wordList pBCTypes diff --git a/applications/solvers/lagrangian/DPMFoam/createFields.H b/applications/solvers/lagrangian/DPMFoam/createFields.H index aa78161d58..97e8e21b41 100644 --- a/applications/solvers/lagrangian/DPMFoam/createFields.H +++ b/applications/solvers/lagrangian/DPMFoam/createFields.H @@ -121,7 +121,7 @@ volScalarField alphac const word kinematicCloudName ( - args.get("cloud", "kinematicCloud") + args.getOrDefault("cloud", "kinematicCloud") ); Info<< "Constructing kinematicCloud " << kinematicCloudName << endl; diff --git a/applications/solvers/lagrangian/icoUncoupledKinematicParcelFoam/createFields.H b/applications/solvers/lagrangian/icoUncoupledKinematicParcelFoam/createFields.H index 3191bbf7a7..b39ce87325 100644 --- a/applications/solvers/lagrangian/icoUncoupledKinematicParcelFoam/createFields.H +++ b/applications/solvers/lagrangian/icoUncoupledKinematicParcelFoam/createFields.H @@ -59,7 +59,7 @@ volScalarField mu const word kinematicCloudName ( - args.get("cloud", "kinematicCloud") + args.getOrDefault("cloud", "kinematicCloud") ); Info<< "Constructing kinematicCloud " << kinematicCloudName << endl; diff --git a/applications/solvers/lagrangian/uncoupledKinematicParcelFoam/createFields.H b/applications/solvers/lagrangian/uncoupledKinematicParcelFoam/createFields.H index bf12d76bd8..33921cc6ce 100644 --- a/applications/solvers/lagrangian/uncoupledKinematicParcelFoam/createFields.H +++ b/applications/solvers/lagrangian/uncoupledKinematicParcelFoam/createFields.H @@ -51,7 +51,7 @@ autoPtr turbulence const word kinematicCloudName ( - args.get("cloud", "kinematicCloud") + args.getOrDefault("cloud", "kinematicCloud") ); Info<< "Constructing kinematicCloud " << kinematicCloudName << endl; diff --git a/applications/test/argList/Test-argList.C b/applications/test/argList/Test-argList.C index 2ec91ec05c..4ecc8859f5 100644 --- a/applications/test/argList/Test-argList.C +++ b/applications/test/argList/Test-argList.C @@ -5,7 +5,7 @@ \\ / A nd | www.openfoam.com \\/ M anipulation | ------------------------------------------------------------------------------- - Copyright (C) 2017-2019 OpenCFD Ltd. + Copyright (C) 2017-2020 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -29,11 +29,53 @@ Description #include "argList.H" #include "IOstreams.H" +#include "MinMax.H" #include "Switch.H" #include "StringStream.H" using namespace Foam; + +void predicateTests_label(const word& optName, const argList& args) +{ + Info<< "predicate tests for " << optName << nl; + + const bool throwingError = FatalError.throwExceptions(); + try + { + label val; + val = args.getCheck