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

Mixed topology #2597

Merged
merged 93 commits into from
Mar 31, 2023
Merged

Mixed topology #2597

merged 93 commits into from
Mar 31, 2023

Conversation

chrisrichardson
Copy link
Contributor

This adds some rudimentary support for mixed topology/geometry.
At present, much of the functionality is at the 'stub' level, i.e. replacing: CellType, ElementDofLayout and CoordinateElement with lists instead of a single value for a Mesh.
The main new feature is the entity_group_offsets which defines the blocks of entities (i.e. cells or facets) which exist.

Cells are kept in blocks in the topology, e.g. triangles, then quads, followed by ghost triangles and ghost quads. The offsets point to the start/end point of each block.

@chrisrichardson
Copy link
Contributor Author

I've pushed this branch up as a PR because there are a lot of changes, and I don't want to lose them. Mostly, the changes are just related to changing "unique" to "list" for mesh properties (celltype, elementdoflayout etc.)

@chrisrichardson chrisrichardson marked this pull request as ready for review March 25, 2023 10:24
cpp/dolfinx/fem/Function.h Show resolved Hide resolved
cpp/dolfinx/fem/FunctionSpace.cpp Outdated Show resolved Hide resolved
cpp/demo/hyperelasticity/main.cpp Show resolved Hide resolved
cpp/demo/mixed_topology/main.cpp Show resolved Hide resolved
cpp/demo/mixed_topology/main.cpp Show resolved Hide resolved
cpp/dolfinx/fem/dofmapbuilder.cpp Show resolved Hide resolved
cpp/dolfinx/fem/dofmapbuilder.cpp Show resolved Hide resolved
cpp/dolfinx/io/vtk_utils.cpp Outdated Show resolved Hide resolved
cpp/dolfinx/io/xdmf_utils.cpp Show resolved Hide resolved
cpp/dolfinx/io/xdmf_utils.cpp Show resolved Hide resolved
@chrisrichardson chrisrichardson added the enhancement New feature or request label Mar 31, 2023
@garth-wells garth-wells added this pull request to the merge queue Mar 31, 2023
auto cell_types = mesh->topology().cell_types();
if (cell_types.size() > 1)
{
throw std::runtime_error("MUltiple cell types in the assembler");
Copy link
Sponsor Member

Choose a reason for hiding this comment

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

Suggested change
throw std::runtime_error("MUltiple cell types in the assembler");
throw std::runtime_error("Multiple cell types in the assembler");

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants