peclet.voro 1.0.4
Device-native moving-particle Voronoi dynamics
Loading...
Searching...
No Matches
peclet::voro::physics::ExplicitEuler< Real, Sdf > Class Template Reference

#include <simulation.hpp>

Public Types

using DView = Kokkos::View< Real *, peclet::core::MemSpace >
 

Public Member Functions

void setSdf (const Sdf &s)
 
void init (const DView &posFlat, const DView &vel, const DView &invMass, const std::array< Real, 3 > &L, Real pressEq)
 
void setViscous (const DView &visc, const DView &bulkVisc)
 Enable the viscous term (NavierStokes); per-particle viscosities (size N).
 
void step (int nSteps, Real dt)
 
Real kineticEnergy (const DView &mass) const
 
Real internalEnergy () const
 
const DView & positions () const
 
const DView & velocities () const
 
const DView & force () const
 
const TessellationView< Real > & view () const
 
int numParticles () const
 
Real time () const
 
void setRepair (bool on)
 
bool repair () const
 
void setProfile (bool on)
 The cold build's timing / over-buffer report on stderr (buildTessellation's profile).
 

Detailed Description

template<class Real, class Sdf = peclet::voro::NoSdf>
class peclet::voro::physics::ExplicitEuler< Real, Sdf >

Sdf (rung A0): an SDF solid — the cells are clipped by it (wall facets carry kBoundaryFacet and the EOS pressure force's self term acts on them: the wall pushes back) on both the full-rebuild and the incremental-repair paths. Set it with setSdf() before init().

Member Typedef Documentation

◆ DView

template<class Real , class Sdf = peclet::voro::NoSdf>
using peclet::voro::physics::ExplicitEuler< Real, Sdf >::DView = Kokkos::View<Real*, peclet::core::MemSpace>

Member Function Documentation

◆ force()

template<class Real , class Sdf = peclet::voro::NoSdf>
const DView & peclet::voro::physics::ExplicitEuler< Real, Sdf >::force ( ) const
inline

◆ init()

template<class Real , class Sdf = peclet::voro::NoSdf>
void peclet::voro::physics::ExplicitEuler< Real, Sdf >::init ( const DView &  posFlat,
const DView &  vel,
const DView &  invMass,
const std::array< Real, 3 > &  L,
Real  pressEq 
)
inline
Parameters
posFlat,vel3*N device arrays (x-fastest per particle), pos in [0,L).
invMass1/m per particle (N).
pressEqEOS constant.

◆ internalEnergy()

template<class Real , class Sdf = peclet::voro::NoSdf>
Real peclet::voro::physics::ExplicitEuler< Real, Sdf >::internalEnergy ( ) const
inline

◆ kineticEnergy()

template<class Real , class Sdf = peclet::voro::NoSdf>
Real peclet::voro::physics::ExplicitEuler< Real, Sdf >::kineticEnergy ( const DView &  mass) const
inline

◆ numParticles()

template<class Real , class Sdf = peclet::voro::NoSdf>
int peclet::voro::physics::ExplicitEuler< Real, Sdf >::numParticles ( ) const
inline

◆ positions()

template<class Real , class Sdf = peclet::voro::NoSdf>
const DView & peclet::voro::physics::ExplicitEuler< Real, Sdf >::positions ( ) const
inline

◆ repair()

template<class Real , class Sdf = peclet::voro::NoSdf>
bool peclet::voro::physics::ExplicitEuler< Real, Sdf >::repair ( ) const
inline

◆ setProfile()

template<class Real , class Sdf = peclet::voro::NoSdf>
void peclet::voro::physics::ExplicitEuler< Real, Sdf >::setProfile ( bool  on)
inline

The cold build's timing / over-buffer report on stderr (buildTessellation's profile).

◆ setRepair()

template<class Real , class Sdf = peclet::voro::NoSdf>
void peclet::voro::physics::ExplicitEuler< Real, Sdf >::setRepair ( bool  on)
inline

Opt-in (E1 scaffolding, default off): use the incremental moving-point repair for the topology each step and reeval-publish the force geometry, instead of a full rebuild. Same physics contract; ~10× cheaper geometry per the repair benches. Set before init(). The physics wiring/tuning on top of this scaffolding is ongoing work.

◆ setSdf()

template<class Real , class Sdf = peclet::voro::NoSdf>
void peclet::voro::physics::ExplicitEuler< Real, Sdf >::setSdf ( const Sdf &  s)
inline

◆ setViscous()

template<class Real , class Sdf = peclet::voro::NoSdf>
void peclet::voro::physics::ExplicitEuler< Real, Sdf >::setViscous ( const DView &  visc,
const DView &  bulkVisc 
)
inline

Enable the viscous term (NavierStokes); per-particle viscosities (size N).

◆ step()

template<class Real , class Sdf = peclet::voro::NoSdf>
void peclet::voro::physics::ExplicitEuler< Real, Sdf >::step ( int  nSteps,
Real  dt 
)
inline

◆ time()

template<class Real , class Sdf = peclet::voro::NoSdf>
Real peclet::voro::physics::ExplicitEuler< Real, Sdf >::time ( ) const
inline

◆ velocities()

template<class Real , class Sdf = peclet::voro::NoSdf>
const DView & peclet::voro::physics::ExplicitEuler< Real, Sdf >::velocities ( ) const
inline

◆ view()

template<class Real , class Sdf = peclet::voro::NoSdf>
const TessellationView< Real > & peclet::voro::physics::ExplicitEuler< Real, Sdf >::view ( ) const
inline

The documentation for this class was generated from the following file: