Cholla 3.0.1-dev
Cholla - Massively parallel hydro on GPUs
Loading...
Searching...
No Matches
Functions | Variables
ppmc_cuda.cu File Reference

Functions definitions for the ppm kernels, using characteristic tracing. Written following Stone et al. 2008. More...

#include <math.h>
#include "../global/global.h"
#include "../global/global_cuda.h"
#include "../reconstruction/ppmc_cuda.h"
#include "../reconstruction/reconstruction_internals.h"
#include "../utils/gpu.hpp"
#include "../utils/hydro_utilities.h"
Include dependency graph for ppmc_cuda.cu:

Functions

template<int dir>
__global__ void PPMC_CTU (Real *dev_conserved, Real *dev_bounds_L, Real *dev_bounds_R, int nx, int ny, int nz, Real dx, Real dt, Real gamma)
 When passed a stencil of conserved variables, returns the left and right boundary values for the interface calculated using ppm.
 
template<int dir>
__global__ __launch_bounds__ (TPB) void PPMC_VL(Real *dev_conserved
 
 if (reconstruction::Thread_Guard< 3 >(nx, ny, nz, xid, yid, zid))
 
if constexpr (dir==0)
 
template __global__ void PPMC_CTU< 0 > (Real *dev_conserved, Real *dev_bounds_L, Real *dev_bounds_R, int nx, int ny, int nz, Real dx, Real dt, Real gamma)
 
template __global__ void PPMC_CTU< 1 > (Real *dev_conserved, Real *dev_bounds_L, Real *dev_bounds_R, int nx, int ny, int nz, Real dx, Real dt, Real gamma)
 
template __global__ void PPMC_CTU< 2 > (Real *dev_conserved, Real *dev_bounds_L, Real *dev_bounds_R, int nx, int ny, int nz, Real dx, Real dt, Real gamma)
 
template __global__ __launch_bounds__ (TPB) void PPMC_VL< 0 >(Real *dev_conserved
 

Variables

__global__ Real * dev_bounds_L
 
__global__ Real Real * dev_bounds_R
 
__global__ Real Real int nx
 
__global__ Real Real int int ny
 
__global__ Real Real int int int nz
 
__global__ Real Real int int int Real gamma
 
int xid
 
int yid
 
int zid
 
int const n_cells = nx * ny * nz
 
int o1
 
int o2
 
int o3
 
hydro_utilities::Primitive const cell_i
 
hydro_utilities::Primitive const cell_im1
 
hydro_utilities::Primitive const cell_ip1
 
hydro_utilities::Primitive const cell_im2
 
hydro_utilities::Primitive const cell_ip2
 
reconstruction::EigenVecs const eigenvectors = reconstruction::Compute_Eigenvectors(cell_i, gamma)
 
reconstruction::Characteristic const cell_i_characteristic
 
reconstruction::Characteristic const cell_im1_characteristic
 
reconstruction::Characteristic const cell_im2_characteristic
 
reconstruction::Characteristic const cell_ip1_characteristic
 
reconstruction::Characteristic const cell_ip2_characteristic
 
reconstruction::Characteristic interface_R_imh_characteristic
 
reconstruction::Characteristic interface_L_iph_characteristic
 
hydro_utilities::Primitive interface_L_iph
 
hydro_utilities::Primitive interface_R_imh
 
interface_R_imh density = fmax(interface_R_imh.density, (Real)TINY_NUMBER)
 
interface_R_imh pressure = fmax(interface_R_imh.pressure, (Real)TINY_NUMBER)
 
size_t id = cuda_utilities::compute1DIndex(xid, yid, zid, nx, ny)
 

Detailed Description

Functions definitions for the ppm kernels, using characteristic tracing. Written following Stone et al. 2008.

Function Documentation

◆ PPMC_CTU()

template<int dir>
__global__ void PPMC_CTU ( Real *  dev_conserved,
Real *  dev_bounds_L,
Real *  dev_bounds_R,
int  nx,
int  ny,
int  nz,
Real  dx,
Real  dt,
Real  gamma 
)

When passed a stencil of conserved variables, returns the left and right boundary values for the interface calculated using ppm.

Computes the left and right interface states using PPM with limiting in the characteristic variables and characteristic tracing. Used for the CTU and SIMPLE integrators. This uses the PPM method described in Stone et al. 2008 "Athena: A New Code for Astrophysical MHD". Fundementally this method relies on a Van Leer limiter in the characteristic variables to monotonize the slopes followed by limiting the interface states using the limiter from Colella & Woodward 1984.

Variable Documentation

◆ cell_i

Initial value:
=
hydro_utilities::Load_Cell_Primitive<dir>(dev_conserved, xid, yid, zid, nx, ny, n_cells, gamma)

◆ cell_i_characteristic

reconstruction::Characteristic const cell_i_characteristic
Initial value:
=
reconstruction::Primitive_To_Characteristic(cell_i, cell_i, eigenvectors, gamma)
Characteristic __device__ Primitive_To_Characteristic(hydro_utilities::Primitive const &primitive, hydro_utilities::Primitive const &primitive_slope, EigenVecs const &eigen, Real const &gamma)
Project from the primitive variables slopes to the characteristic variables slopes....
Definition reconstruction_internals.h:445

◆ cell_im1

Initial value:
= hydro_utilities::Load_Cell_Primitive<dir>(
dev_conserved, xid - int(dir == 0), yid - int(dir == 1), zid - int(dir == 2), nx, ny, n_cells, gamma)

◆ cell_im1_characteristic

reconstruction::Characteristic const cell_im1_characteristic
Initial value:
=
reconstruction::Primitive_To_Characteristic(cell_i, cell_im1, eigenvectors, gamma)

◆ cell_im2

Initial value:
= hydro_utilities::Load_Cell_Primitive<dir>(
dev_conserved, xid - 2 * int(dir == 0), yid - 2 * int(dir == 1), zid - 2 * int(dir == 2), nx, ny, n_cells, gamma)

◆ cell_im2_characteristic

reconstruction::Characteristic const cell_im2_characteristic
Initial value:
=
reconstruction::Primitive_To_Characteristic(cell_i, cell_im2, eigenvectors, gamma)

◆ cell_ip1

Initial value:
= hydro_utilities::Load_Cell_Primitive<dir>(
dev_conserved, xid + int(dir == 0), yid + int(dir == 1), zid + int(dir == 2), nx, ny, n_cells, gamma)

◆ cell_ip1_characteristic

reconstruction::Characteristic const cell_ip1_characteristic
Initial value:
=
reconstruction::Primitive_To_Characteristic(cell_i, cell_ip1, eigenvectors, gamma)

◆ cell_ip2

Initial value:
= hydro_utilities::Load_Cell_Primitive<dir>(
dev_conserved, xid + 2 * int(dir == 0), yid + 2 * int(dir == 1), zid + 2 * int(dir == 2), nx, ny, n_cells, gamma)

◆ cell_ip2_characteristic

reconstruction::Characteristic const cell_ip2_characteristic
Initial value:
=
reconstruction::Primitive_To_Characteristic(cell_i, cell_ip2, eigenvectors, gamma)

◆ gamma

template __global__ Real Real int int int Real gamma
Initial value:
{
int const thread_id = threadIdx.x + blockIdx.x * blockDim.x

◆ interface_L_iph

hydro_utilities::Primitive interface_L_iph
Initial value:
=
reconstruction::Characteristic_To_Primitive(cell_i, interface_L_iph_characteristic, eigenvectors, gamma)
hydro_utilities::Primitive __device__ __host__ Characteristic_To_Primitive(hydro_utilities::Primitive const &primitive, Characteristic const &characteristic_slope, EigenVecs const &eigen, Real const &gamma)
Project from the characteristic variables slopes to the primitive variables slopes....
Definition reconstruction_internals.h:520

◆ interface_R_imh

hydro_utilities::Primitive interface_R_imh
Initial value:
=
reconstruction::Characteristic_To_Primitive(cell_i, interface_R_imh_characteristic, eigenvectors, gamma)