Skip to content

Commit

Permalink
Merge branch 'main' into example2
Browse files Browse the repository at this point in the history
  • Loading branch information
huiyuxie authored Dec 10, 2024
2 parents 2bb5b8a + 986b019 commit c548d32
Show file tree
Hide file tree
Showing 3 changed files with 48 additions and 23 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -41,9 +41,6 @@ boundary_conditions_parabolic = Dict(:x_neg => BoundaryConditionDirichlet(initia
# Create DG solver with polynomial degree = 3 and (local) Lax-Friedrichs/Rusanov flux as surface flux
solver = DGSEM(polydeg = 3, surface_flux = flux_lax_friedrichs)

coordinates_min = (-1.0, -0.5)
coordinates_max = (0.0, 0.5)

# This maps the domain [-1, 1]^2 to [-1, 0] x [-0.5, 0.5] while also
# introducing a curved warping to interior nodes.
function mapping(xi, eta)
Expand Down
28 changes: 20 additions & 8 deletions src/callbacks_step/analysis_dg2d.jl
Original file line number Diff line number Diff line change
Expand Up @@ -286,8 +286,11 @@ function analyze(::Val{:l2_divb}, du, u, t,
dg, cache, derivative_matrix
divb = zero(eltype(u))
for k in eachnode(dg)
B1_kj, _, _ = magnetic_field(u[:, k, j, element], equations)
_, B2_ik, _ = magnetic_field(u[:, i, k, element], equations)
u_kj = get_node_vars(u, equations, dg, k, j, element)
u_ik = get_node_vars(u, equations, dg, i, k, element)

B1_kj, _, _ = magnetic_field(u_kj, equations)
_, B2_ik, _ = magnetic_field(u_ik, equations)

divb += (derivative_matrix[i, k] * B1_kj +
derivative_matrix[j, k] * B2_ik)
Expand All @@ -311,8 +314,11 @@ function analyze(::Val{:l2_divb}, du, u, t,
Ja21, Ja22 = get_contravariant_vector(2, contravariant_vectors, i, j, element)
# Compute the transformed divergence
for k in eachnode(dg)
B1_kj, B2_kj, _ = magnetic_field(u[:, k, j, element], equations)
B1_ik, B2_ik, _ = magnetic_field(u[:, i, k, element], equations)
u_kj = get_node_vars(u, equations, dg, k, j, element)
u_ik = get_node_vars(u, equations, dg, i, k, element)

B1_kj, B2_kj, _ = magnetic_field(u_kj, equations)
B1_ik, B2_ik, _ = magnetic_field(u_ik, equations)

divb += (derivative_matrix[i, k] *
(Ja11 * B1_kj + Ja12 * B2_kj) +
Expand All @@ -335,8 +341,11 @@ function analyze(::Val{:linf_divb}, du, u, t,
for j in eachnode(dg), i in eachnode(dg)
divb = zero(eltype(u))
for k in eachnode(dg)
B1_kj, _, _ = magnetic_field(u[:, k, j, element], equations)
_, B2_ik, _ = magnetic_field(u[:, i, k, element], equations)
u_kj = get_node_vars(u, equations, dg, k, j, element)
u_ik = get_node_vars(u, equations, dg, i, k, element)

B1_kj, _, _ = magnetic_field(u_kj, equations)
_, B2_ik, _ = magnetic_field(u_ik, equations)

divb += (derivative_matrix[i, k] * B1_kj +
derivative_matrix[j, k] * B2_ik)
Expand Down Expand Up @@ -368,8 +377,11 @@ function analyze(::Val{:linf_divb}, du, u, t,
element)
# Compute the transformed divergence
for k in eachnode(dg)
B1_kj, B2_kj, _ = magnetic_field(u[:, k, j, element], equations)
B1_ik, B2_ik, _ = magnetic_field(u[:, i, k, element], equations)
u_kj = get_node_vars(u, equations, dg, k, j, element)
u_ik = get_node_vars(u, equations, dg, i, k, element)

B1_kj, B2_kj, _ = magnetic_field(u_kj, equations)
B1_ik, B2_ik, _ = magnetic_field(u_ik, equations)

divb += (derivative_matrix[i, k] *
(Ja11 * B1_kj + Ja12 * B2_kj) +
Expand Down
40 changes: 28 additions & 12 deletions src/callbacks_step/analysis_dg3d.jl
Original file line number Diff line number Diff line change
Expand Up @@ -315,9 +315,13 @@ function analyze(::Val{:l2_divb}, du, u, t,
dg, cache, derivative_matrix
divb = zero(eltype(u))
for l in eachnode(dg)
B_ljk = magnetic_field(u[:, l, j, k, element], equations)
B_ilk = magnetic_field(u[:, i, l, k, element], equations)
B_ijl = magnetic_field(u[:, i, j, l, element], equations)
u_ljk = get_node_vars(u, equations, dg, l, j, k, element)
u_ilk = get_node_vars(u, equations, dg, i, l, k, element)
u_ijl = get_node_vars(u, equations, dg, i, j, l, element)

B_ljk = magnetic_field(u_ljk, equations)
B_ilk = magnetic_field(u_ilk, equations)
B_ijl = magnetic_field(u_ijl, equations)

divb += (derivative_matrix[i, l] * B_ljk[1] +
derivative_matrix[j, l] * B_ilk[2] +
Expand Down Expand Up @@ -346,9 +350,13 @@ function analyze(::Val{:l2_divb}, du, u, t,
element)
# Compute the transformed divergence
for l in eachnode(dg)
B_ljk = magnetic_field(u[:, l, j, k, element], equations)
B_ilk = magnetic_field(u[:, i, l, k, element], equations)
B_ijl = magnetic_field(u[:, i, j, l, element], equations)
u_ljk = get_node_vars(u, equations, dg, l, j, k, element)
u_ilk = get_node_vars(u, equations, dg, i, l, k, element)
u_ijl = get_node_vars(u, equations, dg, i, j, l, element)

B_ljk = magnetic_field(u_ljk, equations)
B_ilk = magnetic_field(u_ilk, equations)
B_ijl = magnetic_field(u_ijl, equations)

divb += (derivative_matrix[i, l] *
(Ja11 * B_ljk[1] + Ja12 * B_ljk[2] + Ja13 * B_ljk[3]) +
Expand All @@ -373,9 +381,13 @@ function analyze(::Val{:linf_divb}, du, u, t,
for k in eachnode(dg), j in eachnode(dg), i in eachnode(dg)
divb = zero(eltype(u))
for l in eachnode(dg)
B_ljk = magnetic_field(u[:, l, j, k, element], equations)
B_ilk = magnetic_field(u[:, i, l, k, element], equations)
B_ijl = magnetic_field(u[:, i, j, l, element], equations)
u_ljk = get_node_vars(u, equations, dg, l, j, k, element)
u_ilk = get_node_vars(u, equations, dg, i, l, k, element)
u_ijl = get_node_vars(u, equations, dg, i, j, l, element)

B_ljk = magnetic_field(u_ljk, equations)
B_ilk = magnetic_field(u_ilk, equations)
B_ijl = magnetic_field(u_ijl, equations)

divb += (derivative_matrix[i, l] * B_ljk[1] +
derivative_matrix[j, l] * B_ilk[2] +
Expand Down Expand Up @@ -415,9 +427,13 @@ function analyze(::Val{:linf_divb}, du, u, t,
k, element)
# Compute the transformed divergence
for l in eachnode(dg)
B_ljk = magnetic_field(u[:, l, j, k, element], equations)
B_ilk = magnetic_field(u[:, i, l, k, element], equations)
B_ijl = magnetic_field(u[:, i, j, l, element], equations)
u_ljk = get_node_vars(u, equations, dg, l, j, k, element)
u_ilk = get_node_vars(u, equations, dg, i, l, k, element)
u_ijl = get_node_vars(u, equations, dg, i, j, l, element)

B_ljk = magnetic_field(u_ljk, equations)
B_ilk = magnetic_field(u_ilk, equations)
B_ijl = magnetic_field(u_ijl, equations)

divb += (derivative_matrix[i, l] * (Ja11 * B_ljk[1] +
Ja12 * B_ljk[2] + Ja13 * B_ljk[3]) +
Expand Down

0 comments on commit c548d32

Please sign in to comment.