Skip to content

pmontalb/PdeFiniteDifferenceKernels

Repository files navigation

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