diff --git a/etc/caseDicts/functions/fields/cylindrical b/etc/caseDicts/functions/fields/cylindrical new file mode 100644 index 0000000000..6a320eb49f --- /dev/null +++ b/etc/caseDicts/functions/fields/cylindrical @@ -0,0 +1,20 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: dev + \\/ M anipulation | +------------------------------------------------------------------------------- +Description + Transforms a vector field into cylindrical coordinates + +\*---------------------------------------------------------------------------*/ + +#includeEtc "caseDicts/functions/fields/cylindrical.cfg" + +field ; + +origin ; +axis ; + +// ************************************************************************* // diff --git a/etc/caseDicts/functions/fields/cylindrical.cfg b/etc/caseDicts/functions/fields/cylindrical.cfg new file mode 100644 index 0000000000..467364d45f --- /dev/null +++ b/etc/caseDicts/functions/fields/cylindrical.cfg @@ -0,0 +1,15 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: dev + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ + +type cylindrical; +libs ("libfieldFunctionObjects.so"); + +executeControl writeTime; +writeControl writeTime; + +// ************************************************************************* // diff --git a/src/functionObjects/field/cylindrical/cylindricalFunctionObject.C b/src/functionObjects/field/cylindrical/cylindricalFunctionObject.C index 54829d7e69..65fde2471a 100644 --- a/src/functionObjects/field/cylindrical/cylindricalFunctionObject.C +++ b/src/functionObjects/field/cylindrical/cylindricalFunctionObject.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | Website: https://openfoam.org - \\ / A nd | Copyright (C) 2020 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2020-2024 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -49,13 +49,12 @@ namespace functionObjects Foam::tensor Foam::functionObjects::cylindrical::R(const vector& p) const { - vector dir = p - origin_; - dir /= mag(dir) + vSmall; + const vector dir = normalised(p - origin_); - const vector axis = axis_/mag(axis_); + const vector axis = normalised(axis_); const vector r = dir - (dir & axis)*axis; - return tensor(r, axis^r, axis); + return tensor(normalised(r), normalised(axis^r), axis); } diff --git a/src/meshTools/coordinateSystems/coordinateRotation/cylindrical.C b/src/meshTools/coordinateSystems/coordinateRotation/cylindrical.C index 3630a8db98..76f08e344d 100644 --- a/src/meshTools/coordinateSystems/coordinateRotation/cylindrical.C +++ b/src/meshTools/coordinateSystems/coordinateRotation/cylindrical.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | Website: https://openfoam.org - \\ / A nd | Copyright (C) 2011-2022 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2024 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -53,12 +53,8 @@ Foam::tensor Foam::cylindrical::R(const vector& p) const // If the point is on the axis choose any radial direction return axesRotation(axis, perpendicular(axis)).R(); } - else - { - return axesRotation(axis, dir).R(); - } - return tensor(r, axis^r, axis); + return axesRotation(axis, dir).R(); } diff --git a/test/postProcessing/channel/system/functionSets b/test/postProcessing/channel/system/functionSets index 2b4201e429..4a29283b0a 100644 --- a/test/postProcessing/channel/system/functionSets +++ b/test/postProcessing/channel/system/functionSets @@ -43,6 +43,8 @@ fieldsFunctions #includeFunc CourantNo + #includeFunc cylindrical(origin=(0 0 0), axis=(0 0 1), U) + #includeFunc ddt(p) #includeFunc div(phi)