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

Add neighboring node indices to dual layouts in Draco_Mesh #1078

Merged
merged 4 commits into from
Jun 30, 2021

Conversation

RyanWollaeger
Copy link
Contributor

@RyanWollaeger RyanWollaeger commented Jun 30, 2021

Background

  • There are instances where a dual mesh layout is useful, for instance reconstruction on stencils.
  • Both neighboring node and cell data is generally needed for each node.
  • The current Dual_Layout in Draco_Mesh can only access cell indices from each node.

Purpose of Pull Request

  • Add a node-node connectivity node-centered Dual_Layout type in the Draco_Mesh class.
  • For Draco_Mesh, with the changes here, the data access pattern of Dual_Layout is:
    • node index n -> cell index c -> vector of node indices adjacent to n and c.
  • Concerns Redmine Issue #2457

Description of changes

  • Include pairing of a set of nodes to cells in dual layout types.
  • Put neighbor nodes into layouts, in compute_node_to_cell_linkage.
  • Update serial unit test tstDraco_Mesh to reflect new dual layout.
  • Test new data on simple decomposed meshes in tstDraco_Mesh_DD.
  • Fix or update some comments.

Notes:

  • This forms a complete but rudimentary dual mesh layout.
  • 3D topology will require a different routine (possibly 3
    neighboring nodes per cell for cells neighboring the node).
  • MPI for ghost layouts only sends node data for nodes on
    processor bounds, but this is still an allgatherv operation.

Status

+ Include pairing of a set of nodes to cells in dual layout types.
+ Put neighbor nodes into layouts, in compute_node_to_cell_linkage.
+ Update serial unit test tstDraco_Mesh to reflect new dual layout.
+ Test new data on simple decomposed meshes in tstDraco_Mesh_DD.
+ Fix some comments.

Notes:
- This forms a full but rudimentary dual mesh layout.
- 3D topology will require a different routine (possibly 3
  neighboring nodes per cell for cells neighboring the node).
- MPI for ghost layouts only sends node data for nodes on
  processor bounds, but this is still an allgatherv operation.
@RyanWollaeger RyanWollaeger self-assigned this Jun 30, 2021
@RyanWollaeger
Copy link
Contributor Author

This requires one more modification to get the coordinate values for off-rank nodes neighboring rank-boundary nodes, which should follow the logic of the neighbor node index addition.

@KineticTheory
Copy link
Collaborator

KineticTheory commented Jun 30, 2021

@RyanWollaeger You need #include <array> at the top of Draco_Mesh.hh to make LLVM and MSVC happy.

@RyanWollaeger
Copy link
Contributor Author

@KineticTheory Thank you for catching this - it has gotten me before!

@codecov
Copy link

codecov bot commented Jun 30, 2021

Codecov Report

Merging #1078 (b14875d) into develop (05cffd6) will increase coverage by 0.0%.
The diff coverage is 100.0%.

@@           Coverage Diff           @@
##           develop   #1078   +/-   ##
=======================================
  Coverage     88.6%   88.6%           
=======================================
  Files          374     374           
  Lines        18577   18579    +2     
=======================================
+ Hits         16477   16479    +2     
  Misses        2100    2100           

Copy link
Collaborator

@KineticTheory KineticTheory left a comment

Choose a reason for hiding this comment

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

LGTM

@KineticTheory KineticTheory merged commit 560993e into lanl:develop Jun 30, 2021
@KineticTheory KineticTheory changed the title WIP: Add neighboring node indices to dual layouts in Draco_Mesh Add neighboring node indices to dual layouts in Draco_Mesh Jun 30, 2021
@RyanWollaeger
Copy link
Contributor Author

Thank you @KineticTheory!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants