Mundy: Multibody Nonlocal Dynamics Version of the Day
Loading...
Searching...
No Matches
mundy::mesh::NgpLinkDataT< NgpMemSpace > Class Template Reference

#include <NgpLinkData.hpp>

Inheritance diagram for mundy::mesh::NgpLinkDataT< NgpMemSpace >:
[legend]

Public Member Functions

Constructors and destructor
 NgpLinkDataT ()=default
 Default constructor.
 NgpLinkDataT (const NgpLinkDataT &)=default
 Default copy or move constructors/operators.
 NgpLinkDataT (NgpLinkDataT &&)=default
NgpLinkDataToperator= (const NgpLinkDataT &)=default
NgpLinkDataToperator= (NgpLinkDataT &&)=default
 NgpLinkDataT (const LinkData &link_data)
 Canonical constructor.
virtual ~NgpLinkDataT ()=default
 Destructor.
Getters
bool is_valid () const
 Get if the link data is valid.
const stk::mesh::MetaDatamesh_meta_data () const
 Fetch the bulk data's meta data manager.
stk::mesh::MetaDatamesh_meta_data ()
 Fetch the bulk data's meta data manager.
const LinkMetaDatalink_meta_data () const
 Fetch the link meta data manager.
LinkMetaDatalink_meta_data ()
 Fetch the link meta data manager.
const stk::mesh::BulkDatabulk_data () const
 Fetch the bulk data manager we extend.
stk::mesh::BulkDatabulk_data ()
 Fetch the bulk data manager we extend.
LinkDatalink_data ()
 Fetch our link data on the host.
const LinkDatalink_data () const
stk::mesh::EntityRank link_rank () const noexcept
 Fetch the link rank.
const stk::mesh::NgpMesh & ngp_mesh () const noexcept
 Fetch the ngp mesh.
stk::mesh::NgpMesh & ngp_mesh () noexcept
CSR interface
NgpLinkCSRDataT< NgpMemSpace > & crs_data () noexcept
const NgpLinkCSRDataT< NgpMemSpace > & crs_data () const noexcept
void crs_modify_on_host ()
void crs_modify_on_device ()
bool crs_need_sync_to_host () const
bool crs_need_sync_to_device () const
void crs_sync_to_host ()
void crs_sync_to_device ()
void crs_clear_host_sync_state ()
void crs_clear_device_sync_state ()
COO interface
NgpLinkCOODataT< NgpMemSpace > & coo_data () noexcept
const NgpLinkCOODataT< NgpMemSpace > & coo_data () const noexcept
void coo_modify_on_host ()
void coo_modify_on_device ()
bool coo_need_sync_to_host () const
bool coo_need_sync_to_device () const
void coo_sync_to_host ()
void coo_sync_to_device ()
void coo_clear_host_sync_state ()
void coo_clear_device_sync_state ()
CSR/COO interactions
bool is_crs_up_to_date (const stk::mesh::Selector &selector)
 Check if the CSR connectivity is up-to-date for the given link subset selector.
bool is_crs_up_to_date ()
 Check if the CSR connectivity is up-to-date for all links.
void update_crs_from_coo (const stk::mesh::Selector &selector)
 Propagate changes made to the COO connectivity to the CSR connectivity for the given link subset selector. This takes changes made via the declare/destroy_relation functions or request/destroy links and updates the CSR connectivity to reflect these changes.
void update_crs_from_coo ()
 Propagate changes made to the COO connectivity to the CSR connectivity.
void check_crs_coo_consistency (const stk::mesh::Selector &selector)
 Check consistency between the COO and CSR connectivity for the given selector.
void check_crs_coo_consistency ()
 Check consistency between the COO and CSR connectivity for all links.
void update_post_mesh_mod ()
 Rectify potentially stale data post-mesh modification.

Declaration/destruction requests

void process_requests (bool assume_fully_consistent=false)
 Process all requests for creation/destruction made since the last process_requests call.

Constructor & Destructor Documentation

◆ NgpLinkDataT() [1/4]

template<typename NgpMemSpace>
mundy::mesh::NgpLinkDataT< NgpMemSpace >::NgpLinkDataT ( )
default

◆ NgpLinkDataT() [2/4]

template<typename NgpMemSpace>
mundy::mesh::NgpLinkDataT< NgpMemSpace >::NgpLinkDataT ( const NgpLinkDataT< NgpMemSpace > & )
default

◆ NgpLinkDataT() [3/4]

template<typename NgpMemSpace>
mundy::mesh::NgpLinkDataT< NgpMemSpace >::NgpLinkDataT ( NgpLinkDataT< NgpMemSpace > && )
default

◆ NgpLinkDataT() [4/4]

template<typename NgpMemSpace>
mundy::mesh::NgpLinkDataT< NgpMemSpace >::NgpLinkDataT ( const LinkData & link_data)
inlineexplicit
Parameters
link_dataThe host link data to mirror in the given memory space.

