|
1 | 1 | ##### halo points ≥ 2 NEEDED!!
|
2 |
| -const θmax = 1.0e20 |
| 2 | +const θmax = 1.0f20 |
3 | 3 |
|
4 | 4 | ##### calculate CFL number: c=uΔt/Lx
|
5 | 5 | @inline CFLx(i, j, k, g::AbstractGrid, u, ΔT) = @inbounds abs(u[i, j, k] * ΔT / ΔxC(i, j, k, g))
|
6 | 6 | @inline CFLy(i, j, k, g::AbstractGrid, v, ΔT) = @inbounds abs(v[i, j, k] * ΔT / ΔyC(i, j, k, g))
|
7 | 7 | @inline CFLz(i, j, k, g::AbstractGrid, w, ΔT) = @inbounds abs(w[i, j, k] * ΔT / ΔzC(i, j, k, g))
|
8 | 8 |
|
9 | 9 | ##### calculate d₀ and d₁
|
10 |
| -@inline d0(CFL) = @inbounds (2.0 - CFL) * (1.0 - CFL) / 6.0 |
11 |
| -@inline d1(CFL) = @inbounds (1.0 - CFL * CFL) / 6.0 |
| 10 | +@inline d0(CFL) = @inbounds (2.0f0 - CFL) * (1.0f0 - CFL) / 6.0f0 |
| 11 | +@inline d1(CFL) = @inbounds (1.0f0 - CFL * CFL) / 6.0f0 |
12 | 12 |
|
13 | 13 | ##### calculate volume transport, unit: m³/s
|
14 | 14 | @inline Trans_x(i, j, k, g::AbstractGrid, u) = @inbounds Ax(i, j, k, g) * u[i, j, k]
|
@@ -36,38 +36,38 @@ const θmax = 1.0e20
|
36 | 36 |
|
37 | 37 | ##### calculate Ψ⁺ and Ψ⁻
|
38 | 38 | @inline Ψx⁺(i, j, k, g::AbstractGrid, u, c, ΔT) =
|
39 |
| - max(0.0, min(min(1.0, d0(CFLx(i, j, k, g, u, ΔT)) + d1(CFLx(i, j, k, g, u, ΔT)) * θx⁺(i, j, k, c, g)), |
40 |
| - θx⁺(i, j, k, c, g) * (1.0 - CFLx(i, j, k, g, u, ΔT)) / (CFLx(i, j, k, g, u, ΔT) + 1.0e-20))) |
| 39 | + max(0.0f0, min(min(1.0f0, d0(CFLx(i, j, k, g, u, ΔT)) + d1(CFLx(i, j, k, g, u, ΔT)) * θx⁺(i, j, k, c, g)), |
| 40 | + θx⁺(i, j, k, c, g) * (1.0f0 - CFLx(i, j, k, g, u, ΔT)) / (CFLx(i, j, k, g, u, ΔT) + 1.0f-20))) |
41 | 41 |
|
42 | 42 | @inline Ψx⁻(i, j, k, g::AbstractGrid, u, c, ΔT) =
|
43 |
| - max(0.0, min(min(1.0, d0(CFLx(i, j, k, g, u, ΔT)) + d1(CFLx(i, j, k, g, u, ΔT)) * θx⁻(i, j, k, c, g)), |
44 |
| - θx⁻(i, j, k, c, g) * (1.0 - CFLx(i, j, k, g, u, ΔT)) / (CFLx(i, j, k, g, u, ΔT) + 1.0e-20))) |
| 43 | + max(0.0f0, min(min(1.0f0, d0(CFLx(i, j, k, g, u, ΔT)) + d1(CFLx(i, j, k, g, u, ΔT)) * θx⁻(i, j, k, c, g)), |
| 44 | + θx⁻(i, j, k, c, g) * (1.0f0 - CFLx(i, j, k, g, u, ΔT)) / (CFLx(i, j, k, g, u, ΔT) + 1.0f-20))) |
45 | 45 |
|
46 | 46 | @inline Ψy⁺(i, j, k, g::AbstractGrid, v, c, ΔT) =
|
47 |
| - max(0.0, min(min(1.0, d0(CFLy(i, j, k, g, v, ΔT)) + d1(CFLy(i, j, k, g, v, ΔT)) * θy⁺(i, j, k, c, g)), |
48 |
| - θy⁺(i, j, k, c, g) * (1.0 - CFLy(i, j, k, g, v, ΔT)) / (CFLy(i, j, k, g, v, ΔT) + 1.0e-20))) |
| 47 | + max(0.0f0, min(min(1.0f0, d0(CFLy(i, j, k, g, v, ΔT)) + d1(CFLy(i, j, k, g, v, ΔT)) * θy⁺(i, j, k, c, g)), |
| 48 | + θy⁺(i, j, k, c, g) * (1.0f0 - CFLy(i, j, k, g, v, ΔT)) / (CFLy(i, j, k, g, v, ΔT) + 1.0f-20))) |
49 | 49 |
|
50 | 50 | @inline Ψy⁻(i, j, k, g::AbstractGrid, v, c, ΔT) =
|
51 |
| - max(0.0, min(min(1.0, d0(CFLy(i, j, k, g, v, ΔT)) + d1(CFLy(i, j, k, g, v, ΔT)) * θy⁻(i, j, k, c, g)), |
52 |
| - θy⁻(i, j, k, c, g) * (1.0 - CFLy(i, j, k, g, v, ΔT)) / (CFLy(i, j, k, g, v, ΔT) + 1.0e-20))) |
| 51 | + max(0.0f0, min(min(1.0f0, d0(CFLy(i, j, k, g, v, ΔT)) + d1(CFLy(i, j, k, g, v, ΔT)) * θy⁻(i, j, k, c, g)), |
| 52 | + θy⁻(i, j, k, c, g) * (1.0f0 - CFLy(i, j, k, g, v, ΔT)) / (CFLy(i, j, k, g, v, ΔT) + 1.0f-20))) |
53 | 53 |
|
54 | 54 | @inline Ψz⁺(i, j, k, g::AbstractGrid, w, c, ΔT) =
|
55 |
| - max(0.0, min(min(1.0, d0(CFLz(i, j, k, g, w, ΔT)) + d1(CFLz(i, j, k, g, w, ΔT)) * θz⁺(i, j, k, c, g)), |
56 |
| - θz⁺(i, j, k, c, g) * (1.0 - CFLz(i, j, k, g, w, ΔT)) / (CFLz(i, j, k, g, w, ΔT) + 1.0e-20))) |
| 55 | + max(0.0f0, min(min(1.0f0, d0(CFLz(i, j, k, g, w, ΔT)) + d1(CFLz(i, j, k, g, w, ΔT)) * θz⁺(i, j, k, c, g)), |
| 56 | + θz⁺(i, j, k, c, g) * (1.0f0 - CFLz(i, j, k, g, w, ΔT)) / (CFLz(i, j, k, g, w, ΔT) + 1.0f-20))) |
57 | 57 |
|
58 | 58 | @inline Ψz⁻(i, j, k, g::AbstractGrid, w, c, ΔT) =
|
59 |
| - max(0.0, min(min(1.0, d0(CFLz(i, j, k, g, w, ΔT)) + d1(CFLz(i, j, k, g, w, ΔT)) * θz⁻(i, j, k, c, g)), |
60 |
| - θz⁻(i, j, k, c, g) * (1.0 - CFLz(i, j, k, g, w, ΔT)) / (CFLz(i, j, k, g, w, ΔT) + 1.0e-20))) |
| 59 | + max(0.0f0, min(min(1.0f0, d0(CFLz(i, j, k, g, w, ΔT)) + d1(CFLz(i, j, k, g, w, ΔT)) * θz⁻(i, j, k, c, g)), |
| 60 | + θz⁻(i, j, k, c, g) * (1.0f0 - CFLz(i, j, k, g, w, ΔT)) / (CFLz(i, j, k, g, w, ΔT) + 1.0f-20))) |
61 | 61 |
|
62 | 62 | ##### advection flux
|
63 | 63 | @inline adv_flux_x(i, j, k, g::AbstractGrid, u, c, ΔT) =
|
64 |
| - 0.5 * (Trans_x(i, j, k, g, u) + abs(Trans_x(i, j, k, g, u))) * (c[i-1, j, k] + Ψx⁺(i, j, k, g, u, c, ΔT) * δx⁰(i, j, k, c, g)) + |
65 |
| - 0.5 * (Trans_x(i, j, k, g, u) - abs(Trans_x(i, j, k, g, u))) * (c[i, j, k] - Ψx⁻(i, j, k, g, u, c, ΔT) * δx⁰(i, j, k, c, g)) |
| 64 | + 0.5f0 * (Trans_x(i, j, k, g, u) + abs(Trans_x(i, j, k, g, u))) * (c[i-1, j, k] + Ψx⁺(i, j, k, g, u, c, ΔT) * δx⁰(i, j, k, c, g)) + |
| 65 | + 0.5f0 * (Trans_x(i, j, k, g, u) - abs(Trans_x(i, j, k, g, u))) * (c[i, j, k] - Ψx⁻(i, j, k, g, u, c, ΔT) * δx⁰(i, j, k, c, g)) |
66 | 66 |
|
67 | 67 | @inline adv_flux_y(i, j, k, g::AbstractGrid, v, c, ΔT) =
|
68 |
| - 0.5 * (Trans_y(i, j, k, g, v) + abs(Trans_y(i, j, k, g, v))) * (c[i, j-1, k] + Ψy⁺(i, j, k, g, v, c, ΔT) * δy⁰(i, j, k, c, g)) + |
69 |
| - 0.5 * (Trans_y(i, j, k, g, v) - abs(Trans_y(i, j, k, g, v))) * (c[i, j, k] - Ψy⁻(i, j, k, g, v, c, ΔT) * δy⁰(i, j, k, c, g)) |
| 68 | + 0.5f0 * (Trans_y(i, j, k, g, v) + abs(Trans_y(i, j, k, g, v))) * (c[i, j-1, k] + Ψy⁺(i, j, k, g, v, c, ΔT) * δy⁰(i, j, k, c, g)) + |
| 69 | + 0.5f0 * (Trans_y(i, j, k, g, v) - abs(Trans_y(i, j, k, g, v))) * (c[i, j, k] - Ψy⁻(i, j, k, g, v, c, ΔT) * δy⁰(i, j, k, c, g)) |
70 | 70 |
|
71 | 71 | @inline adv_flux_z(i, j, k, g::AbstractGrid, w, c, ΔT) =
|
72 |
| - 0.5 * (Trans_z(i, j, k, g, w) + abs(Trans_z(i, j, k, g, w))) * (c[i, j, k ] + Ψz⁻(i, j, k, g, w, c, ΔT) * δz⁰(i, j, k, c, g)) + |
73 |
| - 0.5 * (Trans_z(i, j, k, g, w) - abs(Trans_z(i, j, k, g, w))) * (c[i, j, k-1] - Ψz⁺(i, j, k, g, w, c, ΔT) * δz⁰(i, j, k, c, g)) |
| 72 | + 0.5f0 * (Trans_z(i, j, k, g, w) + abs(Trans_z(i, j, k, g, w))) * (c[i, j, k ] + Ψz⁻(i, j, k, g, w, c, ΔT) * δz⁰(i, j, k, c, g)) + |
| 73 | + 0.5f0 * (Trans_z(i, j, k, g, w) - abs(Trans_z(i, j, k, g, w))) * (c[i, j, k-1] - Ψz⁺(i, j, k, g, w, c, ΔT) * δz⁰(i, j, k, c, g)) |
0 commit comments