Skip to content

File Advection.cu

FileList > src > Advection.cu

Go to the source code of this file

  • #include "Advection.h"

Classes

Type Name
struct SharedMemory <class T>
struct SharedMemory< double > <>

Public Functions

Type Name
__host__ void AdvkernelCPU (Param XParam, BlockP< T > XBlock, T dt, T * zb, EvolvingP< T > XEv, AdvanceP< T > XAdv, EvolvingP< T > XEv_o)
CPU routine for advancing the solution in time for each block and cell.
template __host__ void AdvkernelCPU< double > (Param XParam, BlockP< double > XBlock, double dt, double * zb, EvolvingP< double > XEv, AdvanceP< double > XAdv, EvolvingP< double > XEv_o)
template __host__ void AdvkernelCPU< float > (Param XParam, BlockP< float > XBlock, float dt, float * zb, EvolvingP< float > XEv, AdvanceP< float > XAdv, EvolvingP< float > XEv_o)
__global__ void AdvkernelGPU (Param XParam, BlockP< T > XBlock, T dt, T * zb, EvolvingP< T > XEv, AdvanceP< T > XAdv, EvolvingP< T > XEv_o)
GPU kernel for advancing the solution in time for each block and cell.
template __global__ void AdvkernelGPU< double > (Param XParam, BlockP< double > XBlock, double dt, double * zb, EvolvingP< double > XEv, AdvanceP< double > XAdv, EvolvingP< double > XEv_o)
template __global__ void AdvkernelGPU< float > (Param XParam, BlockP< float > XBlock, float dt, float * zb, EvolvingP< float > XEv, AdvanceP< float > XAdv, EvolvingP< float > XEv_o)
__host__ T CalctimestepCPU (Param XParam, Loop< T > XLoop, BlockP< T > XBlock, TimeP< T > XTime)
CPU routine to calculate the next time step for the simulation.
template __host__ double CalctimestepCPU< double > (Param XParam, Loop< double > XLoop, BlockP< double > XBlock, TimeP< double > XTime)
template __host__ float CalctimestepCPU< float > (Param XParam, Loop< float > XLoop, BlockP< float > XBlock, TimeP< float > XTime)
__host__ T CalctimestepGPU (Param XParam, Loop< T > XLoop, BlockP< T > XBlock, TimeP< T > XTime)
GPU routine to calculate the next time step for the simulation.
template __host__ double CalctimestepGPU< double > (Param XParam, Loop< double > XLoop, BlockP< double > XBlock, TimeP< double > XTime)
template __host__ float CalctimestepGPU< float > (Param XParam, Loop< float > XLoop, BlockP< float > XBlock, TimeP< float > XTime)
__host__ void cleanupCPU (Param XParam, BlockP< T > XBlock, EvolvingP< T > XEv, EvolvingP< T > XEv_o)
CPU routine to clean up evolving variables after advection step.
template __host__ void cleanupCPU< double > (Param XParam, BlockP< double > XBlock, EvolvingP< double > XEv, EvolvingP< double > XEv_o)
template __host__ void cleanupCPU< float > (Param XParam, BlockP< float > XBlock, EvolvingP< float > XEv, EvolvingP< float > XEv_o)
__global__ void cleanupGPU (Param XParam, BlockP< T > XBlock, EvolvingP< T > XEv, EvolvingP< T > XEv_o)
GPU kernel to clean up evolving variables after advection step.
template __global__ void cleanupGPU< double > (Param XParam, BlockP< double > XBlock, EvolvingP< double > XEv, EvolvingP< double > XEv_o)
template __global__ void cleanupGPU< float > (Param XParam, BlockP< float > XBlock, EvolvingP< float > XEv, EvolvingP< float > XEv_o)
__global__ void densify (Param XParam, BlockP< T > XBlock, T * g_idata, T * g_odata)
GPU kernel to copy and densify data from block memory to output array.
__global__ void reducemin3 (T * g_idata, T * g_odata, unsigned int n)
GPU kernel to compute the minimum value in an array using parallel reduction.
__host__ T timestepreductionCPU (Param XParam, Loop< T > XLoop, BlockP< T > XBlock, TimeP< T > XTime)
CPU routine to compute the minimum allowed time step across all blocks and cells.
template __host__ float timestepreductionCPU (Param XParam, Loop< float > XLoop, BlockP< float > XBlock, TimeP< float > XTime)
template __host__ double timestepreductionCPU (Param XParam, Loop< double > XLoop, BlockP< double > XBlock, TimeP< double > XTime)
__host__ void updateEVCPU (Param XParam, BlockP< T > XBlock, EvolvingP< T > XEv, FluxP< T > XFlux, AdvanceP< T > XAdv)
CPU routine to update evolving variables (h, u, v, zs) for each block and cell.
template __host__ void updateEVCPU< double > (Param XParam, BlockP< double > XBlock, EvolvingP< double > XEv, FluxP< double > XFlux, AdvanceP< double > XAdv)
template __host__ void updateEVCPU< float > (Param XParam, BlockP< float > XBlock, EvolvingP< float > XEv, FluxP< float > XFlux, AdvanceP< float > XAdv)
__global__ void updateEVGPU (Param XParam, BlockP< T > XBlock, EvolvingP< T > XEv, FluxP< T > XFlux, AdvanceP< T > XAdv)
GPU kernel to update evolving variables (h, u, v, zs) for each block and cell.
template __global__ void updateEVGPU< double > (Param XParam, BlockP< double > XBlock, EvolvingP< double > XEv, FluxP< double > XFlux, AdvanceP< double > XAdv)
template __global__ void updateEVGPU< float > (Param XParam, BlockP< float > XBlock, EvolvingP< float > XEv, FluxP< float > XFlux, AdvanceP< float > XAdv)

