载入中...
搜索中...
未找到
eve::fluids::FluidSimulator类 参考

GPU-backed surface fluid simulator (falls back to the CPU solver). 更多...

#include <Fluids.h>

类 eve::fluids::FluidSimulator 继承关系图:
eve::physics::ISimulationBackend

Public 成员函数

 FluidSimulator (int maxParticles, const FluidParams &params, bool preferGpu)
 Fluid simulator.
 
 ~FluidSimulator ()
 Fluid simulator.
 
 FluidSimulator (const FluidSimulator &)=delete
 
FluidSimulator & operator= (const FluidSimulator &)=delete
 
void setSdf (const MeshSdf &sdf)
 Replace the collision surface (re-uploads the SDF on the GPU path).
 
const MeshSdf & sdf () const
 Sdf.
 
int spawnDrop (const glm::vec3 &center, float radius, int count)
 Spawn a drop of particles near the surface.
 
void step (float dt)
 Advance the simulation by dt seconds.
 
eve::Result< void > step (const eve::SimulationStep &step, const eve::physics::SimulationSettings &settings) override
 Advances the production CPU/GPGPU solver with the shared contract.
 
eve::physics::SimulationObservation observation () const noexcept override
 Returns completed tick/time observables.
 
eve::physics::SimulationBackendKind kind () const noexcept override
 Reports the actual CPU or production GPU path selected.
 
eve::physics::SimulationDeterminism determinism () const noexcept override
 CPU/GPGPU particle results are equivalent within a numeric tolerance.
 
eve::Result< void > restoreObservation (const eve::physics::SimulationObservation &observation) override
 Restores tick/progress metadata after an owner-level restore.
 
bool usedBackendFallback () const noexcept
 Whether optional accelerator selection fell back to CPU.
 
eve::Status backendSelectionStatus () const
 Selection status, including observable provider/degraded-path diagnostics.
 
int getParticleCount () const
 Returns the particle count.
 
int getMaxParticles () const
 Returns the max particles.
 
bool usingGpu () const
 Using gpu.
 
void readPositions (std::vector< glm::vec3 > &out) const
 Copy live particle positions out (CPU mirror; GPU path downloads).
 
void readDensities (std::vector< float > &out) const
 Copy per-particle densities out (CPU mirror).
 
FluidParams & params ()
 Params.
 
const FluidParams & params () const
 Params.
 
void setGravity (float x, float y, float z)
 Set the gravity vector.
 
void setViscosity (float viscosity)
 Set XSPH viscosity strength.
 
void setCohesion (float cohesion)
 Set Akinci-style fluid-fluid cohesion strength.
 
void setAdhesion (float adhesion)
 Set fluid-surface adhesion strength.
 
void setPbfIterations (int passes)
 Set PBF density-constraint passes per substep.
 
void setDamping (float damping)
 Set linear air damping.
 
void setParticleRadius (float radius)
 Set particle radius (support radius is unchanged).
 
void setSupportRadius (float h)
 Set SPH support radius.
 
void setSdfSphere (float cx, float cy, float cz, float radius, int res)
 Convenience: bake a sphere SDF around the origin.
 
- Public 成员函数 继承自 eve::physics::ISimulationBackend
virtual ~ISimulationBackend ()=default
 Releases the backend; borrowed domain state is not destroyed.
 

详细描述

GPU-backed surface fluid simulator (falls back to the CPU solver).

在文件 Fluids.h 第 44 行定义.

构造及析构函数说明

◆ FluidSimulator() [1/2]

eve::fluids::FluidSimulator::FluidSimulator ( int  maxParticles,
const FluidParams &  params,
bool  preferGpu 
)

Fluid simulator.

参数
maxParticlesparticle buffer capacity.
paramsinitial tuning parameters.
preferGpuuse the gpgpu compute path when a device is available.

在文件 Fluids.cpp 第 63 行定义.

◆ ~FluidSimulator()

eve::fluids::FluidSimulator::~FluidSimulator ( )

Fluid simulator.

在文件 Fluids.cpp 第 66 行定义.

◆ FluidSimulator() [2/2]

eve::fluids::FluidSimulator::FluidSimulator ( const FluidSimulator &  )
delete

成员函数说明

◆ backendSelectionStatus()

