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插件。
(本文结束)