Trixi.jl icon indicating copy to clipboard operation
Trixi.jl copied to clipboard

Unify signatures of mesh constructors

Open ranocha opened this issue 2 years ago • 3 comments

It may be nice to unify the signatures of some mesh constructors or provide additional convenience constructors. This can be nice when testing different meshes, e.g., for #1191. Right now, we have

julia> TreeMesh(

TreeMesh(coordinates_min::Real, coordinates_max::Real; kwargs...) in Trixi at /home/hendrik/.julia/dev/Trixi/src/meshes/tree_mesh.jl:161
TreeMesh(coordinates_min::Tuple{Vararg{Real, NDIMS}}, coordinates_max::Tuple{Vararg{Real, NDIMS}}; n_cells_max, periodicity, initial_refinement_level, refinement_patches, coarsening_patches) where NDIMS in Trixi at /home/hendrik/.julia/dev/Trixi/src/meshes/tree_mesh.jl:93
TreeMesh(::Type{TreeType}, args...) where {NDIMS, TreeType<:Trixi.AbstractTree{NDIMS}} in Trixi at /home/hendrik/.julia/dev/Trixi/src/meshes/tree_mesh.jl:80

julia> StructuredMesh(

StructuredMesh(cells_per_dimension, faces::Tuple; RealT, periodicity) in Trixi at /home/hendrik/.julia/dev/Trixi/src/meshes/structured_mesh.jl:86
StructuredMesh(cells_per_dimension, mapping; RealT, periodicity, unsaved_changes, mapping_as_string) in Trixi at /home/hendrik/.julia/dev/Trixi/src/meshes/structured_mesh.jl:47
StructuredMesh(cells_per_dimension, coordinates_min, coordinates_max; periodicity) in Trixi at /home/hendrik/.julia/dev/Trixi/src/meshes/structured_mesh.jl:120

julia> P4estMesh(

P4estMesh(trees_per_dimension; polydeg, mapping, faces, coordinates_min, coordinates_max, RealT, initial_refinement_level, periodicity, unsaved_changes) in Trixi at /home/hendrik/.julia/dev/Trixi/src/meshes/p4est_mesh.jl:146

For example, it wold be nice to just replace TreeMesh by StructuredMesh or P4estMesh and get something that just works.

ranocha avatar Aug 08 '22 09:08 ranocha

Bumping to add that we should do the same for DGMultiMesh constructors. For example, cells_per_dimension is a keyword argument here

    DGMultiMesh(dg::DGMulti; cells_per_dimension,
                coordinates_min=(-1.0, -1.0), coordinates_max=(1.0, 1.0),
                is_on_boundary=nothing,
                periodicity=ntuple(_ -> false, NDIMS))

but not for the StructuredMesh equivalent

    DGMultiMesh(dg::DGMulti{NDIMS}, cells_per_dimension, mapping;
                is_on_boundary=nothing,
                periodicity=ntuple(_ -> false, NDIMS), kwargs...) where {NDIMS}

jlchan avatar Apr 06 '23 08:04 jlchan

Yes, it would definitely be great to unify these :+1:

ranocha avatar Apr 06 '23 10:04 ranocha

I agree, I also do not like that for P4est meshes we explicitly supply the dimensionality as a type (not sure if this is the correct Julian term), i.e., P4estMesh{2} while for TreeMesh, StructuredMesh and DGMultiMesh the dimensionality is inferred from the arguments while again for the unstructured 2d mesh the constructor reads UnstructuredMesh2D.

DanielDoehring avatar Jan 14 '24 12:01 DanielDoehring