CFD Julia是一个编程模块,其包含了从一维传热方程到二维不可压缩Navier-Stokes流动问题的Julia程序设计。这是个利用Julia撸CFD的基础教程,适合作为计算流体力学课程的课后作业。
Julia是个不错的计算机程序设计语言,主要面向的是数据分析、数值计算之类强调计算性能的工作场合。官方介绍Julia兼具C语言的高性能及Python的高效率,是求解器开发界的潜力股语言。
CFD Julia的github仓库地址:https://github.com/surajp92/CFD_Julia。由于Julia最近几个版本更新变化较大,仓库中的很多代码需要经过一些调整才能运行。
更详细信息可参考:A Learning Module Structuring an Introductory Course on Computational Fluid Dynamics(https://www.mdpi.com/2311-5521/4/3/159)

涉及内容包括:
| Index | Description |
|---|---|
| 01 | 1D heat equation: Forward time central space (FTCS) scheme |
| 02 | 1D heat equation: Third-order Runge-Kutta (RK3) scheme |
| 03 | 1D heat equation: Crank-Nicolson (CN) scheme |
| 04 | 1D heat equation: Implicit compact Pade (ICP) scheme |
| 05 | 1D inviscid Burgers equation: WENO-5 with Dirichlet and periodic boundary condition |
| 06 | 1D inviscid Burgers equation: CRWENO-5 with Dirichlet and periodic boundary conditions |
| 07 | 1D inviscid Burgers equation: Flux-splitting approach with WENO-5 |
| 08 | 1D inviscid Burgers equation: Riemann solver approach with WENO-5 using Rusanov solver |
| 09 | 1D Euler equations: Roe solver, WENO-5, RK3 for time integration |
| 10 | 1D Euler equations: HLLC solver, WENO-5, RK3 for time integration |
| 11 | 1D Euler equations: Rusanov solver, WENO-5, RK3 for time integration |
| 12 | 2D Poisson equation: Finite difference fast Fourier transform (FFT) based direct solver |
| 13 | 2D Poisson equation: Spectral fast Fourier transform (FFT) based direct solver |
| 14 | 2D Poisson equation: Fast sine transform (FST) based direct solver for Dirichlet boundary |
| 15 | 2D Poisson equation: Gauss-Seidel iterative method |
| 16 | 2D Poisson equation: Conjugate gradient iterative method |
| 17 | 2D Poisson equation: V-cycle multigrid iterative method |
| 18 | 2D incompressible Navier-Stokes equations (cavity flow): Arakawa, FST, RK3 schemes |
| 19 | 2D incompressible Navier-Stokes equations (vortex merging): Arakawa, FFT, RK3 schemes |
| 20 | 2D incompressible Navier-Stokes equations (vortex merging): Hybrid RK3/CN approach |
| 21 | 2D incompressible Navier-Stokes equations (vortex merging): Pseudospectral solver, 3/2 dealiasing, Hybrid RK3/CN approach |
| 22 | 2D incompressible Navier-Stokes equations (vortex merging): Pseudospectral solver, 2/3 dealiasing, Hybrid RK3/CN approach |

安装过程很简单,一路Next即可。
Julia官方源下载 速度奇慢,还有很多包在国内访问不到。国内热心网友做了镜像源,比较靠谱的镜像是北京外国语大学。之前浙大也有个镜像源,有一阵子访问不到,现在不知道什么情况。北外的源设置可以参考其官网https://mirrors.bfsu.edu.cn/help/julia/。
windows系统想要设置永久国内源可以这样做:
C:\用户\(用户名)\.julia\config\startup.jl
ENV["JULIA_PKG_SERVER"] = "https://mirrors.bfsu.edu.cn/julia",如下图所示,保存文件即可
设置完毕后可以测试。
进入Julia环境,输入命令versioninfo(),若如下图所示则表示修改成功。

注:修改镜像源不是必须的,若本机访问外网速度可以的话,也可以不用修改镜像源。不过基于各方面原因,国内访问外网速度通常都超慢。
”
Julia提供了一些基础程序设计功能,大量的特殊功能需要借助功能包来实现。这里以科学计算中最常见的绘图包PyPlot安装为例描述在Julia中程序包的安装过程。

using Pkg
Pkg.add("PyPlot")
如下图所示。

安装完毕后,输入命令Using PyPlot,如下图所示,若没有任何错误提示,则表示该包安装成功。

相同的方式可以使用命令Pkg.add("IJulia")安装IJulia包,该包可以与Jupyter配合使用,非常方便。
julia官方提供了vs code插件。


(本文结束)