eve::Status eve::fluids::FluidSimulator::backendSelectionStatus ( ) const
inline

Selection status, including observable provider/degraded-path diagnostics.

在文件 Fluids.h 第 99 行定义.

◆ determinism()

eve::physics::SimulationDeterminism eve::fluids::FluidSimulator::determinism ( ) const
inlineoverridevirtualnoexcept

CPU/GPGPU particle results are equivalent within a numeric tolerance.

实现了 eve::physics::ISimulationBackend.

在文件 Fluids.h 第 88 行定义.

引用了 eve::physics::ToleranceBounded.

◆ getMaxParticles()

int eve::fluids::FluidSimulator::getMaxParticles ( ) const
inline

Returns the max particles.

返回
particle buffer capacity.

在文件 Fluids.h 第 109 行定义.

◆ getParticleCount()

int eve::fluids::FluidSimulator::getParticleCount ( ) const
inline

Returns the particle count.

返回
live particle count.

在文件 Fluids.h 第 105 行定义.

◆ kind()

eve::physics::SimulationBackendKind eve::fluids::FluidSimulator::kind ( ) const
inlineoverridevirtualnoexcept

Reports the actual CPU or production GPU path selected.

实现了 eve::physics::ISimulationBackend.

在文件 Fluids.h 第 84 行定义.

引用了 eve::physics::Cpu , 以及 eve::physics::Gpu.

◆ observation()

eve::physics::SimulationObservation eve::fluids::FluidSimulator::observation ( ) const
inlineoverridevirtualnoexcept

Returns completed tick/time observables.

实现了 eve::physics::ISimulationBackend.

在文件 Fluids.h 第 82 行定义.

被这些函数引用 restoreObservation().

◆ operator=()

FluidSimulator & eve::fluids::FluidSimulator::operator= ( const FluidSimulator &  )
delete

◆ params() [1/2]

FluidParams & eve::fluids::FluidSimulator::params ( )
inline

Params.

返回
mutable tuning parameters.

在文件 Fluids.h 第 123 行定义.

被这些函数引用 eve::fluids::FluidSurfaceRenderer::render().

◆ params() [2/2]

const FluidParams & eve::fluids::FluidSimulator::params ( ) const
inline

Params.

返回
tuning parameters (read-only).

在文件 Fluids.h 第 127 行定义.

◆ readDensities()

void eve::fluids::FluidSimulator::readDensities ( std::vector< float > &  out) const

Copy per-particle densities out (CPU mirror).

在文件 Fluids.cpp 第 236 行定义.

引用了 eve::fluids::FluidSimulation::densities() , 以及 eve::fluids::FluidSimulation::particleCount().

◆ readPositions()

void eve::fluids::FluidSimulator::readPositions ( std::vector< glm::vec3 > &  out) const

Copy live particle positions out (CPU mirror; GPU path downloads).

在文件 Fluids.cpp 第 230 行定义.

引用了 eve::fluids::FluidSimulation::particleCount() , 以及 eve::fluids::FluidSimulation::particles().

被这些函数引用 eve::fluids::FluidSurfaceRenderer::render().

◆ restoreObservation()

eve::Result< void > eve::fluids::FluidSimulator::restoreObservation ( const eve::physics::SimulationObservation &  observation)
overridevirtual

Restores tick/progress metadata after an owner-level restore.

重载 eve::physics::ISimulationBackend .

在文件 Fluids.cpp 第 222 行定义.

引用了 eve::Applied, observation(), eve::Status::success(), eve::Result< T >::success() , 以及 valid.

◆ sdf()

const MeshSdf & eve::fluids::FluidSimulator::sdf ( ) const
inline

Sdf.

返回
the currently bound SDF.

在文件 Fluids.h 第 64 行定义.

被这些函数引用 setSdf().

◆ setAdhesion()

void eve::fluids::FluidSimulator::setAdhesion ( float  adhesion)

Set fluid-surface adhesion strength.

在文件 Fluids.cpp 第 246 行定义.

引用了 eve::fluids::FluidParams::adhesion , 以及 eve::fluids::FluidSimulation::params().

◆ setCohesion()

void eve::fluids::FluidSimulator::setCohesion ( float  cohesion)

Set Akinci-style fluid-fluid cohesion strength.

