ESPResSo
Extensible Simulation Package for Research on Soft Matter Systems
Loading...
Searching...
No Matches
FieldAccessorsDoublePrecisionCUDA.cu File Reference

Lattice field accessors. More...

#include <core/DataTypes.h>
#include <core/cell/Cell.h>
#include <core/cell/CellInterval.h>
#include <core/math/Matrix3.h>
#include <core/math/Vector3.h>
#include <field/iterators/IteratorMacros.h>
#include <gpu/FieldAccessor.h>
#include <gpu/FieldIndexing.h>
#include <gpu/GPUField.h>
#include <gpu/Kernel.h>
#include <thrust/device_ptr.h>
#include <thrust/device_vector.h>
#include <array>
#include <vector>
+ Include dependency graph for FieldAccessorsDoublePrecisionCUDA.cu:

Go to the source code of this file.

Namespaces

namespace  walberla
 
namespace  walberla::lbm
 
namespace  walberla::lbm::accessor
 
namespace  walberla::lbm::accessor::Population
 
namespace  walberla::lbm::accessor::Vector
 
namespace  walberla::lbm::accessor::Interpolation
 
namespace  walberla::lbm::accessor::Equilibrium
 
namespace  walberla::lbm::accessor::Density
 
namespace  walberla::lbm::accessor::Velocity
 
namespace  walberla::lbm::accessor::Force
 
namespace  walberla::lbm::accessor::MomentumDensity
 
namespace  walberla::lbm::accessor::PressureTensor
 

Macros

#define RESTRICT
 

Functions

static __forceinline__ __device__ uint getLinearIndex (uint3 blockIdx, uint3 threadIdx, uint3 gridDim, uint3 blockDim, uint fOffset)
 Get linear index of flattened data with original layout fzyx.
 
__global__ void walberla::lbm::accessor::Population::kernel_get (gpu::FieldAccessor< double > pdf, double *RESTRICT pop)
 
__global__ void walberla::lbm::accessor::Population::kernel_set (gpu::FieldAccessor< double > pdf, double const *RESTRICT pop)
 
__global__ void walberla::lbm::accessor::Population::kernel_broadcast (gpu::FieldAccessor< double > pdf, double const *RESTRICT pop)
 
__global__ void walberla::lbm::accessor::Population::kernel_set_vel (gpu::FieldAccessor< double > pdf, gpu::FieldAccessor< double > velocity, gpu::FieldAccessor< double > force, double const *RESTRICT pop)
 
std::array< double, 19u > walberla::lbm::accessor::Population::get (gpu::GPUField< double > const *pdf_field, Cell const &cell)
 Get populations from a single cell.
 
void walberla::lbm::accessor::Population::set (gpu::GPUField< double > *pdf_field, std::array< double, 19u > const &pop, Cell const &cell)
 Set populations on a single cell.
 
void walberla::lbm::accessor::Population::set (gpu::GPUField< double > *pdf_field, gpu::GPUField< double > *velocity_field, gpu::GPUField< double > const *force_field, std::array< double, 19u > const &pop, Cell const &cell)
 Set populations and recalculate velocities on a single cell.
 
void walberla::lbm::accessor::Population::initialize (gpu::GPUField< double > *pdf_field, std::array< double, 19u > const &pop)
 Initialize all cells with the same value.
 
std::vector< double > walberla::lbm::accessor::Population::get (gpu::GPUField< double > const *pdf_field, CellInterval const &ci)
 Get populations from a cell interval.
 
void walberla::lbm::accessor::Population::set (gpu::GPUField< double > *pdf_field, std::vector< double > const &values, CellInterval const &ci)
 Set populations on a cell interval.
 
void walberla::lbm::accessor::Population::set (gpu::GPUField< double > *pdf_field, gpu::GPUField< double > *velocity_field, gpu::GPUField< double > const *force_field, std::vector< double > const &values, CellInterval const &ci)
 Set populations and recalculate velocities on a cell interval.
 
__global__ void walberla::lbm::accessor::Vector::kernel_get (gpu::FieldAccessor< double > vec, double *u_out)
 
__global__ void walberla::lbm::accessor::Vector::kernel_set (gpu::FieldAccessor< double > vec, double const *RESTRICT u_in)
 
__global__ void walberla::lbm::accessor::Vector::kernel_broadcast (gpu::FieldAccessor< double > vec, double const *RESTRICT u_in)
 
__global__ void walberla::lbm::accessor::Vector::kernel_add (gpu::FieldAccessor< double > vec, double const *RESTRICT u_in)
 
__global__ void walberla::lbm::accessor::Vector::kernel_broadcast_add (gpu::FieldAccessor< double > vec, double const *RESTRICT u_in)
 
Vector3< double > walberla::lbm::accessor::Vector::get (gpu::GPUField< double > const *field, Cell const &cell)
 Get value from a single cell.
 
void walberla::lbm::accessor::Vector::set (gpu::GPUField< double > *field, Vector3< double > const &vec, Cell const &cell)
 Set value on a single cell.
 
void walberla::lbm::accessor::Vector::add (gpu::GPUField< double > *field, Vector3< double > const &vec, Cell const &cell)
 Add value to a single cell.
 
void walberla::lbm::accessor::Vector::initialize (gpu::GPUField< double > *field, Vector3< double > const &vec)
 Initialize all cells with the same value.
 
void walberla::lbm::accessor::Vector::add_to_all (gpu::GPUField< double > *field, Vector3< double > const &vec)
 Add value to all cells.
 
std::vector< double > walberla::lbm::accessor::Vector::get (gpu::GPUField< double > const *vec_field, CellInterval const &ci)
 Get values from a cell interval.
 
