Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

T8codeMesh: Switching to t8_cmesh_new_brick_{2,3}d. #1939

Merged
merged 11 commits into from
Nov 5, 2024
2 changes: 1 addition & 1 deletion Project.toml
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ StaticArrays = "1.5"
StrideArrays = "0.1.26"
StructArrays = "0.6.11"
SummationByPartsOperators = "0.5.41"
T8code = "0.5"
T8code = "0.7"
TimerOutputs = "0.5.7"
Triangulate = "2.2"
TriplotBase = "0.1"
Expand Down
16 changes: 6 additions & 10 deletions src/meshes/t8code_mesh.jl
Original file line number Diff line number Diff line change
Expand Up @@ -295,15 +295,11 @@ function T8codeMesh(trees_per_dimension; polydeg = 1,

do_partition = 0
if NDIMS == 2
conn = T8code.Libt8.p4est_connectivity_new_brick(trees_per_dimension...,
periodicity...)
cmesh = t8_cmesh_new_from_p4est(conn, mpi_comm(), do_partition)
T8code.Libt8.p4est_connectivity_destroy(conn)
cmesh = t8_cmesh_new_brick_2d(trees_per_dimension..., periodicity...,
sc_MPI_COMM_WORLD)
elseif NDIMS == 3
conn = T8code.Libt8.p8est_connectivity_new_brick(trees_per_dimension...,
periodicity...)
cmesh = t8_cmesh_new_from_p8est(conn, mpi_comm(), do_partition)
T8code.Libt8.p8est_connectivity_destroy(conn)
cmesh = t8_cmesh_new_brick_3d(trees_per_dimension..., periodicity...,
sc_MPI_COMM_WORLD)
end

do_face_ghost = mpi_isparallel()
Expand Down Expand Up @@ -333,7 +329,7 @@ function T8codeMesh(trees_per_dimension; polydeg = 1,
end
end

# Note, `p*est_connectivity_new_brick` converts a domain of `[0,nx] x [0,ny] x ....`.
# Note, `t8_cmesh_new_brick_*d` converts a domain of `[0,nx] x [0,ny] x ....`.
# Hence, transform mesh coordinates to reference space [-1,1]^NDIMS before applying user defined mapping.
mapping_(xyz...) = mapping((x * 2.0 / tpd - 1.0 for (x, tpd) in zip(xyz,
trees_per_dimension))...)
Expand Down Expand Up @@ -368,7 +364,7 @@ function T8codeMesh(cmesh::Ptr{t8_cmesh};
@assert (t8_cmesh_get_num_trees(cmesh)>0) "Given `cmesh` does not contain any trees."

# Infer NDIMS from the geometry of the first tree.
NDIMS = Int(t8_geom_get_dimension(t8_cmesh_get_tree_geometry(cmesh, 0)))
NDIMS = Int(t8_cmesh_get_dimension(cmesh))

@assert (NDIMS == 2||NDIMS == 3) "NDIMS should be 2 or 3."

Expand Down
6 changes: 5 additions & 1 deletion test/test_t8code_2d.jl
Original file line number Diff line number Diff line change
Expand Up @@ -39,14 +39,17 @@ end
end

@trixi_testset "test check_for_negative_volumes" begin
@test_throws "Discovered negative volumes" begin
# test is currently broken as t8code applies a correction on the fly
# @test_throws "Discovered negative volumes" begin
@test begin
Comment on lines +42 to +44
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It looks like this is not broken anymore, correct? Could you please fix the comment?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jmark @benegee You can do that in one of your new PRs working on T8code stuff in Trixi.jl

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The story behind this is a bit more involved. We will elaborate the comment a bit more.

# Unstructured mesh with six cells which have left-handed node ordering.
mesh_file = Trixi.download("https://gist.githubusercontent.com/jmark/bfe0d45f8e369298d6cc637733819013/raw/cecf86edecc736e8b3e06e354c494b2052d41f7a/rectangle_with_negative_volumes.msh",
joinpath(EXAMPLES_DIR,
"rectangle_with_negative_volumes.msh"))

# This call should throw a warning about negative volumes detected.
mesh = T8codeMesh(mesh_file, 2)
true
end
end

Expand All @@ -57,6 +60,7 @@ end
# actually is `Ptr{P4est.LibP4est.p4est_connectivity}`.
conn = Trixi.P4est.LibP4est.p4est_connectivity_new_brick(2, 3, 1, 1)
mesh = T8codeMesh(conn)
Trixi.p4est_connectivity_destroy(conn)
all(size(mesh.tree_node_coordinates) .== (2, 2, 2, 6))
end
end
Expand Down
1 change: 1 addition & 0 deletions test/test_t8code_3d.jl
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ mkdir(outdir)
# actually is `Ptr{P4est.LibP4est.p8est_connectivity}`.
conn = Trixi.P4est.LibP4est.p8est_connectivity_new_brick(2, 3, 4, 1, 1, 1)
mesh = T8codeMesh(conn)
Trixi.p8est_connectivity_destroy(conn)
all(size(mesh.tree_node_coordinates) .== (3, 2, 2, 2, 24))
end
end
Expand Down
Loading