SPH
IGravity.h
Go to the documentation of this file.
1 #pragma once
2 
7 
8 #include "common/ForwardDecl.h"
10 
12 
14 class IGravity : public Polymorphic {
15 public:
21  virtual void build(IScheduler& scheduler, const Storage& storage) = 0;
22 
30  virtual void evalAll(IScheduler& scheduler, ArrayView<Vector> dv, Statistics& stats) const = 0;
31 
37  virtual Vector eval(const Vector& r0) const = 0;
38 
44  virtual Float evalEnergy(IScheduler& scheduler, Statistics& stats) const = 0;
45 
55 };
56 
NAMESPACE_SPH_BEGIN
Definition: BarnesHut.cpp:13
double Float
Precision used withing the code. Use Float instead of float or double where precision is important.
Definition: Globals.h:13
#define NAMESPACE_SPH_END
Definition: Object.h:12
Basic vector algebra. Computations are accelerated using SIMD.
Object providing safe access to continuous memory of data.
Definition: ArrayView.h:17
Interface for computing gravitational interactions of particles.
Definition: IGravity.h:14
virtual RawPtr< const IBasicFinder > getFinder() const =0
Optionally returns a finder used by the gravity implementation.
virtual void build(IScheduler &scheduler, const Storage &storage)=0
Builds the accelerating structure.
virtual Float evalEnergy(IScheduler &scheduler, Statistics &stats) const =0
Computes the total potential energy of the particles.
virtual Vector eval(const Vector &r0) const =0
Evaluates the gravitational acceleration at given point.
virtual void evalAll(IScheduler &scheduler, ArrayView< Vector > dv, Statistics &stats) const =0
Evaluates the gravitational acceleration concurrently.
Interface that allows unified implementation of sequential and parallelized versions of algorithms.
Definition: Scheduler.h:27
Non-owning wrapper of pointer.
Definition: RawPtr.h:19
Object holding various statistics about current run.
Definition: Statistics.h:22
Container storing all quantities used within the simulations.
Definition: Storage.h:230
Base class for all polymorphic objects.
Definition: Object.h:88