Public Functions Documentation

function AdvkernelCPU

CPU routine for advancing the solution in time for each block and cell.

template<class T>
__host__ void AdvkernelCPU (
    Param XParam,
    BlockP < T > XBlock,
    T dt,
    T * zb,
    EvolvingP < T > XEv,
    AdvanceP < T > XAdv,
    EvolvingP < T > XEv_o
) 

Template parameters:

  • T Data type

Parameters:

  • XParam Model parameters
  • XBlock Block data structure
  • dt Time step
  • zb Bed elevation array
  • XEv Evolving variables
  • XAdv Advance variables
  • XEv_o Output evolving variables

Updates water height, velocity, and surface elevation for the next time step.


function AdvkernelCPU< double >

template __host__ void AdvkernelCPU< double > (
    Param XParam,
    BlockP < double > XBlock,
    double dt,
    double * zb,
    EvolvingP < double > XEv,
    AdvanceP < double > XAdv,
    EvolvingP < double > XEv_o
) 

function AdvkernelCPU< float >

template __host__ void AdvkernelCPU< float > (
    Param XParam,
    BlockP < float > XBlock,
    float dt,
    float * zb,
    EvolvingP < float > XEv,
    AdvanceP < float > XAdv,
    EvolvingP < float > XEv_o
) 

function AdvkernelGPU

GPU kernel for advancing the solution in time for each block and cell.

template<class T>
__global__ void AdvkernelGPU (
    Param XParam,
    BlockP < T > XBlock,
    T dt,
    T * zb,
    EvolvingP < T > XEv,
    AdvanceP < T > XAdv,
    EvolvingP < T > XEv_o
) 

Template parameters:

  • T Data type

Parameters:

  • XParam Model parameters
  • XBlock Block data structure
  • dt Time step
  • zb Bed elevation array
  • XEv Evolving variables
  • XAdv Advance variables
  • XEv_o Output evolving variables

Updates water height, velocity, and surface elevation for the next time step.


function AdvkernelGPU< double >

