pmontalb / PdeFiniteDifferenceKernels

CUDA kernels for solving the most popular hyperbolic and parabolic PDEs

Home Page:https://pmontalb.github.io/PdeFiniteDifferenceKernels/

Repository from Github https://github.compmontalb/PdeFiniteDifferenceKernelsRepository from Github https://github.compmontalb/PdeFiniteDifferenceKernels

PdeFiniteDifferenceKernels

This API is a collection of CUDA kernels used for solving Partial Differential Equations (PDE) by means of Finite Difference.

The extent of this API is to provide a library for applying the Method of Lines (MoL) to (up to) 3D hyperbolic and parabolic PDEs. Note that I wrote no support for elliptic PDEs.

The goal was to write the smallest amount of lines of code, and re-use of all my existing CUDA code, see CudaLight and CudaLightKernels. For this reason I decided to focus my attention to just linear PDE with no source term, so that everything can be solved by the application of a linear operator.

Types

  • SolverType: defines the time discretization solver type: the most popular ODE methods are there
  • SpaceDiscretizerType: defines the space discretization type: One-sided, Centered and Lax-Wendroff-Style
  • BoundaryConditionType: defines the boundary conditions: Dirichlet, Neumann and Periodic

Convenience Structures

  • BoundaryCondition1D, BoundaryCondition2D: wrapper for left/right/up/down boundary conditions
  • FiniteDifferenceInput1D, FiniteDifferenceInput2D: wrapper for all the common inputs used by CUDA kernels

Kernels structure

I kept the same conventions used in CudaLightKernels

About

CUDA kernels for solving the most popular hyperbolic and parabolic PDEs

https://pmontalb.github.io/PdeFiniteDifferenceKernels/

License:MIT License


Languages

Language:Cuda 85.3%Language:C++ 13.9%Language:CMake 0.9%