在文件 Fluids.cpp 第 245 行定义.

引用了 eve::fluids::FluidParams::cohesion , 以及 eve::fluids::FluidSimulation::params().

◆ setDamping()

void eve::fluids::FluidSimulator::setDamping ( float  damping)

Set linear air damping.

在文件 Fluids.cpp 第 248 行定义.

引用了 eve::fluids::FluidParams::damping , 以及 eve::fluids::FluidSimulation::params().

◆ setGravity()

void eve::fluids::FluidSimulator::setGravity ( float  x,
float  y,
float  z 
)

Set the gravity vector.

在文件 Fluids.cpp 第 242 行定义.

引用了 eve::fluids::FluidParams::gravity, eve::fluids::FluidSimulation::params(), x, y , 以及 z.

◆ setParticleRadius()

void eve::fluids::FluidSimulator::setParticleRadius ( float  radius)

Set particle radius (support radius is unchanged).

在文件 Fluids.cpp 第 249 行定义.

引用了 eve::fluids::FluidSimulation::params(), eve::fluids::FluidParams::particleRadius , 以及 radius.

◆ setPbfIterations()

void eve::fluids::FluidSimulator::setPbfIterations ( int  passes)

Set PBF density-constraint passes per substep.

在文件 Fluids.cpp 第 247 行定义.

引用了 eve::fluids::FluidSimulation::params() , 以及 eve::fluids::FluidParams::pbfIterations.

◆ setSdf()

void eve::fluids::FluidSimulator::setSdf ( const MeshSdf &  sdf)

Replace the collision surface (re-uploads the SDF on the GPU path).

在文件 Fluids.cpp 第 88 行定义.

引用了 eve::fluids::SimGrid::make(), eve::fluids::FluidSimulation::params(), sdf(), eve::fluids::FluidSimulation::setSdf() , 以及 eve::fluids::FluidParams::supportRadius.

被这些函数引用 setSdfSphere().

◆ setSdfSphere()

void eve::fluids::FluidSimulator::setSdfSphere ( float  cx,
float  cy,
float  cz,
float  radius,
int  res 
)

Convenience: bake a sphere SDF around the origin.

参数
cxsphere center X.
cysphere center Y.
czsphere center Z.
radiussphere radius.
resvoxel resolution per axis.

在文件 Fluids.cpp 第 255 行定义.

引用了 cx, cy, eve::fluids::MeshSdf::makeSphere(), radius , 以及 setSdf().

◆ setSupportRadius()

void eve::fluids::FluidSimulator::setSupportRadius ( float  h)

◆ setViscosity()

void eve::fluids::FluidSimulator::setViscosity ( float  viscosity)

Set XSPH viscosity strength.

在文件 Fluids.cpp 第 244 行定义.

引用了 eve::fluids::FluidSimulation::params() , 以及 eve::fluids::FluidParams::viscosity.

◆ spawnDrop()

int eve::fluids::FluidSimulator::spawnDrop ( const glm::vec3 &  center,
float  radius,
int  count 
)

Spawn a drop of particles near the surface.

参数
centerdrop center.
radiusdrop radius.
countparticle count.
返回
particles actually added.

在文件 Fluids.cpp 第 122 行定义.

引用了 center, count, radius , 以及 eve::fluids::FluidSimulation::spawnDrop().

◆ step() [1/2]

eve::Result< void > eve::fluids::FluidSimulator::step ( const eve::SimulationStep &  step,
const eve::physics::SimulationSettings &  settings 
)
overridevirtual

◆ step() [2/2]

void eve::fluids::FluidSimulator::step ( float  dt)

Advance the simulation by dt seconds.

在文件 Fluids.cpp 第 126 行定义.

引用了 eve::fluids::FluidParams::iterations , 以及 eve::fluids::FluidSimulation::params().

◆ usedBackendFallback()

bool eve::fluids::FluidSimulator::usedBackendFallback ( ) const
inlinenoexcept

Whether optional accelerator selection fell back to CPU.

在文件 Fluids.h 第 96 行定义.

◆ usingGpu()

bool eve::fluids::FluidSimulator::usingGpu ( ) const
inline

Using gpu.

返回
true when the GPU compute path is active.

在文件 Fluids.h 第 113 行定义.


该类的文档由以下文件生成: