OpenLB 1.7
Loading...
Searching...
No Matches
Public Member Functions | List of all members
olb::gpu::cuda::ConcreteDynamics< T, DESCRIPTOR, DYNAMICS > Class Template Referencefinal

Implementation of gpu::cuda::Dynamics for concrete DYNAMICS. More...

#include <dynamics.hh>

+ Inheritance diagram for olb::gpu::cuda::ConcreteDynamics< T, DESCRIPTOR, DYNAMICS >:
+ Collaboration diagram for olb::gpu::cuda::ConcreteDynamics< T, DESCRIPTOR, DYNAMICS >:

Public Member Functions

 ConcreteDynamics (ParametersOfOperatorD< T, DESCRIPTOR, DYNAMICS > *parameters) __device__
 
CellStatistic< T > collide (DeviceContext< T, DESCRIPTOR > lattice, CellID iCell) override __device__
 
computeRho (DataOnlyCell< T, DESCRIPTOR > &cell) override __device__
 
void computeU (DataOnlyCell< T, DESCRIPTOR > &cell, T *u) override __device__
 
void computeJ (DataOnlyCell< T, DESCRIPTOR > &cell, T *j) override __device__
 
void computeRhoU (DataOnlyCell< T, DESCRIPTOR > &cell, T &rho, T *u) override __device__
 
void computeStress (DataOnlyCell< T, DESCRIPTOR > &cell, T &rho, T *u, T *pi) override __device__
 
void computeAllMomenta (DataOnlyCell< T, DESCRIPTOR > &cell, T &rho, T *u, T *pi) override __device__
 
getOmegaOrFallback (T fallback) override __device__
 
computeEquilibrium (int iPop, T rho, T *u) override __device__
 
void defineRho (DataOnlyCell< T, DESCRIPTOR > &cell, T &rho) override __device__
 
void defineU (DataOnlyCell< T, DESCRIPTOR > &cell, T *u) override __device__
 
void defineRhoU (DataOnlyCell< T, DESCRIPTOR > &cell, T &rho, T *u) override __device__
 
void defineAllMomenta (DataOnlyCell< T, DESCRIPTOR > &cell, T &rho, T *u, T *pi) override __device__
 
void inverseShiftRhoU (DataOnlyCell< T, DESCRIPTOR > &cell, T &rho, T *u) override __device__
 
- Public Member Functions inherited from olb::gpu::cuda::Dynamics< T, DESCRIPTOR >
void iniEquilibrium (DataOnlyCell< T, DESCRIPTOR > &cell, T rho, T *u) __device__
 
void iniRegularized (DataOnlyCell< T, DESCRIPTOR > &cell, T rho, T *u, T *pi) __device__
 

Detailed Description

template<typename T, typename DESCRIPTOR, typename DYNAMICS>
class olb::gpu::cuda::ConcreteDynamics< T, DESCRIPTOR, DYNAMICS >

Implementation of gpu::cuda::Dynamics for concrete DYNAMICS.

Definition at line 81 of file dynamics.hh.

Constructor & Destructor Documentation

◆ ConcreteDynamics()

template<typename T , typename DESCRIPTOR , typename DYNAMICS >
olb::gpu::cuda::ConcreteDynamics< T, DESCRIPTOR, DYNAMICS >::ConcreteDynamics ( ParametersOfOperatorD< T, DESCRIPTOR, DYNAMICS > * parameters)
inline

Definition at line 86 of file dynamics.hh.

86 :
87 _parameters{parameters} {
88 }

Member Function Documentation

◆ collide()

template<typename T , typename DESCRIPTOR , typename DYNAMICS >
CellStatistic< T > olb::gpu::cuda::ConcreteDynamics< T, DESCRIPTOR, DYNAMICS >::collide ( DeviceContext< T, DESCRIPTOR > lattice,
CellID iCell )
inlineoverridevirtual

Implements olb::gpu::cuda::Dynamics< T, DESCRIPTOR >.

