Skip to content

Commit

Permalink
Use get_node_vars for divB analysis rutines (trixi-framework#2193)
Browse files Browse the repository at this point in the history
* Use get_node_vars for divB analysis rutines of TreeMesh{3}

* Use get_node_vars for divB analysis rutines of remaining mesh types
  • Loading branch information
amrueda authored Dec 6, 2024
1 parent a255fc0 commit 60d5c32
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 20 deletions.
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 60d5c32

Please sign in to comment.