◆ ~NgpLinkDataT()

template<typename NgpMemSpace>
virtual mundy::mesh::NgpLinkDataT< NgpMemSpace >::~NgpLinkDataT ( )
virtualdefault

Member Function Documentation

◆ operator=() [1/2]

template<typename NgpMemSpace>
NgpLinkDataT & mundy::mesh::NgpLinkDataT< NgpMemSpace >::operator= ( const NgpLinkDataT< NgpMemSpace > & )
default

◆ operator=() [2/2]

template<typename NgpMemSpace>
NgpLinkDataT & mundy::mesh::NgpLinkDataT< NgpMemSpace >::operator= ( NgpLinkDataT< NgpMemSpace > && )
default

◆ is_valid()

template<typename NgpMemSpace>
bool mundy::mesh::NgpLinkDataT< NgpMemSpace >::is_valid ( ) const
inline

◆ mesh_meta_data() [1/2]

template<typename NgpMemSpace>
const stk::mesh::MetaData & mundy::mesh::NgpLinkDataT< NgpMemSpace >::mesh_meta_data ( ) const
inline

◆ mesh_meta_data() [2/2]

template<typename NgpMemSpace>
stk::mesh::MetaData & mundy::mesh::NgpLinkDataT< NgpMemSpace >::mesh_meta_data ( )
inline

◆ link_meta_data() [1/2]

template<typename NgpMemSpace>
const LinkMetaData & mundy::mesh::NgpLinkDataT< NgpMemSpace >::link_meta_data ( ) const
inline

◆ link_meta_data() [2/2]

template<typename NgpMemSpace>
LinkMetaData & mundy::mesh::NgpLinkDataT< NgpMemSpace >::link_meta_data ( )
inline

◆ bulk_data() [1/2]

template<typename NgpMemSpace>
const stk::mesh::BulkData & mundy::mesh::NgpLinkDataT< NgpMemSpace >::bulk_data ( ) const
inline

◆ bulk_data() [2/2]

template<typename NgpMemSpace>
stk::mesh::BulkData & mundy::mesh::NgpLinkDataT< NgpMemSpace >::bulk_data ( )
inline

◆ link_data() [1/2]

template<typename NgpMemSpace>
LinkData & mundy::mesh::NgpLinkDataT< NgpMemSpace >::link_data ( )
inline

◆ link_data() [2/2]

template<typename NgpMemSpace>
const LinkData & mundy::mesh::NgpLinkDataT< NgpMemSpace >::link_data ( ) const
inline

◆ link_rank()

template<typename NgpMemSpace>
stk::mesh::EntityRank mundy::mesh::NgpLinkDataT< NgpMemSpace >::link_rank ( ) const
inlinenoexcept

◆ ngp_mesh() [1/2]

template<typename NgpMemSpace>
const stk::mesh::NgpMesh & mundy::mesh::NgpLinkDataT< NgpMemSpace >::ngp_mesh ( ) const
inlinenoexcept

◆ ngp_mesh() [2/2]

template<typename NgpMemSpace>
stk::mesh::NgpMesh & mundy::mesh::NgpLinkDataT< NgpMemSpace >::ngp_mesh ( )
inlinenoexcept

◆ crs_data() [1/2]

template<typename NgpMemSpace>
NgpLinkCSRDataT< NgpMemSpace > & mundy::mesh::NgpLinkDataT< NgpMemSpace >::crs_data ( )
inlinenoexcept

◆ crs_data() [2/2]

template<typename NgpMemSpace>
const NgpLinkCSRDataT< NgpMemSpace > & mundy::mesh::NgpLinkDataT< NgpMemSpace >::crs_data ( ) const
inlinenoexcept

◆ crs_modify_on_host()

template<typename NgpMemSpace>
void mundy::mesh::NgpLinkDataT< NgpMemSpace >::crs_modify_on_host ( )
inline

◆ crs_modify_on_device()

template<typename NgpMemSpace>
void mundy::mesh::NgpLinkDataT< NgpMemSpace >::crs_modify_on_device ( )
inline

◆ crs_need_sync_to_host()

template<typename NgpMemSpace>
bool mundy::mesh::NgpLinkDataT< NgpMemSpace >::crs_need_sync_to_host ( ) const
inline

◆ crs_need_sync_to_device()

template<typename NgpMemSpace>
bool mundy::mesh::NgpLinkDataT< NgpMemSpace >::crs_need_sync_to_device ( ) const
inline

◆ crs_sync_to_host()

template<typename NgpMemSpace>
void mundy::mesh::NgpLinkDataT< NgpMemSpace >::crs_sync_to_host ( )
inline

◆ crs_sync_to_device()

template<typename NgpMemSpace>
void mundy::mesh::NgpLinkDataT< NgpMemSpace >::crs_sync_to_device ( )
inline