Definition at line 90 of file dynamics.hh.

90 {
91 DataOnlyCell<T,DESCRIPTOR> cell(lattice, iCell);
92 return DYNAMICS().apply(cell, *_parameters);
93 }

◆ computeAllMomenta()

template<typename T , typename DESCRIPTOR , typename DYNAMICS >
void olb::gpu::cuda::ConcreteDynamics< T, DESCRIPTOR, DYNAMICS >::computeAllMomenta ( DataOnlyCell< T, DESCRIPTOR > & cell,
T & rho,
T * u,
T * pi )
inlineoverridevirtual

Implements olb::gpu::cuda::Dynamics< T, DESCRIPTOR >.

Definition at line 110 of file dynamics.hh.

110 {
111 DYNAMICS::MomentaF().computeAllMomenta(cell, rho, u, pi);
112 }

◆ computeEquilibrium()

template<typename T , typename DESCRIPTOR , typename DYNAMICS >
T olb::gpu::cuda::ConcreteDynamics< T, DESCRIPTOR, DYNAMICS >::computeEquilibrium ( int iPop,
T rho,
T * u )
inlineoverridevirtual

Implements olb::gpu::cuda::Dynamics< T, DESCRIPTOR >.

Definition at line 122 of file dynamics.hh.

122 {
123 return DYNAMICS().computeEquilibrium(iPop, rho, u);
124 }

◆ computeJ()

template<typename T , typename DESCRIPTOR , typename DYNAMICS >
void olb::gpu::cuda::ConcreteDynamics< T, DESCRIPTOR, DYNAMICS >::computeJ ( DataOnlyCell< T, DESCRIPTOR > & cell,
T * j )
inlineoverridevirtual

Implements olb::gpu::cuda::Dynamics< T, DESCRIPTOR >.

Definition at line 101 of file dynamics.hh.

101 {
102 DYNAMICS::MomentaF().computeJ(cell, j);
103 }

◆ computeRho()

template<typename T , typename DESCRIPTOR , typename DYNAMICS >
T olb::gpu::cuda::ConcreteDynamics< T, DESCRIPTOR, DYNAMICS >::computeRho ( DataOnlyCell< T, DESCRIPTOR > & cell)
inlineoverridevirtual

Implements olb::gpu::cuda::Dynamics< T, DESCRIPTOR >.

Definition at line 95 of file dynamics.hh.

95 {
96 return DYNAMICS::MomentaF().computeRho(cell);
97 }

◆ computeRhoU()

template<typename T , typename DESCRIPTOR , typename DYNAMICS >
void olb::gpu::cuda::ConcreteDynamics< T, DESCRIPTOR, DYNAMICS >::computeRhoU ( DataOnlyCell< T, DESCRIPTOR > & cell,
T & rho,
T * u )
inlineoverridevirtual

Implements olb::gpu::cuda::Dynamics< T, DESCRIPTOR >.

Definition at line 104 of file dynamics.hh.

104 {
105 DYNAMICS::MomentaF().computeRhoU(cell, rho, u);
106 }

◆ computeStress()

template<typename T , typename DESCRIPTOR , typename DYNAMICS >
void olb::gpu::cuda::ConcreteDynamics< T, DESCRIPTOR, DYNAMICS >::computeStress ( DataOnlyCell< T, DESCRIPTOR > & cell,
T & rho,
T * u,
T * pi )
inlineoverridevirtual

Implements olb::gpu::cuda::Dynamics< T, DESCRIPTOR >.

Definition at line 107 of file dynamics.hh.

107 {
108 DYNAMICS::MomentaF().computeStress(cell, rho, u, pi);
109 }

◆ computeU()

template<typename T , typename DESCRIPTOR , typename DYNAMICS >
void olb::gpu::cuda::ConcreteDynamics< T, DESCRIPTOR, DYNAMICS >::computeU ( DataOnlyCell< T, DESCRIPTOR > & cell,
T * u )
inlineoverridevirtual

