GPU Programming in Fortran : Building a conservative Nonlinear Shallow Water Equation Solver

preview_player
Показать описание
1:00 References from the literature
1:35 Derivation of the Shallow Water Equations from the Hydrostatic Primitives
20:45 Casting the Shallow Water Equations in the generic conservation law form
27:25 Overview of the Discontinuous Galerkin Nodal Spectral Element method discretization for conservation laws
35:45 Sketch of the Local Lax-Friedrich's Riemann Solver for the Shallow Water Equations
44:45 Brief explanation of the SELF_Model class
49:10 Adding a new model to SELF - Creating the Shallow Water solver
50:30 Adding the bottom topography and topography gradient using "Mapped" datatypes
54:50 Setting variable name, units, and description for your model
56:05 Setting the boundary conditions for the shallow water equations
1:00:55 Setting the source terms for the shallow water equations
1:03:28 Setting the element interior flux for the shallow water equations and calculating the fluid velocity with a pre-tendency method override
1:11:20 Setting the Riemann Solver for the shallow water equations
1:23:10 Building SELF using Google Cloud Build and Docker on your local system (cloud-build-local)
1:28:30 Adding a new model to the SELF build system
1:30:20 Basics of programming GPUs using HIP/HIPFort and ISO_C_BINDING
1:31:30 How to defining a Fortran Interface to bind to a C Function that launches a GPU kernel
1:33:50 Defining a HIP GPU kernel and a kernel wrapper to launch a subroutine on the GPU
1:38:50 Build debugging
1:43:58 Working with the example meshes included with SELF and basics of creating a mesh for input to SELF
1:52:54 Developing an example program for a new model in SELF - Adding the quiet fluid, flat bottomed demo
2:01:20 Adding an example program to the SELF make system
2:02:15 Overriding a type bound procedure in Fortran to define the PreTendency method for the Shallow Water equations
2:07:48 Adding the SetTopography method for the Shallow Water equations class

In this livestream, Joe will work through the algorithm development for the non-linear shallow water equations with variable bottom topography in conservative form. In the process, we will discuss the modification of the linear Local Lax-Friedrich's Riemann solver and how to specify radiation and reflecting (no-normal-flow) boundary conditions for the nonlinear shallow water equations. Following this discussion, we'll show how to use Fortran type extensions for the Model2D class in SELF to build the non-linear shallow water equation solver. Additionally, we'll cover how to enable GPU acceleration using HIP and ISO_C_Binding to expose the kernel launches in Fortran. Finally, we'll draft an example program that simulates Finally, we'll draft an example program that simulates geostrophic dipole propagation and reflection.

Reference Materials

R.J. Leveque (1992), “Numerical Methods for Conservation Laws”

D.A. Kopriva (2009), "Implementing Spectral Methods for Partial Differential Equations" (Chapter 5, Section 4)

G. Gassner, A. Winters, & D. Kopriva(2015), "A well balanced and entropy conservative discontinuous Galerkin spectral element method for the shallow water equations"

H. Ranocha (2016), " Shallow water equations: Split-form, entropy stable, well-balanced, and positivity preserving numerical methods"
Рекомендации по теме
join shbcf.ru