UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
PerCellBuoyancy.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2#pragma once
3
4#include "Chaos/ArrayND.h"
5#include "Chaos/UniformGrid.h"
6#include "Chaos/Vector.h"
7
8namespace Chaos
9{
10template<class T, int d>
12{
13 public:
14 TPerCellBuoyancy(const TArrayND<T, 3>& Density, const TVector<T, d>& Direction = TVector<T, d>(0, 1, 0), const T Magnitude = (T)9.8)
15 : MDensity(Density), MAcceleration(Magnitude * Direction) {}
16 virtual ~TPerCellBuoyancy() {}
17
18 inline void Apply(const TUniformGrid<T, d>& Grid, TArrayFaceND<T, d>& Velocity, const T Dt, const Pair<int32, TVector<int32, d>> Index) const
19 {
20 T DensitySum = MDensity(Grid.ClampIndex(Index.Second + TVector<int32, d>::AxisVector(Index.First))) + MDensity(Index.Second);
21 Velocity(Index) += (T)0.5 * DensitySum * MAcceleration[Index.First] * Dt;
22 }
23
24 private:
25 const TArrayND<T, d>& MDensity;
26 const TVector<T, d> MAcceleration;
27};
28}
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
Definition ArrayFaceND.h:14
Definition ArrayND.h:194
Definition PerCellBuoyancy.h:12
TPerCellBuoyancy(const TArrayND< T, 3 > &Density, const TVector< T, d > &Direction=TVector< T, d >(0, 1, 0), const T Magnitude=(T) 9.8)
Definition PerCellBuoyancy.h:14
virtual ~TPerCellBuoyancy()
Definition PerCellBuoyancy.h:16
void Apply(const TUniformGrid< T, d > &Grid, TArrayFaceND< T, d > &Velocity, const T Dt, const Pair< int32, TVector< int32, d > > Index) const
Definition PerCellBuoyancy.h:18
Definition UniformGrid.h:267
Definition Vector.h:41
Definition SkeletalMeshComponent.h:307
@ Velocity
Definition SimulationModuleBase.h:147
U16 Index
Definition radfft.cpp:71
Definition Pair.h:8