template __global__ void AdvkernelGPU< double > (
    Param XParam,
    BlockP < double > XBlock,
    double dt,
    double * zb,
    EvolvingP < double > XEv,
    AdvanceP < double > XAdv,
    EvolvingP < double > XEv_o
) 

function AdvkernelGPU< float >

template __global__ void AdvkernelGPU< float > (
    Param XParam,
    BlockP < float > XBlock,
    float dt,
    float * zb,
    EvolvingP < float > XEv,
    AdvanceP < float > XAdv,
    EvolvingP < float > XEv_o
) 

function CalctimestepCPU

CPU routine to calculate the next time step for the simulation.

template<class T>
__host__ T CalctimestepCPU (
    Param XParam,
    Loop < T > XLoop,
    BlockP < T > XBlock,
    TimeP < T > XTime
) 

Template parameters:

  • T Data type

Parameters:

  • XParam Model parameters
  • XLoop Loop control structure
  • XBlock Block data structure
  • XTime Time control structure

Returns:

Computed time step


function CalctimestepCPU< double >

template __host__ double CalctimestepCPU< double > (
    Param XParam,
    Loop < double > XLoop,
    BlockP < double > XBlock,
    TimeP < double > XTime
) 

function CalctimestepCPU< float >

template __host__ float CalctimestepCPU< float > (
    Param XParam,
    Loop < float > XLoop,
    BlockP < float > XBlock,
    TimeP < float > XTime
) 

function CalctimestepGPU

GPU routine to calculate the next time step for the simulation.

template<class T>
__host__ T CalctimestepGPU (
    Param XParam,
    Loop < T > XLoop,
    BlockP < T > XBlock,
    TimeP < T > XTime
) 

Template parameters:

  • T Data type

Parameters:

  • XParam Model parameters
  • XLoop Loop control structure
  • XBlock Block data structure
  • XTime Time control structure

Returns:

Computed time step


function CalctimestepGPU< double >

template __host__ double CalctimestepGPU< double > (
    Param XParam,
    Loop < double > XLoop,
    BlockP < double > XBlock,
    TimeP < double > XTime
) 

function CalctimestepGPU< float >

template __host__ float CalctimestepGPU< float > (
    Param XParam,
    Loop < float > XLoop,
    BlockP < float > XBlock,
    TimeP < float > XTime
) 

function cleanupCPU

CPU routine to clean up evolving variables after advection step.

template<class T>
__host__ void cleanupCPU (
    Param XParam,
    BlockP < T > XBlock,
    EvolvingP < T > XEv,
    EvolvingP < T > XEv_o
) 

Template parameters:

  • T Data type

Parameters:

  • XParam Model parameters
  • XBlock Block data structure
  • XEv Evolving variables
  • XEv_o Output evolving variables

function cleanupCPU< double >

template __host__ void cleanupCPU< double > (
    Param XParam,
    BlockP < double > XBlock,
    EvolvingP < double > XEv,
    EvolvingP < double > XEv_o
) 

function cleanupCPU< float >

template __host__ void cleanupCPU< float > (
    Param XParam,
    BlockP < float > XBlock,
    EvolvingP < float > XEv,
    EvolvingP < float > XEv_o
) 

function cleanupGPU

GPU kernel to clean up evolving variables after advection step.

template<class T>
__global__ void cleanupGPU (
    Param XParam,
    BlockP < T > XBlock,
    EvolvingP < T > XEv,
    EvolvingP < T > XEv_o
) 

Template parameters:

  • T Data type

Parameters:

  • XParam Model parameters
  • XBlock Block data structure
  • XEv Evolving variables
  • XEv_o Output evolving variables

function cleanupGPU< double >

template __global__ void cleanupGPU< double > (
    Param XParam,
    BlockP < double > XBlock,
    EvolvingP < double > XEv,
    EvolvingP < double > XEv_o
) 

function cleanupGPU< float >

