openfoam/applications/test/fft/Test-fft.C
Mark Olesen 6a1efe3b5c ENH: support construct/reset refPtr from autoPtr and unique_ptr (#1775)
- makes it easier to use in combination with various 'New' selectors,
  which mostly return an autoPtr.

ENH: add very simple FFT test

- basic sanity test that the library links properly
2020-08-11 13:15:28 +02:00

76 lines
1.9 KiB
C

/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2020 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM, distributed under GPL-3.0-or-later.
Application
Test-fft
Description
Very simple fft tests
\*---------------------------------------------------------------------------*/
#include "argList.H"
#include "Time.H"
#include "fft.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
using namespace Foam;
// Simple forward transform
tmp<complexField> forward1D(const tmp<complexField>& input)
{
const label len = input().size();
return fft::forwardTransform(input, List<int>({len})) / len;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
int main(int argc, char *argv[])
{
argList::noParallel();
#include "setRootCase.H"
// Simple ones - http://www.sccon.ca/sccon/fft/fft3.htm
{
complexField input(8, Zero);
input[0] = 1;
tmp<complexField> toutput = forward1D(input);
Info<< nl
<< "input = " << input << nl
<< "output = " << toutput << nl;
}
{
complexField input(8, Zero);
input[1] = 1;
tmp<complexField> toutput = forward1D(input);
Info<< nl
<< "input = " << input << nl
<< "output = " << toutput << nl;
}
Info<< nl << "End\n" << endl;
return 0;
}
// ************************************************************************* //