Peano
Loading...
Searching...
No Matches
HydroForce.h
Go to the documentation of this file.
1// This file is part of the ExaParty project. For conditions of distribution and
2// use, please see the copyright notice at www.peano-framework.org
3#pragma once
4
5
10
11namespace exaparty {
12 namespace kernels {
13 namespace legacy {
24 template <typename Particle>
25 void hydro_prepare_force(Particle& localParticle);
26
27 template <typename Particle>
30 const Particle& localParticle
31 ) {
32 return ::exaparty::kernels::localParticleCanBeUpdatedInVertexKernel(
33 marker,
34 localParticle
35 );
36 }
37
38 template <typename Particle>
41 Particle& localParticle
42 ) {
44 prepareHydroForceUpdateParticlePredicate(marker, localParticle)
45 );
46 hydro_prepare_force(localParticle);
47 }
48
55 template <typename Particle>
56 void hydro_reset_acceleration(Particle& localParticle);
57
58 template <typename Particle>
61 const Particle& localParticle
62 ) {
63 return ::exaparty::kernels::localParticleCanBeUpdatedInVertexKernel(
64 marker,
65 localParticle
66 );
67 }
68
69 template <typename Particle>
72 Particle& localParticle
73 ) {
75 resetAccelerationUpdateParticlePredicate(marker, localParticle)
76 );
77 hydro_reset_acceleration(localParticle);
78 }
79
91 template <typename Particle>
92 void hydro_end_force(Particle& localParticle);
93
94 template <typename Particle>
97 const Particle& localParticle
98 ) {
99 return ::exaparty::kernels::localParticleCanBeUpdatedInVertexKernel(
100 marker,
101 localParticle
102 );
103 }
104
105 template <typename Particle>
108 Particle& localParticle
109 ) {
110 assertion(
112 );
113 hydro_end_force(localParticle);
114 }
115
206 template <typename ParticleA, typename ParticleB = ParticleA>
207 inline void __attribute__((always_inline)) force_kernel(
208 ParticleA& localParticle,
209 const ParticleB& activeParticle
210 );
211
212
213 template <typename Particle>
216 const bool& localParticleIsContainedInCell,
217 const Particle& localParticle
218 );
219
220 template <typename ParticleA, typename ParticleB = ParticleA>
223 const ParticleA& localParticle,
224 const ParticleB& activeParticle
225 );
226
235 template <typename ParticleA, typename ParticleB = ParticleA>
238 ParticleA& localParticle,
239 const ParticleB& activeParticle
240 );
241
247 template <typename Particle> void predict_hyrdro(Particle* particle);
248
249
250 template <typename Particle>
253 const Particle& localParticle
254 ) {
255 return ::exaparty::kernels::localParticleCanBeUpdatedInVertexKernel(
256 marker,
257 localParticle
258 );
259 }
260
261
262 template <typename Particle>
265 Particle& localParticle
266 ) {
267 assertion(predictHydroUpdateParticlePredicate(marker, localParticle));
268 predict_hyrdro(&localParticle);
269 }
270
271
282 template <typename Particle>
284 Particle* __restrict__ localParticle,
285 const Particle* __restrict__ activeParticle
286 );
287 } // namespace legacy
288 } // namespace kernels
289} // namespace exaparty
290
291
292#include "HydroForce.cpph"
#define assertion(expr)
void hydro_reset_acceleration(Particle &localParticle)
Reset acceleration fields of a particle.
bool forceKernelDistanceCheck(Particle *__restrict__ localParticle, const Particle *__restrict__ activeParticle)
Check distance between two particles.
void predict_hyrdro(Particle *particle)
Predict hydro terms (SWIFT) Relevant for inactive particles when using local-timestepping,...
bool forceKernelUpdateParticlePredicate(const peano4::datamanagement::CellMarker &marker, const bool &localParticleIsContainedInCell, const Particle &localParticle)
bool endHydroForceCalculationUpdateParticlePredicate(const peano4::datamanagement::VertexMarker &marker, const Particle &localParticle)
Definition HydroForce.h:95
void __attribute__((always_inline)) force_kernel(ParticleA &localParticle
The actual force kernel, which interacts a local particle and an active particle, and updates the loc...
void predictHydro(const peano4::datamanagement::VertexMarker &marker, Particle &localParticle)
Definition HydroForce.h:263
bool prepareHydroForceUpdateParticlePredicate(const peano4::datamanagement::VertexMarker &marker, const Particle &localParticle)
Definition HydroForce.h:28
void resetAcceleration(const peano4::datamanagement::VertexMarker &marker, Particle &localParticle)
Definition HydroForce.h:70
void endHydroForceCalculation(const peano4::datamanagement::VertexMarker &marker, Particle &localParticle)
Definition HydroForce.h:106
void prepareHydroForce(const peano4::datamanagement::VertexMarker &marker, Particle &localParticle)
Definition HydroForce.h:39
bool forceKernelEvaluatePairInteractionPredicate(const peano4::datamanagement::CellMarker &marker, const ParticleA &localParticle, const ParticleB &activeParticle)
bool predictHydroUpdateParticlePredicate(const peano4::datamanagement::VertexMarker &marker, const Particle &localParticle)
Definition HydroForce.h:251
void hydro_prepare_force(Particle &localParticle)
Prepare a particle for the force calculation.
InlineMethod void forceKernel(const peano4::datamanagement::CellMarker &marker, ParticleA &localParticle, const ParticleB &activeParticle)
Generic force kernel implementation.
bool resetAccelerationUpdateParticlePredicate(const peano4::datamanagement::VertexMarker &marker, const Particle &localParticle)
Definition HydroForce.h:59
void const ParticleB & activeParticle
Definition HydroForce.h:210
void hydro_end_force(Particle &localParticle)
Finishes the force calculation.
This file is part of the ExaParty project.
Definition __init__.py:1
Vertex marker to provide information about selected vertex.
#define InlineMethod
Generic identifier for inlined functions.
Definition tarch.h:97