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

Distribute mesh divisions over positions to grid up the space #26223

Open
GiudGiud opened this issue Dec 2, 2023 · 0 comments
Open

Distribute mesh divisions over positions to grid up the space #26223

GiudGiud opened this issue Dec 2, 2023 · 0 comments
Labels
C: Framework T: task An enhancement to the software.

Comments

@GiudGiud
Copy link
Contributor

GiudGiud commented Dec 2, 2023

Reason

Right now we can do nested lattices using extra element ids.
Assembly_id to know which assembly we're in, pin_id to know the pin (etc for sector & axial divisions). This works nice when creating the mesh and it is very resilient to the mesh displacement as the extra Ids remain attached the displaced elements.

However, it does not really:

  • give a clean way to know how many bins there are, which is useful for postprocessing or transfers (mapping between indexes and subapps for example). The only way to know is for every object to query the unique combination of extraIDs from the MooseMeshUtils.
  • give a clean way to output which bin index is where in the mesh
  • work for geometries that were meshed outside of MOOSE and may not have the extra element IDs. Adding extra IDs is possible in MOOSE, there are a few MGs that can do it.
  • give a way to grid up the space outside of the app. For example, if we have a single assembly calculation and we want to know what the index of the assembly on each side of it would be, we would need the mesh there to be able to read them. This is useful if using a mesh division encompassing all subapps instead of just the subapp domain in transfers + mesh_divisions
  • work with nodal EIDs. Nodal EIDs are way less supports than EEIDs and yet we would need the same amount of support to be able to flip effortlessly between one and the other in transfers

An alternative way to do this would be to generate Positions (either from the EEIDs (centroids of groups of EEIDs for example), or from a file, or using a known grid) then distribute local lattices (Cartesian, Hex, ...) using mesh divisions.

This is also fairly resilient to mesh displacement (the center moves, but the sub-bins cannot deform too much!). It has the advantage of being contiguously numbered and also have a known number of pins. We also can output the mesh divison to exodus using a MeshDivisionAux. It does all the other things.

Design

Distributing mesh divisions with a simple positions object for the center of the local grids.
In Cartesian, Hex, Spherical, CylindricalGridPositions object

Impact

Options for modeling. Easier postprocessing

@GiudGiud GiudGiud added C: Framework T: task An enhancement to the software. labels Dec 2, 2023
GiudGiud added a commit to GiudGiud/moose that referenced this issue Mar 4, 2024
changing: spherical, cylindrical, cartesian, hexagonal divisions
refs idaholab#26223

Also only output a warning for positions being too close, it's not always
relevant as cell centroids can still be well within the uniquely defined divisions
refs idaholab#25901
schakrabortygithub pushed a commit to schakrabortygithub/moose that referenced this issue Mar 12, 2024
changing: spherical, cylindrical, cartesian, hexagonal divisions
refs idaholab#26223

Also only output a warning for positions being too close, it's not always
relevant as cell centroids can still be well within the uniquely defined divisions
refs idaholab#25901
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
C: Framework T: task An enhancement to the software.
Projects
None yet
Development

No branches or pull requests

1 participant