SPH
Public Member Functions | List of all members
BruteForceGravity Class Reference

Computes gravitational acceleration by summing up forces from all particle pairs. More...

#include <BruteForceGravity.h>

Inheritance diagram for BruteForceGravity:
IGravity Polymorphic

Public Member Functions

 BruteForceGravity (const Float gravityContant=Constants::gravity)
 Default-construced gravity, assuming point-like particles. More...
 
 BruteForceGravity (GravityLutKernel &&kernel, const Float gravityContant=Constants::gravity)
 Constructs gravity using smoothing kernel. More...
 
virtual void build (IScheduler &UNUSED(scheduler), const Storage &storage) override
 
virtual void evalAll (IScheduler &scheduler, ArrayView< Vector > dv, Statistics &UNUSED(stats)) const override
 
virtual Vector eval (const Vector &r0) const override
 Evaluates the gravitational acceleration at given point. More...
 
virtual Float evalEnergy (IScheduler &scheduler, Statistics &UNUSED(stats)) const override
 
virtual RawPtr< const IBasicFindergetFinder () const override
 Optionally returns a finder used by the gravity implementation. More...
 
- Public Member Functions inherited from IGravity
virtual void build (IScheduler &scheduler, const Storage &storage)=0
 Builds the accelerating structure. More...
 
virtual void evalAll (IScheduler &scheduler, ArrayView< Vector > dv, Statistics &stats) const =0
 Evaluates the gravitational acceleration concurrently. More...
 
virtual Float evalEnergy (IScheduler &scheduler, Statistics &stats) const =0
 Computes the total potential energy of the particles. More...
 
- Public Member Functions inherited from Polymorphic
virtual ~Polymorphic ()
 

Detailed Description

Computes gravitational acceleration by summing up forces from all particle pairs.

This implementation is not intended for high-performance code because of the O(N) complexity. Useful for testing and debugging purposes.

Definition at line 20 of file BruteForceGravity.h.

Constructor & Destructor Documentation

◆ BruteForceGravity() [1/2]

BruteForceGravity::BruteForceGravity ( const Float  gravityContant = Constants::gravity)
inline

Default-construced gravity, assuming point-like particles.

Definition at line 30 of file BruteForceGravity.h.

◆ BruteForceGravity() [2/2]

BruteForceGravity::BruteForceGravity ( GravityLutKernel &&  kernel,
const Float  gravityContant = Constants::gravity 
)
inline

Constructs gravity using smoothing kernel.

Definition at line 36 of file BruteForceGravity.h.

Member Function Documentation

◆ build()

virtual void BruteForceGravity::build ( IScheduler UNUSEDscheduler,
const Storage storage 
)
inlineoverridevirtual

Definition at line 40 of file BruteForceGravity.h.

◆ eval()

virtual Vector BruteForceGravity::eval ( const Vector r0) const
inlineoverridevirtual

Evaluates the gravitational acceleration at given point.

The point must NOT correspond to any particle, as this case could formally lead to infinite acceleration if no smoothing kernel is used.

Parameters
r0Point where the gravity is evaluated.

Implements IGravity.

Definition at line 55 of file BruteForceGravity.h.

◆ evalAll()

virtual void BruteForceGravity::evalAll ( IScheduler scheduler,
ArrayView< Vector dv,
Statistics UNUSEDstats 
) const
inlineoverridevirtual

Definition at line 45 of file BruteForceGravity.h.

◆ evalEnergy()

virtual Float BruteForceGravity::evalEnergy ( IScheduler scheduler,
Statistics UNUSEDstats 
) const
inlineoverridevirtual

Definition at line 66 of file BruteForceGravity.h.

◆ getFinder()

virtual RawPtr<const IBasicFinder> BruteForceGravity::getFinder ( ) const
inlineoverridevirtual

Optionally returns a finder used by the gravity implementation.

If the gravity uses an acceleration structure that implements the IBasicFinder interface, this function allows the user to obtain the object and re-use in other parts of the code. Finder is assumed to be initialized after build is called.

If the gravity does not use any such structure or it simply does not implement the IBasicFinder interface, the function returns nullptr.

Implements IGravity.

Definition at line 79 of file BruteForceGravity.h.


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