11template<
class T,
int d>
23 const TVector<int32, d> CellIndex = Grid.GetIndex(Index);
24 Divergence(CellIndex) = 0;
25 for (int32 Axis = 0; Axis < d; ++Axis)
27 Divergence(CellIndex) += (Velocity(MakePair(Axis, CellIndex + TVector<int32, d>::AxisVector(Axis))) - Velocity(MakePair(Axis, CellIndex))) / Grid.Dx()[Axis];
33 const auto FaceIndex = Grid.GetFaceIndex(Index);
34 const auto Axis = FaceIndex.First;
35 const auto PrevIndex = FaceIndex.Second - TVector<int32, d>::AxisVector(Axis);
36 const auto NextIndex = FaceIndex.Second;
40 if (NextIndex[Axis] < Grid.Counts()[Axis])
42 NextPressure = Pressure(NextIndex);
56 TFunction<
void(
const TUniformGrid<T, d>&,
TArrayND<T, d>&,
const TArrayND<T, d>&,
const TArrayND<bool, d>&,
const TArrayFaceND<bool, d>&,
const T)> MPressureRule;
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
#define check(expr)
Definition AssertionMacros.h:314
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
if(Failed) console_printf("Failed.\n")
Definition ArrayFaceND.h:14
Definition PressureProjection.h:13
TPressureProjection()
Definition PressureProjection.h:15
~TPressureProjection()
Definition PressureProjection.h:16
void Apply(const TUniformGrid< T, d > &Grid, TArrayFaceND< T, d > &Velocity, const TArrayND< bool, d > &Dirichlet, const TArrayFaceND< bool, d > &Neumann, const T dt)
Definition PressureProjection.h:18
Definition AndroidPlatformMisc.h:14
Definition SkeletalMeshComponent.h:307
void CHAOS_API PhysicsParallelFor(int32 InNum, TFunctionRef< void(int32)> InCallable, bool bForceSingleThreaded=false)
Definition Parallel.cpp:55
@ Velocity
Definition SimulationModuleBase.h:147
U16 Index
Definition radfft.cpp:71