COURSE ANNOUNCEMENT    SPRING 2023

ATMS 502, CSE 566
Numerical Fluid Dynamics


13 students from 6 departments enrolled so far (Jan. 2023)
 
Instructor:   Dr. Brian Jewett   Class meets:   2:00-2:50 PM, Mon/Wed/Fri
E-mail:   bjewett@illinois.edu   Location:   Natural History Building room 1020 - computing lab
Office:   Natural History Building room 4048   Credit, CRN:   4 credit hours; 63423 (ATMS 502), 63492 (CSE 566)
Web page:   atmos.illinois.edu/directory/profile/bjewett   Prerequisites:   Diff. Equations (MATH 285) or consent of instructor
3D view of colliding density currents
View: towards -X, +Y. Three animations shown:
  1. Surface velocity (vectors) and flow speed in Y-direction (shaded; blue -, orange +);
  2. Two potential temperature (tan) surfaces showing colliding density currents;
  3. Vertical motion (red +, blue -) color mapped onto surface of 0.1/sec vertical vorticity - these are the twisting toothpicks!
In English: There is +Y flow in the right half of the domain (in foreground), -Y flow in the left. As two cold density currents move towards the center, these characteristically different flow fields are brought together. A vortex sheet (more) develops between the density currents. Small perturbations grow and vorticity is stretched (1, 2) as convergence and vertical motion concentrate near the center axis. Merging of nearby vortices results in upscale growth to fewer, larger rotation centers before the solution decays.

FOR: This course is for those interested in solving partial differential equations that describe nonlinear, compressible fluid flow in 3-D settings. We utilize the high performance ACCESS supercomputer Stampede-2. We will address understanding of numerical methods, implementation (coding in F90 or C), and parallelization, as well as the subsequent analysis (Python) and visualization (VisIt) of the results.

KEY OBJECTIVES: that those taking the course leave it with -

  1. A thorough understanding of the fundamentals - the basis for choosing and understanding numerical methods.
  2. The ability to critically evaluate numerical methods as presented in the literature.
  3. Important: The ability to apply these methods to high-performance computers.
  4. Consequence of the above: That by the end of the course you are very comfortable with, and capable of effectively using, supercomputer-class facilities.
TOPICS: To solve fluid flow problems, you will build skills in three areas of study: (1) fluid dynamics and kinematics; (2) programming, data interrogation, and visualization, and (3) the numerical methods that tie together the first two areas.   I will discuss and cover material regarding some (not all!) of these three areas, including:

Fluid flow Coding, data, visualization Numerical methods
Flow kinematics Languages, compilers, editors Multi-dimensional problems
Fluid flow equations Code optimization fundmentals Boundary conditions, symmetry
Simplifications, scaling Profiling, benchmarking a code Theory vs. practice:  Stability, accuracy
DNS vs. turbulence models Weak vs. strong parallel scaling Adaptive mesh refinement / nesting
Stability vs. shear dominance Visualization: idioms, tools Handling discontinuities

CFD METHODS: We address and write code for finite difference and finite volume methods. We will not cover finite element methods, for which you should consider one of the many courses in U.I. Mechanical and Civil/Environmental Engineering and Computer Science, such as: ME 471 (Finite Element Analysis), CEE 570 (Finite Element Methods), CS 555 (Numerical Methods for Partial Differential Equations), and TAM 574 (Advanced Finite Element Methods). If I've missed a relevant class here, let me know! New this year (Spr. 2023): Compact finite differencing, WENO methods, and an introduction to stochastic physics.

COMPUTER PROBLEMS: We wll use the Stampede-2 supercomputer to solve fluid flow problems in one, two and three dimensions, using regular and nested grid approaches (we also code the nesting). I will emphasize writing clear and effective programs, as well as (a bit of) structuring codes for efficient use of parallel computers. Course assignments may be programmed in either of two languages used extensively in science and engineering - Fortran 90 or C. Note that introductory codes and plotting programs in both languages will be provided to you as a starting point for your first computational assignment. The behavior of the numerical solutions will be compared to known solutions when they are available. New this year: We will use Python extensively for data analysis & plotting solutions.

The computing objectives are (a) getting everyone comfortable and familiar with our programming environment on a production supercomputer, (b) getting started with 1-D codes before we add complexity, and (c) working up to 3-D nonhydrostatic nonlinear compressible problems by the end of class. Each class computer problem will be designed to build on the last to make understanding and completing the assignments more straightforward for all. New this year: Posting results to your (new or existing) GitHub portfolio.

PROGRAMMING EXPERIENCE: You should be comfortable with one programming language, or ready to learn fast! This class could be abrupt if you have no programming experience at all. (If you have little programming experience, contact me: Let's talk! I can help).

To help everyone get started and to begin at a common starting point, I will pass out an introduction (sample) program at the start of class (in Fortran 90 and also in C) which will serve as a basis upon which you will build all your programs. We will use Python for data analysis. For those inexperienced in Fortran / C / Python / Linux, I will hold extra review sessions early in the semester, and you can pick up the needed language(s) as you go. New this year: IDE use to speed up your C or Fortran coding development.

That said, we are fortunate to have outstanding departments on campus and you might consider taking one of the many classes offered by the University's Computer Science, Mechanical Science & Engineering, or Civil/Environmental Engineering departments to strengthen your programming skills and understanding. Some of these courses are cross-listed in the Computational Science and Engineering (CSE) program. I also encourage consideration of courses taught by Prof. David Bock at Parkland College (Bock is also a Lead Visualization Programmer at NCSA). The goal here is using a programming language, rather than learning one. That said: I do go line-by-line to help students debug code. Debugging code is the #1 time sink for this class; it is just the reality. You'll get good at it!
New this year: Using serial / parallel debuggers to quickly find problems.

TEXTBOOK: There is no single textbook. I select materials from books (there are many) available free as PDFs online from the UI library; see Background, below.

INTRO: Hello! I am Brian Jewett. I teach and carry out research in the Atmospheric Sciences Dept. My specialty is severe local storms, and modeling of 3-D numerical modeling of a variety of atmospheric phenomena - severe thunderstorms and squall lines, hurricanes, and snowstorms. I am also quite interested in numerical weather prediction.

QUESTIONS? If you have any questions about the class, particularly any concerns whether your background is sufficient to take it (answer: probably so), please feel free to contact me at the email at the top of this page. If I don't contact you promptly, please email me again.

And remember, fluid modeling and visualization is fun!



BACKGROUND: If you'd like to do some reading on programming, math, or statistics before or during the semester, I recommend the following.
(Note: so-called "direct links" below work only if you are on-campus or connected to the University network via VPN. (You should use VPN when off-campus!)
(if you have trouble with these links, try another browser or login to UIUC or VPN - and let me know if they still don't work.)