UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
FFTProjection.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2#pragma once
3
4#include "Chaos/Core.h"
5#include "Chaos/ArrayND.h"
6#include "Chaos/FFT.h"
7#include "Chaos/UniformGrid.h"
8
9namespace Chaos
10{
11template<int d>
13{
14 for (int32 i = 0; i < d; ++i)
15 {
16 if (Counts[i] & (Counts[i] - 1))
17 return false;
18 }
19 return true;
20}
21
23{
24 public:
25 FFFTProjection3(const int32 NumIterations = 1)
26 : MNumIterations(NumIterations) {}
28
30 {
31 check(IsPowerOfTwo(Grid.Counts()));
32 int32 size = Grid.Counts().Product();
33 TVec3<int32> Counts = Grid.Counts();
34 Counts[2] = Counts[2] / 2 + 1;
35 TArrayND<FComplex, 3> u(Counts), v(Counts), w(Counts);
37 for (int32 iteration = 0; iteration < MNumIterations; ++iteration)
38 {
42 for (int32 i = 0; i < size; ++i)
43 {
45 }
46 }
47 }
48
49 private:
50 int32 MNumIterations;
51};
52}
#define check(expr)
Definition AssertionMacros.h:314
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
static void MakeDivergenceFree(const FUniformGrid &Grid, FArrayNDOfComplex &u, FArrayNDOfComplex &v, FArrayNDOfComplex &w)
Definition FFT.cpp:37
static void InverseTransform(const FUniformGrid &Grid, TArrayND< FVec3, 3 > &Velocity, const FArrayNDOfComplex &u, const FArrayNDOfComplex &v, const FArrayNDOfComplex &w, const bool Normalize)
Definition FFT.cpp:196
static void Transform(const FUniformGrid &Grid, const TArrayND< FVec3, 3 > &Velocity, FArrayNDOfComplex &u, FArrayNDOfComplex &v, FArrayNDOfComplex &w)
Definition FFT.cpp:235
Definition FFTProjection.h:23
FFFTProjection3(const int32 NumIterations=1)
Definition FFTProjection.h:25
~FFFTProjection3()
Definition FFTProjection.h:27
void Apply(const TUniformGrid< FReal, 3 > &Grid, TArrayND< FVec3, 3 > &Velocity, const TArrayND< bool, 3 > &BoundaryConditions, const FReal dt)
Definition FFTProjection.h:29
FORCEINLINE T_DERIVED Copy() const
Definition ArrayND.h:149
Definition ArrayND.h:194
Definition UniformGrid.h:267
Definition Vector.h:1000
Definition Vector.h:41
Definition SkeletalMeshComponent.h:307
FRealDouble FReal
Definition Real.h:22
bool IsPowerOfTwo(const TVector< int32, d > &Counts)
Definition FFTProjection.h:12
@ Velocity
Definition SimulationModuleBase.h:147
float v
Definition radaudio_mdct.cpp:62