template __global__ void cleanupGPU< float > (
    Param XParam,
    BlockP < float > XBlock,
    EvolvingP < float > XEv,
    EvolvingP < float > XEv_o
) 

function densify

GPU kernel to copy and densify data from block memory to output array.

template<class T>
__global__ void densify (
    Param XParam,
    BlockP < T > XBlock,
    T * g_idata,
    T * g_odata
) 

Template parameters:

  • T Data type

Parameters:

  • XParam Model parameters
  • XBlock Block data structure
  • g_idata Input array
  • g_odata Output array

function reducemin3

GPU kernel to compute the minimum value in an array using parallel reduction.

template<class T>
__global__ void reducemin3 (
    T * g_idata,
    T * g_odata,
    unsigned int n
) 

Template parameters:

  • T Data type

Parameters:

  • g_idata Input array
  • g_odata Output array (min per block)
  • n Number of elements

function timestepreductionCPU

CPU routine to compute the minimum allowed time step across all blocks and cells.

template<class T>
__host__ T timestepreductionCPU (
    Param XParam,
    Loop < T > XLoop,
    BlockP < T > XBlock,
    TimeP < T > XTime
) 

Template parameters:

  • T Data type

Parameters:

  • XParam Model parameters
  • XLoop Loop control structure
  • XBlock Block data structure
  • XTime Time control structure

Returns:

Minimum allowed time step


function timestepreductionCPU

template __host__ float timestepreductionCPU (
    Param XParam,
    Loop < float > XLoop,
    BlockP < float > XBlock,
    TimeP < float > XTime
) 

function timestepreductionCPU

template __host__ double timestepreductionCPU (
    Param XParam,
    Loop < double > XLoop,
    BlockP < double > XBlock,
    TimeP < double > XTime
) 

function updateEVCPU

CPU routine to update evolving variables (h, u, v, zs) for each block and cell.

template<class T>
__host__ void updateEVCPU (
    Param XParam,
    BlockP < T > XBlock,
    EvolvingP < T > XEv,
    FluxP < T > XFlux,
    AdvanceP < T > XAdv
) 

Template parameters:

  • T Data type

Parameters:

  • XParam Model parameters
  • XBlock Block data structure
  • XEv Evolving variables
  • XFlux Flux variables
  • XAdv Advance variables

Computes new values for water height, velocity, and surface elevation using fluxes and advances.


function updateEVCPU< double >

template __host__ void updateEVCPU< double > (
    Param XParam,
    BlockP < double > XBlock,
    EvolvingP < double > XEv,
    FluxP < double > XFlux,
    AdvanceP < double > XAdv
) 

function updateEVCPU< float >

template __host__ void updateEVCPU< float > (
    Param XParam,
    BlockP < float > XBlock,
    EvolvingP < float > XEv,
    FluxP < float > XFlux,
    AdvanceP < float > XAdv
) 

function updateEVGPU

GPU kernel to update evolving variables (h, u, v, zs) for each block and cell.

template<class T>
__global__ void updateEVGPU (
    Param XParam,
    BlockP < T > XBlock,
    EvolvingP < T > XEv,
    FluxP < T > XFlux,
    AdvanceP < T > XAdv
) 

Template parameters:

  • T Data type

Parameters:

  • XParam Model parameters
  • XBlock Block data structure
  • XEv Evolving variables
  • XFlux Flux variables
  • XAdv Advance variables

Computes new values for water height, velocity, and surface elevation using fluxes and advances.


function updateEVGPU< double >

template __global__ void updateEVGPU< double > (
    Param XParam,
    BlockP < double > XBlock,
    EvolvingP < double > XEv,
    FluxP < double > XFlux,
    AdvanceP < double > XAdv
) 

function updateEVGPU< float >

template __global__ void updateEVGPU< float > (
    Param XParam,
    BlockP < float > XBlock,
    EvolvingP < float > XEv,
    FluxP < float > XFlux,
    AdvanceP < float > XAdv
) 


The documentation for this class was generated from the following file src/Advection.cu