Implements olb::gpu::cuda::Dynamics< T, DESCRIPTOR >.

Definition at line 98 of file dynamics.hh.

98 {
99 DYNAMICS::MomentaF().computeU(cell, u);
100 }

◆ defineAllMomenta()

template<typename T , typename DESCRIPTOR , typename DYNAMICS >
void olb::gpu::cuda::ConcreteDynamics< T, DESCRIPTOR, DYNAMICS >::defineAllMomenta ( DataOnlyCell< T, DESCRIPTOR > & cell,
T & rho,
T * u,
T * pi )
inlineoverridevirtual

Implements olb::gpu::cuda::Dynamics< T, DESCRIPTOR >.

Definition at line 138 of file dynamics.hh.

138 {
139 typename DYNAMICS::MomentaF().defineAllMomenta(cell, rho, u, pi);
140 }

◆ defineRho()

template<typename T , typename DESCRIPTOR , typename DYNAMICS >
void olb::gpu::cuda::ConcreteDynamics< T, DESCRIPTOR, DYNAMICS >::defineRho ( DataOnlyCell< T, DESCRIPTOR > & cell,
T & rho )
inlineoverridevirtual

Implements olb::gpu::cuda::Dynamics< T, DESCRIPTOR >.

Definition at line 126 of file dynamics.hh.

126 {
127 typename DYNAMICS::MomentaF().defineRho(cell, rho);
128 }

◆ defineRhoU()

template<typename T , typename DESCRIPTOR , typename DYNAMICS >
void olb::gpu::cuda::ConcreteDynamics< T, DESCRIPTOR, DYNAMICS >::defineRhoU ( DataOnlyCell< T, DESCRIPTOR > & cell,
T & rho,
T * u )
inlineoverridevirtual

Implements olb::gpu::cuda::Dynamics< T, DESCRIPTOR >.

Definition at line 134 of file dynamics.hh.

134 {
135 typename DYNAMICS::MomentaF().defineRhoU(cell, rho, u);
136 }

◆ defineU()

template<typename T , typename DESCRIPTOR , typename DYNAMICS >
void olb::gpu::cuda::ConcreteDynamics< T, DESCRIPTOR, DYNAMICS >::defineU ( DataOnlyCell< T, DESCRIPTOR > & cell,
T * u )
inlineoverridevirtual

Implements olb::gpu::cuda::Dynamics< T, DESCRIPTOR >.

Definition at line 130 of file dynamics.hh.

130 {
131 typename DYNAMICS::MomentaF().defineU(cell, u);
132 }

◆ getOmegaOrFallback()

template<typename T , typename DESCRIPTOR , typename DYNAMICS >
T olb::gpu::cuda::ConcreteDynamics< T, DESCRIPTOR, DYNAMICS >::getOmegaOrFallback ( T fallback)
inlineoverridevirtual

Implements olb::gpu::cuda::Dynamics< T, DESCRIPTOR >.

Definition at line 114 of file dynamics.hh.

114 {
115 if constexpr (DYNAMICS::parameters::template contains<descriptors::OMEGA>()) {
116 return _parameters->template get<descriptors::OMEGA>();
117 } else {
118 return fallback;
119 }
120 }

◆ inverseShiftRhoU()

template<typename T , typename DESCRIPTOR , typename DYNAMICS >
void olb::gpu::cuda::ConcreteDynamics< T, DESCRIPTOR, DYNAMICS >::inverseShiftRhoU ( DataOnlyCell< T, DESCRIPTOR > & cell,
T & rho,
T * u )
inlineoverridevirtual

Implements olb::gpu::cuda::Dynamics< T, DESCRIPTOR >.

Definition at line 142 of file dynamics.hh.

142 {
143 typename DYNAMICS::MomentaF().inverseShiftRhoU(cell, rho, u);
144 }

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