void walberla::lbm::accessor::Vector::set (gpu::GPUField< double > *vec_field, std::vector< double > const &values, CellInterval const &ci)
 Set values on a cell interval.
 
static __forceinline__ __device__ void walberla::lbm::accessor::Interpolation::calculate_weights (double const *RESTRICT const pos, int *RESTRICT const corner, double *RESTRICT const weights, uint gl)
 Calculate interpolation weights.
 
__global__ void walberla::lbm::accessor::Interpolation::kernel_get (gpu::FieldAccessor< double > vec, double const *RESTRICT const pos, double *RESTRICT const vel, uint n_pos, uint gl)
 
__global__ void walberla::lbm::accessor::Interpolation::kernel_set (gpu::FieldAccessor< double > vec, double const *RESTRICT const pos, double const *RESTRICT const forces, uint n_pos, uint gl)
 
static dim3 walberla::lbm::accessor::Interpolation::calculate_dim_grid (uint const threads_x, uint const blocks_per_grid_y, uint const threads_per_block)
 
std::vector< double > walberla::lbm::accessor::Interpolation::get (gpu::GPUField< double > const *vec_field, std::vector< double > const &pos, uint gl)
 
void walberla::lbm::accessor::Interpolation::set (gpu::GPUField< double > const *vec_field, std::vector< double > const &pos, std::vector< double > const &forces, uint gl)
 
__device__ void walberla::lbm::accessor::Equilibrium::kernel_set_device (gpu::FieldAccessor< double > pdf, double const *RESTRICT const u, double rho)
 
__global__ void walberla::lbm::accessor::Density::kernel_get (gpu::FieldAccessor< double > pdf, double *RESTRICT rho_out)
 
__global__ void walberla::lbm::accessor::Density::kernel_set (gpu::FieldAccessor< double > pdf, double const *RESTRICT rho_in)
 
double walberla::lbm::accessor::Density::get (gpu::GPUField< double > const *pdf_field, Cell const &cell)
 
void walberla::lbm::accessor::Density::set (gpu::GPUField< double > *pdf_field, const double rho, Cell const &cell)
 
std::vector< double > walberla::lbm::accessor::Density::get (gpu::GPUField< double > const *pdf_field, CellInterval const &ci)
 
void walberla::lbm::accessor::Density::set (gpu::GPUField< double > *pdf_field, std::vector< double > const &values, CellInterval const &ci)
 
__global__ void walberla::lbm::accessor::Velocity::kernel_get (gpu::FieldAccessor< double > pdf, gpu::FieldAccessor< double > force, double *RESTRICT u_out)
 
__global__ void walberla::lbm::accessor::Velocity::kernel_set (gpu::FieldAccessor< double > pdf, gpu::FieldAccessor< double > velocity, gpu::FieldAccessor< double > force, double const *RESTRICT u_in)
 
Vector3< double > walberla::lbm::accessor::Velocity::get (gpu::GPUField< double > const *pdf_field, gpu::GPUField< double > const *force_field, Cell const &cell)
 
std::vector< double > walberla::lbm::accessor::Velocity::get (gpu::GPUField< double > const *pdf_field, gpu::GPUField< double > const *force_field, CellInterval const &ci)
 
void walberla::lbm::accessor::Velocity::set (gpu::GPUField< double > *pdf_field, gpu::GPUField< double > *velocity_field, gpu::GPUField< double > const *force_field, Vector3< double > const &u, Cell const &cell)
 
void walberla::lbm::accessor::Velocity::set (gpu::GPUField< double > *pdf_field, gpu::GPUField< double > *velocity_field, gpu::GPUField< double > const *force_field, std::vector< double > const &values, CellInterval const &ci)
 
__global__ void walberla::lbm::accessor::Force::kernel_set (gpu::FieldAccessor< double > pdf, gpu::FieldAccessor< double > velocity, gpu::FieldAccessor< double > force, double const *RESTRICT f_in)
 
void walberla::lbm::accessor::Force::set (gpu::GPUField< double > const *pdf_field, gpu::GPUField< double > *velocity_field, gpu::GPUField< double > *force_field, Vector3< double > const &u, Cell const &cell)
 
void walberla::lbm::accessor::Force::set (gpu::GPUField< double > const *pdf_field, gpu::GPUField< double > *velocity_field, gpu::GPUField< double > *force_field, std::vector< double > const &values, CellInterval const &ci)
 
__global__ void walberla::lbm::accessor::MomentumDensity::kernel_sum (gpu::FieldAccessor< double > pdf, gpu::FieldAccessor< double > force, double *RESTRICT out)
 
Vector3< double > walberla::lbm::accessor::MomentumDensity::reduce (gpu::GPUField< double > const *pdf_field, gpu::GPUField< double > const *force_field)
 
__global__ void walberla::lbm::accessor::PressureTensor::kernel_get (gpu::FieldAccessor< double > pdf, double *RESTRICT p_out)
 
Matrix3< double > walberla::lbm::accessor::PressureTensor::get (gpu::GPUField< double > const *pdf_field, Cell const &cell)
 
std::vector< double > walberla::lbm::accessor::PressureTensor::get (gpu::GPUField< double > const *pdf_field, CellInterval const &ci)
 

Detailed Description

Macro Definition Documentation

◆ RESTRICT

#define RESTRICT

Definition at line 74 of file FieldAccessorsDoublePrecisionCUDA.cu.

Function Documentation

◆ getLinearIndex()

static __forceinline__ __device__ uint getLinearIndex ( uint3  blockIdx,
uint3  threadIdx,
uint3  gridDim,
uint3  blockDim,
uint  fOffset 
)
static