diff --git a/src/meshTools/AMIInterpolation/AMIInterpolation/AMIInterpolation.C b/src/meshTools/AMIInterpolation/AMIInterpolation/AMIInterpolation.C index c521cc49ce51b1ff2d8d090ea1a886ee9cef58fd..0cac4dce5fd407f7639e17a7080948683baddf2c 100644 --- a/src/meshTools/AMIInterpolation/AMIInterpolation/AMIInterpolation.C +++ b/src/meshTools/AMIInterpolation/AMIInterpolation/AMIInterpolation.C @@ -31,6 +31,20 @@ License // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // +template<class SourcePatch, class TargetPatch> +const Foam::Enum +< + typename Foam::AMIInterpolation<SourcePatch, TargetPatch>:: + interpolationMethod +> +Foam::AMIInterpolation<SourcePatch, TargetPatch>::interpolationMethodNames_ +{ + { interpolationMethod::imDirect, "directAMI" }, + { interpolationMethod::imMapNearest, "mapNearestAMI" }, + { interpolationMethod::imFaceAreaWeight, "faceAreaWeightAMI" }, + { interpolationMethod::imPartialFaceAreaWeight, "partialFaceAreaWeightAMI" } +}; + template<class SourcePatch, class TargetPatch> Foam::word Foam::AMIInterpolation<SourcePatch, TargetPatch>::interpolationMethodToWord @@ -38,39 +52,7 @@ Foam::AMIInterpolation<SourcePatch, TargetPatch>::interpolationMethodToWord const interpolationMethod& im ) { - word method = "unknown-interpolationMethod"; - - switch (im) - { - case imDirect: - { - method = "directAMI"; - break; - } - case imMapNearest: - { - method = "mapNearestAMI"; - break; - } - case imFaceAreaWeight: - { - method = "faceAreaWeightAMI"; - break; - } - case imPartialFaceAreaWeight: - { - method = "partialFaceAreaWeightAMI"; - break; - } - default: - { - FatalErrorInFunction - << "Unhandled interpolationMethod enumeration " << method - << abort(FatalError); - } - } - - return method; + return interpolationMethodNames_[im]; } @@ -81,41 +63,7 @@ Foam::AMIInterpolation<SourcePatch, TargetPatch>::wordTointerpolationMethod const word& im ) { - interpolationMethod method = imDirect; - - const wordList methods - { - "directAMI", - "mapNearestAMI", - "faceAreaWeightAMI", - "partialFaceAreaWeightAMI" - }; - - if (im == "directAMI") - { - method = imDirect; - } - else if (im == "mapNearestAMI") - { - method = imMapNearest; - } - else if (im == "faceAreaWeightAMI") - { - method = imFaceAreaWeight; - } - else if (im == "partialFaceAreaWeightAMI") - { - method = imPartialFaceAreaWeight; - } - else - { - FatalErrorInFunction - << "Invalid interpolationMethod " << im - << ". Valid methods are:" << methods - << exit(FatalError); - } - - return method; + return interpolationMethodNames_[im]; } @@ -910,11 +858,8 @@ void Foam::AMIInterpolation<SourcePatch, TargetPatch>::update if (srcTotalSize == 0) { - if (debug) - { - Info<< "AMI: no source faces present - no addressing constructed" - << endl; - } + DebugInfo<< "AMI: no source faces present - no addressing constructed" + << endl; return; } diff --git a/src/meshTools/AMIInterpolation/AMIInterpolation/AMIInterpolation.H b/src/meshTools/AMIInterpolation/AMIInterpolation/AMIInterpolation.H index 866ed29aac55dfeb7dc3410e3a1510a60b3fad02..f455885421b3ede7792049a59ff23edc1e6b1e7e 100644 --- a/src/meshTools/AMIInterpolation/AMIInterpolation/AMIInterpolation.H +++ b/src/meshTools/AMIInterpolation/AMIInterpolation/AMIInterpolation.H @@ -57,6 +57,7 @@ SourceFiles #include "faceAreaIntersect.H" #include "globalIndex.H" #include "ops.H" +#include "Enum.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -92,6 +93,8 @@ public: imPartialFaceAreaWeight }; + static const Enum<interpolationMethod> interpolationMethodNames_; + //- Convert interpolationMethod to word representation static word interpolationMethodToWord (