◆ crs_clear_host_sync_state()

template<typename NgpMemSpace>
void mundy::mesh::NgpLinkDataT< NgpMemSpace >::crs_clear_host_sync_state ( )
inline

◆ crs_clear_device_sync_state()

template<typename NgpMemSpace>
void mundy::mesh::NgpLinkDataT< NgpMemSpace >::crs_clear_device_sync_state ( )
inline

◆ coo_data() [1/2]

template<typename NgpMemSpace>
NgpLinkCOODataT< NgpMemSpace > & mundy::mesh::NgpLinkDataT< NgpMemSpace >::coo_data ( )
inlinenoexcept

◆ coo_data() [2/2]

template<typename NgpMemSpace>
const NgpLinkCOODataT< NgpMemSpace > & mundy::mesh::NgpLinkDataT< NgpMemSpace >::coo_data ( ) const
inlinenoexcept

◆ coo_modify_on_host()

template<typename NgpMemSpace>
void mundy::mesh::NgpLinkDataT< NgpMemSpace >::coo_modify_on_host ( )
inline

◆ coo_modify_on_device()

template<typename NgpMemSpace>
void mundy::mesh::NgpLinkDataT< NgpMemSpace >::coo_modify_on_device ( )
inline

◆ coo_need_sync_to_host()

template<typename NgpMemSpace>
bool mundy::mesh::NgpLinkDataT< NgpMemSpace >::coo_need_sync_to_host ( ) const
inline

◆ coo_need_sync_to_device()

template<typename NgpMemSpace>
bool mundy::mesh::NgpLinkDataT< NgpMemSpace >::coo_need_sync_to_device ( ) const
inline

◆ coo_sync_to_host()

template<typename NgpMemSpace>
void mundy::mesh::NgpLinkDataT< NgpMemSpace >::coo_sync_to_host ( )
inline

◆ coo_sync_to_device()

template<typename NgpMemSpace>
void mundy::mesh::NgpLinkDataT< NgpMemSpace >::coo_sync_to_device ( )
inline

◆ coo_clear_host_sync_state()

template<typename NgpMemSpace>
void mundy::mesh::NgpLinkDataT< NgpMemSpace >::coo_clear_host_sync_state ( )
inline

◆ coo_clear_device_sync_state()

template<typename NgpMemSpace>
void mundy::mesh::NgpLinkDataT< NgpMemSpace >::coo_clear_device_sync_state ( )
inline

◆ is_crs_up_to_date() [1/2]

template<typename NgpMemSpace>
bool mundy::mesh::NgpLinkDataT< NgpMemSpace >::is_crs_up_to_date ( const stk::mesh::Selector & selector)
inline
Note
This check is more than just a lookup of a flag. Instead, it performs two operations
  1. A reduction over all selected partitions to check if any of the CSR buckets are dirty.
  2. A reduction over all selected links to check if any of the links are dirty. These aren't expensive operations and they're designed to be fast/GPU-compatible, but they aren't free.

◆ is_crs_up_to_date() [2/2]

template<typename NgpMemSpace>
bool mundy::mesh::NgpLinkDataT< NgpMemSpace >::is_crs_up_to_date ( )
inline

◆ update_crs_from_coo() [1/2]

template<typename NgpMemSpace>
void mundy::mesh::NgpLinkDataT< NgpMemSpace >::update_crs_from_coo ( const stk::mesh::Selector & selector)
inline

◆ update_crs_from_coo() [2/2]

template<typename NgpMemSpace>
void mundy::mesh::NgpLinkDataT< NgpMemSpace >::update_crs_from_coo ( )
inline

◆ check_crs_coo_consistency() [1/2]

template<typename NgpMemSpace>
void mundy::mesh::NgpLinkDataT< NgpMemSpace >::check_crs_coo_consistency ( const stk::mesh::Selector & selector)
inline

Relatively expensive check that verifies COO -> CSR and CSR -> COO consistency.

Note
The checks performed in this function are performed even in RELEASE mode.

◆ check_crs_coo_consistency() [2/2]

template<typename NgpMemSpace>
void mundy::mesh::NgpLinkDataT< NgpMemSpace >::check_crs_coo_consistency ( )
inline

◆ update_post_mesh_mod()

template<typename NgpMemSpace>
void mundy::mesh::NgpLinkDataT< NgpMemSpace >::update_post_mesh_mod ( )
inline

◆ process_requests()

template<typename NgpMemSpace>
void mundy::mesh::NgpLinkDataT< NgpMemSpace >::process_requests ( bool assume_fully_consistent = false)
inline

Note, on a single process or if the entities you wish to link are all of element rank or higher, then partial consistency is the same as full consistency.

If the global number of requests is non-zero, this function will enter a modification cycle if not already in one.

Parameters
assume_fully_consistent[in] If we should assume that the requests are fully consistent or not.