From 765c2051aafba49541f7af83b10acfe956e266e1 Mon Sep 17 00:00:00 2001 From: mattijs Date: Wed, 13 Jun 2018 14:09:37 +0100 Subject: [PATCH] BUG: fftw: missing normalisation. See #867. --- applications/solvers/DNS/dnsFoam/dnsFoam.C | 2 +- .../solvers/DNS/dnsFoam/readTurbulenceProperties.H | 7 +++++++ src/randomProcesses/turbulence/turbGen.C | 11 +++++++++-- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/applications/solvers/DNS/dnsFoam/dnsFoam.C b/applications/solvers/DNS/dnsFoam/dnsFoam.C index a38a001258..af9de45af8 100644 --- a/applications/solvers/DNS/dnsFoam/dnsFoam.C +++ b/applications/solvers/DNS/dnsFoam/dnsFoam.C @@ -66,7 +66,7 @@ int main(int argc, char *argv[]) fft::reverseTransform ( K/(mag(K) + 1.0e-6) ^ forceGen.newField(), K.nn() - ) + )*recRootN ); #include "globalProperties.H" diff --git a/applications/solvers/DNS/dnsFoam/readTurbulenceProperties.H b/applications/solvers/DNS/dnsFoam/readTurbulenceProperties.H index 0d6b417d5a..0b44eed10c 100644 --- a/applications/solvers/DNS/dnsFoam/readTurbulenceProperties.H +++ b/applications/solvers/DNS/dnsFoam/readTurbulenceProperties.H @@ -19,3 +19,10 @@ Kmesh K(mesh); UOprocess forceGen(K, runTime.deltaTValue(), turbulenceProperties); + + label ntot = 1; + forAll(K.nn(), idim) + { + ntot *= K.nn()[idim]; + } + const scalar recRootN = 1.0/Foam::sqrt(scalar(ntot)); diff --git a/src/randomProcesses/turbulence/turbGen.C b/src/randomProcesses/turbulence/turbGen.C index b942ee49b6..9d1a74b649 100644 --- a/src/randomProcesses/turbulence/turbGen.C +++ b/src/randomProcesses/turbulence/turbGen.C @@ -3,7 +3,7 @@ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation - \\/ M anipulation | + \\/ M anipulation | Copyright (C) 2018 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -60,6 +60,13 @@ Foam::vectorField Foam::turbGen::U() s = Ek(Ea, k0, mag(K))*s; + label ntot = 1; + forAll(K.nn(), idim) + { + ntot *= K.nn()[idim]; + } + const scalar recRootN = 1.0/sqrt(scalar(ntot)); + complexVectorField up ( fft::reverseTransform @@ -67,7 +74,7 @@ Foam::vectorField Foam::turbGen::U() ComplexField(cos(constant::mathematical::twoPi*rndPhases)*s, sin(constant::mathematical::twoPi*rndPhases)*s), K.nn() - ) + )*recRootN ); return ReImSum(up);