This object will mark nodes or elements of continuous regions all with a unique number for the purpose of counting or "coloring" unique regions in a solution. More...
#include <FeatureFloodCount.h>
Classes | |
class | FeatureData |
Public Types | |
enum | FieldType { FieldType::UNIQUE_REGION, FieldType::VARIABLE_COLORING, FieldType::GHOSTED_ENTITIES, FieldType::HALOS, FieldType::CENTROID, FieldType::ACTIVE_BOUNDS } |
enum | Status : unsigned char { Status::CLEAR = 0x0, Status::MARKED = 0x1, Status::DIRTY = 0x2, Status::INACTIVE = 0x4 } |
This enumeration is used to indicate status of the grains in the _unique_grains data structure. More... | |
enum | BoundaryIntersection : unsigned char { BoundaryIntersection::NONE = 0x0, BoundaryIntersection::ANY_BOUNDARY = 0x1, BoundaryIntersection::PRIMARY_PERCOLATION_BOUNDARY = 0x2, BoundaryIntersection::SECONDARY_PERCOLATION_BOUNDARY = 0x4, BoundaryIntersection::SPECIFIED_BOUNDARY = 0x8 } |
This enumeration is used to inidacate status of boundary intersections. More... | |
Public Member Functions | |
FeatureFloodCount (const InputParameters ¶meters) | |
virtual void | initialSetup () override |
virtual void | meshChanged () override |
virtual void | initialize () override |
virtual void | execute () override |
virtual void | finalize () override |
virtual Real | getValue () override |
std::size_t | getNumberActiveFeatures () const |
Return the number of active features. More... | |
virtual std::size_t | getTotalFeatureCount () const |
Returns the total feature count (active and inactive ids, useful for sizing vectors) More... | |
virtual bool | doesFeatureIntersectBoundary (unsigned int feature_id) const |
Returns a Boolean indicating whether this feature intersects any boundary. More... | |
virtual bool | doesFeatureIntersectSpecifiedBoundary (unsigned int feature_id) const |
Returns a Boolean indicating whether this feature intersects boundaries in a user-supplied list. More... | |
virtual bool | isFeaturePercolated (unsigned int feature_id) const |
Returns a Boolean indicating whether this feature is percolated (e.g. More... | |
virtual Point | featureCentroid (unsigned int feature_id) const |
Returns the centroid of the designated feature (only supported without periodic boundaries) More... | |
virtual const std::vector< unsigned int > & | getVarToFeatureVector (dof_id_type elem_id) const |
Returns a list of active unique feature ids for a particular element. More... | |
virtual unsigned int | getFeatureVar (unsigned int feature_id) const |
Returns the variable representing the passed in feature. More... | |
std::size_t | numCoupledVars () const |
Returns the number of coupled varaibles. More... | |
const std::vector< MooseVariable * > & | getCoupledVars () const |
Returns a const vector to the coupled variable pointers. More... | |
const std::vector< MooseVariableFEBase * > & | getFECoupledVars () const |
Returns a const vector to the coupled MooseVariableFEBase pointers. More... | |
virtual Real | getEntityValue (dof_id_type entity_id, FieldType field_type, std::size_t var_index=0) const |
bool | isElemental () const |
const std::vector< FeatureData > & | getFeatures () const |
Return a constant reference to the vector of all discovered features. More... | |
Static Public Attributes | |
static const std::size_t | invalid_size_t = std::numeric_limits<std::size_t>::max() |
static const unsigned int | invalid_id = std::numeric_limits<unsigned int>::max() |
Protected Member Functions | |
template<typename T > | |
bool | isBoundaryEntity (const T *entity) const |
Returns a Boolean indicating whether the entity is on one of the desired boundaries. More... | |
virtual void | updateFieldInfo () |
This method is used to populate any of the data structures used for storing field data (nodal or elemental). More... | |
bool | flood (const DofObject *dof_object, std::size_t current_index) |
This method will check if the current entity is above the supplied threshold and "mark" it. More... | |
virtual Real | getThreshold (std::size_t current_index) const |
Return the starting comparison threshold to use when inspecting an entity during the flood stage. More... | |
virtual Real | getConnectingThreshold (std::size_t current_index) const |
Return the "connecting" comparison threshold to use when inspecting an entity during the flood stage. More... | |
bool | compareValueWithThreshold (Real entity_value, Real threshold) const |
This method is used to determine whether the current entity value is part of a feature or not. More... | |
virtual bool | isNewFeatureOrConnectedRegion (const DofObject *dof_object, std::size_t ¤t_index, FeatureData *&feature, Status &status, unsigned int &new_id) |
Method called during the recursive flood routine that should return whether or not the current entity is part of the current feature (if one is being explored), or if it's the start of a new feature. More... | |
void | expandPointHalos () |
This method takes all of the partial features and expands the local, ghosted, and halo sets around those regions to account for the diffuse interface. More... | |
void | expandEdgeHalos (unsigned int num_layers_to_expand) |
This method expands the existing halo set by some width determined by the passed in value. More... | |
template<typename T > | |
void | visitNeighborsHelper (const T *curr_entity, std::vector< const T * > neighbor_entities, FeatureData *feature, bool expand_halos_only, bool topological_neighbor, bool disjoint_only) |
The actual logic for visiting neighbors is abstracted out here. More... | |
void | prepareDataForTransfer () |
This routine uses the local flooded data to build up the local feature data structures (_feature_sets). More... | |
void | serialize (std::string &serialized_buffer, unsigned int var_num=invalid_id) |
This routines packs the _partial_feature_sets data into a structure suitable for parallel communication operations. More... | |
void | deserialize (std::vector< std::string > &serialized_buffers, unsigned int var_num=invalid_id) |
This routine takes the vector of byte buffers (one for each processor), deserializes them into a series of FeatureSet objects, and appends them to the _feature_sets data structure. More... | |
virtual void | mergeSets () |
This routine is called on the master rank only and stitches together the partial feature pieces seen on any processor. More... | |
virtual bool | areFeaturesMergeable (const FeatureData &f1, const FeatureData &f2) const |
Method for determining whether two features are mergeable. More... | |
void | communicateAndMerge () |
This routine handles all of the serialization, communication and deserialization of the data structures containing FeatureData objects. More... | |
void | sortAndLabel () |
Sort and assign ids to features based on their position in the container after sorting. More... | |
void | scatterAndUpdateRanks () |
Calls buildLocalToGlobalIndices to build the individual local to global indicies for each rank and scatters that information to all ranks. More... | |
virtual void | buildLocalToGlobalIndices (std::vector< std::size_t > &local_to_global_all, std::vector< int > &counts) const |
This routine populates a stacked vector of local to global indices per rank and the associated count vector for scattering the vector to the ranks. More... | |
void | buildFeatureIdToLocalIndices (unsigned int max_id) |
This method builds a lookup map for retrieving the right local feature (by index) given a global index or id. More... | |
virtual void | clearDataStructures () |
Helper routine for clearing up data structures during initialize and prior to parallel communication. More... | |
void | updateBoundaryIntersections (FeatureData &feature) const |
Update the feature's attributes to indicate boundary intersections. More... | |
void | appendPeriodicNeighborNodes (FeatureData &feature) const |
This routine adds the periodic node information to our data structure prior to packing the data this makes those periodic neighbors appear much like ghosted nodes in a multiprocessor setting. More... | |
void | updateRegionOffsets () |
This routine updates the _region_offsets variable which is useful for quickly determining the proper global number for a feature when using multimap mode. More... | |
void | visitNodalNeighbors (const Node *node, FeatureData *feature, bool expand_halos_only) |
These two routines are utility routines used by the flood routine and by derived classes for visiting neighbors. More... | |
void | visitElementalNeighbors (const Elem *elem, FeatureData *feature, bool expand_halos_only, bool disjoint_only) |
Static Protected Member Functions | |
template<class InputIterator > | |
static bool | setsIntersect (InputIterator first1, InputIterator last1, InputIterator first2, InputIterator last2) |
This method detects whether two sets intersect without building a result set. More... | |
Protected Attributes | |
std::vector< MooseVariableFEBase * > | _fe_vars |
The vector of coupled in variables. More... | |
std::vector< MooseVariable * > | _vars |
The vector of coupled in variables cast to MooseVariable. More... | |
const DofMap & | _dof_map |
Reference to the dof_map containing the coupled variables. More... | |
const Real | _threshold |
The threshold above (or below) where an entity may begin a new region (feature) More... | |
Real | _step_threshold |
const Real | _connecting_threshold |
The threshold above (or below) which neighboring entities are flooded (where regions can be extended but not started) More... | |
Real | _step_connecting_threshold |
MooseMesh & | _mesh |
A reference to the mesh. More... | |
unsigned long | _var_number |
This variable is used to build the periodic node map. More... | |
const bool | _single_map_mode |
This variable is used to indicate whether or not multiple maps are used during flooding. More... | |
const bool | _condense_map_info |
const bool | _global_numbering |
This variable is used to indicate whether or not we identify features with unique numbers on multiple maps. More... | |
const bool | _var_index_mode |
This variable is used to indicate whether the maps will contain unique region information or just the variable numbers owning those regions. More... | |
const bool | _compute_halo_maps |
Indicates whether or not to communicate halo map information with all ranks. More... | |
const bool | _compute_var_to_feature_map |
Indicates whether or not the var to feature map is populated. More... | |
const bool | _use_less_than_threshold_comparison |
Use less-than when comparing values against the threshold value. More... | |
const std::size_t | _n_vars |
const std::size_t | _maps_size |
Convenience variable holding the size of all the datastructures size by the number of maps. More... | |
const processor_id_type | _n_procs |
Convenience variable holding the number of processors in this simulation. More... | |
std::vector< std::set< dof_id_type > > | _entities_visited |
This variable keeps track of which nodes have been visited during execution. More... | |
std::vector< std::map< dof_id_type, int > > | _var_index_maps |
This map keeps track of which variables own which nodes. More... | |
std::vector< std::vector< const Elem * > > | _nodes_to_elem_map |
The data structure used to find neighboring elements give a node ID. More... | |
std::vector< unsigned int > | _feature_counts_per_map |
The number of features seen by this object per map. More... | |
unsigned int | _feature_count |
The number of features seen by this object (same as summing _feature_counts_per_map) More... | |
std::vector< std::list< FeatureData > > | _partial_feature_sets |
The data structure used to hold partial and communicated feature data, during the discovery and merging phases. More... | |
std::vector< FeatureData > & | _feature_sets |
The data structure used to hold the globally unique features. More... | |
std::vector< FeatureData > | _volatile_feature_sets |
Derived objects (e.g. More... | |
std::vector< std::map< dof_id_type, int > > | _feature_maps |
The feature maps contain the raw flooded node information and eventually the unique grain numbers. More... | |
std::vector< std::size_t > | _local_to_global_feature_map |
The vector recording the local to global feature indices. More... | |
std::vector< std::size_t > | _feature_id_to_local_index |
The vector recording the grain_id to local index (several indices will contain invalid_size_t) More... | |
PeriodicBoundaries * | _pbs |
A pointer to the periodic boundary constraints object. More... | |
std::unique_ptr< PointLocatorBase > | _point_locator |
const PostprocessorValue & | _element_average_value |
Average value of the domain which can optionally be used to find features in a field. More... | |
std::map< dof_id_type, int > | _ghosted_entity_ids |
The map for holding reconstructed ghosted element information. More... | |
std::vector< std::map< dof_id_type, int > > | _halo_ids |
The data structure for looking up halos around features. More... | |
std::multimap< dof_id_type, dof_id_type > | _periodic_node_map |
The data structure which is a list of nodes that are constrained to other nodes based on the imposed periodic boundary conditions. More... | |
std::unordered_set< dof_id_type > | _all_boundary_entity_ids |
The set of entities on the boundary of the domain used for determining if features intersect any boundary. More... | |
std::map< dof_id_type, std::vector< unsigned int > > | _entity_var_to_features |
std::vector< unsigned int > | _empty_var_to_features |
std::vector< BoundaryID > | _primary_perc_bnds |
std::vector< BoundaryID > | _secondary_perc_bnds |
std::vector< BoundaryID > | _specified_bnds |
const bool | _is_elemental |
Determines if the flood counter is elements or not (nodes) More... | |
bool | _is_boundary_restricted |
Indicates that this object should only run on one or more boundaries. More... | |
ConstBndElemRange * | _bnd_elem_range |
Boundary element range pointer. More... | |
const bool | _is_master |
Convenience variable for testing master rank. More... | |
Private Member Functions | |
void | consolidateMergedFeatures (std::vector< std::list< FeatureData >> *saved_data=nullptr) |
This method consolidates all of the merged information from _partial_feature_sets into the _feature_sets vectors. More... | |
Static Private Member Functions | |
template<class T > | |
static void | sort (std::set< T > &) |
template<class T > | |
static void | sort (std::vector< T > &container) |
template<class T > | |
static void | reserve (std::set< T > &, std::size_t) |
template<class T > | |
static void | reserve (std::vector< T > &container, std::size_t size) |
Private Attributes | |
std::deque< const DofObject * > | _entity_queue |
The data structure for maintaining entities to flood during discovery. More... | |
const bool | _distribute_merge_work |
Keeps track of whether we are distributing the merge work. More... | |
const PerfID | _execute_timer |
Timers. More... | |
const PerfID | _merge_timer |
const PerfID | _finalize_timer |
const PerfID | _comm_and_merge |
const PerfID | _expand_halos |
const PerfID | _update_field_info |
const PerfID | _prepare_for_transfer |
const PerfID | _consolidate_merged_features |
This object will mark nodes or elements of continuous regions all with a unique number for the purpose of counting or "coloring" unique regions in a solution.
It is designed to work with either a single variable, or multiple variables.
Note: When inspecting multiple variables, those variables must not have regions of interest that overlap or they will not be correctly colored.
Definition at line 44 of file FeatureFloodCount.h.
|
strong |
This enumeration is used to inidacate status of boundary intersections.
Enumerator | |
---|---|
NONE | |
ANY_BOUNDARY | |
PRIMARY_PERCOLATION_BOUNDARY | |
SECONDARY_PERCOLATION_BOUNDARY | |
SPECIFIED_BOUNDARY |
Definition at line 129 of file FeatureFloodCount.h.
|
strong |
Enumerator | |
---|---|
UNIQUE_REGION | |
VARIABLE_COLORING | |
GHOSTED_ENTITIES | |
HALOS | |
CENTROID | |
ACTIVE_BOUNDS |
Definition at line 103 of file FeatureFloodCount.h.
|
strong |
This enumeration is used to indicate status of the grains in the _unique_grains data structure.
Enumerator | |
---|---|
CLEAR | |
MARKED | |
DIRTY | |
INACTIVE |
Definition at line 120 of file FeatureFloodCount.h.
FeatureFloodCount::FeatureFloodCount | ( | const InputParameters & | parameters | ) |
Definition at line 194 of file FeatureFloodCount.C.
|
protected |
This routine adds the periodic node information to our data structure prior to packing the data this makes those periodic neighbors appear much like ghosted nodes in a multiprocessor setting.
Definition at line 1771 of file FeatureFloodCount.C.
Referenced by prepareDataForTransfer().
|
protectedvirtual |
Method for determining whether two features are mergeable.
This routine exists because derived classes may need to override this function rather than use the mergeable method in the FeatureData object.
Reimplemented in PolycrystalUserObjectBase.
Definition at line 1243 of file FeatureFloodCount.C.
Referenced by mergeSets().
|
protected |
This method builds a lookup map for retrieving the right local feature (by index) given a global index or id.
max_id is passed to size the vector properly and may or may not be a globally consistent number. The assumption is that any id that is later queried from this object that is higher simply doesn't exist on the local processor.
Definition at line 665 of file FeatureFloodCount.C.
Referenced by GrainTracker::assignGrains(), scatterAndUpdateRanks(), and GrainTracker::trackGrains().
|
protectedvirtual |
This routine populates a stacked vector of local to global indices per rank and the associated count vector for scattering the vector to the ranks.
The individual vectors can be different sizes. The ith vector will be distributed to the ith processor including the master rank. e.g. [ ... n_0 ] [ ... n_1 ] ... [ ... n_m ]
It is intended to be overridden in derived classes.
Definition at line 619 of file FeatureFloodCount.C.
Referenced by scatterAndUpdateRanks().
|
protectedvirtual |
Helper routine for clearing up data structures during initialize and prior to parallel communication.
Definition at line 330 of file FeatureFloodCount.C.
Referenced by communicateAndMerge().
|
protected |
This routine handles all of the serialization, communication and deserialization of the data structures containing FeatureData objects.
The libMesh packed range routines handle the communication of the individual string buffers. Here we need to create a container to hold our type to serialize. It'll always be size one because we are sending a single byte stream of all the data to other processors. The stream need not be the same size on all processors.
Additionally we need to create a different container to hold the received byte buffers. The container type need not match the send container type. However, We do know the number of incoming buffers (num processors) so we'll go ahead and use a vector.
When we distribute merge work, we are reducing computational work by adding more communication. Each of the first _n_vars processors will receive one variable worth of information to merge. After each of those processors has merged that information, it'll be sent to the master processor where final consolidation will occur.
Send the data from all processors to the first _n_vars processors to create a complete global feature maps for each variable.
A call to gather_packed_range seems to populate the receiving buffer on all processors, not just the receiving buffer on the actual receiving processor. If we plan to call this function repeatedly, we must clear the buffers each time on all non-receiving processors. On the actual receiving processor, we'll save off the buffer for use later.
The FeatureFloodCount and derived algorithms rely on having the data structures intact on all non-zero ranks. This is because local-only information (local entities) is never communicated and thus must remain intact. However, the distributed merging will destroy that information. The easiest thing to do is to swap out the data structure while we perform the distributed merge work.
Send the data from the merging processors to the root to create a complete global feature map.
Send the data from all processors to the root to create a complete global feature map.
Definition at line 412 of file FeatureFloodCount.C.
Referenced by GrainTracker::finalize(), and finalize().
|
protected |
This method is used to determine whether the current entity value is part of a feature or not.
Comparisons can either be greater than or less than the threshold which is controlled via input parameter.
Definition at line 1418 of file FeatureFloodCount.C.
Referenced by isNewFeatureOrConnectedRegion().
|
private |
This method consolidates all of the merged information from _partial_feature_sets into the _feature_sets vectors.
Now that the merges are complete we need to adjust the centroid, and halos. Additionally, To make several of the sorting and tracking algorithms more straightforward, we will move the features into a flat vector. Finally we can count the final number of features and find the max local index seen on any processor Note: This is all occurring on rank 0 only!
IMPORTANT: FeatureFloodCount::_feature_count is set on rank 0 at this point but we can't broadcast it here because this routine is not collective.
Definition at line 1176 of file FeatureFloodCount.C.
Referenced by communicateAndMerge().
|
protected |
This routine takes the vector of byte buffers (one for each processor), deserializes them into a series of FeatureSet objects, and appends them to the _feature_sets data structure.
Note: It is assumed that local processor information may already be stored in the _feature_sets data structure so it is not cleared before insertion.
Usually we have the local processor data already in the _partial_feature_sets data structure. However, if we are doing distributed merge work, we also need to preserve all of the original data for use in later stages of the algorithm so it'll have been swapped out with clean buffers. This leaves us a choice, either we just duplicate the Features from the original data structure after we've swapped out the buffer, or we go ahead and unpack data that we would normally already have. So during distributed merging, that's exactly what we'll do. Later however when the master is doing the final consolidating, we'll opt to just skip the local unpacking. To tell the difference, between these two modes, we just need to see if a var_num was passed in.
Definition at line 1086 of file FeatureFloodCount.C.
Referenced by communicateAndMerge().
|
virtual |
Returns a Boolean indicating whether this feature intersects any boundary.
Reimplemented in GrainTracker, and FauxGrainTracker.
Definition at line 828 of file FeatureFloodCount.C.
Referenced by FeatureVolumeVectorPostprocessor::execute().
|
virtual |
Returns a Boolean indicating whether this feature intersects boundaries in a user-supplied list.
Reimplemented in GrainTracker.
Definition at line 850 of file FeatureFloodCount.C.
Referenced by FeatureVolumeVectorPostprocessor::execute().
|
overridevirtual |
Reimplemented in PolycrystalUserObjectBase, FauxGrainTracker, and GrainTracker.
Definition at line 358 of file FeatureFloodCount.C.
Referenced by GrainTracker::execute().
|
protected |
This method expands the existing halo set by some width determined by the passed in value.
This method does NOT mask off any local IDs.
Create a copy of the halo set so that as we insert new ids into the set we don't continue to iterate on those new ids.
We have to handle disjoint halo IDs slightly differently. Once you are disjoint, you can't go back so make sure that we keep placing these IDs in the disjoint set.
Definition at line 1527 of file FeatureFloodCount.C.
Referenced by GrainTracker::finalize(), and PolycrystalUserObjectBase::finalize().
|
protected |
This method takes all of the partial features and expands the local, ghosted, and halo sets around those regions to account for the diffuse interface.
Rather than using any kind of recursion here, we simply expand the region by all "point" neighbors from the actual grain cells since all point neighbors will contain contributions to the region.
To expand the feature element region to the actual flooded region (nodal basis) we need to add in all point neighbors of the current local region for each feature. This is because the elemental variable influence spreads from the elemental data out exactly one element from every mesh point.
Definition at line 1465 of file FeatureFloodCount.C.
|
virtual |
Returns the centroid of the designated feature (only supported without periodic boundaries)
Definition at line 900 of file FeatureFloodCount.C.
Referenced by FeatureVolumeVectorPostprocessor::execute().
|
overridevirtual |
Reimplemented in PolycrystalUserObjectBase, FauxGrainTracker, and GrainTracker.
Definition at line 681 of file FeatureFloodCount.C.
Referenced by PolycrystalUserObjectBase::finalize().
|
protected |
This method will check if the current entity is above the supplied threshold and "mark" it.
It will then inspect neighboring entities that are above the connecting threshold and add them to the current feature.
If we reach this point (i.e. we haven't continued to the next queue entry), we've found a new mesh entity that's part of a feature. We need to mark the entity as visited at this point (and not before!) to avoid infinite recursion. If you mark the node too early you risk not coloring in a whole feature any time a "connecting threshold" is used since we may have already visited this entity earlier but it was in-between two thresholds.
See if this particular entity cell contributes to the centroid calculation. We only deal with elemental floods and only count it if it's owned by the current processor to avoid skewing the result.
Definition at line 1294 of file FeatureFloodCount.C.
Referenced by execute(), and PolycrystalUserObjectBase::execute().
|
protectedvirtual |
Return the "connecting" comparison threshold to use when inspecting an entity during the flood stage.
Definition at line 1412 of file FeatureFloodCount.C.
Referenced by isNewFeatureOrConnectedRegion().
|
inline |
Returns a const vector to the coupled variable pointers.
Definition at line 98 of file FeatureFloodCount.h.
Referenced by AverageGrainVolume::AverageGrainVolume(), and FeatureVolumeVectorPostprocessor::FeatureVolumeVectorPostprocessor().
|
virtual |
Reimplemented in GrainTracker, and FauxGrainTracker.
Definition at line 918 of file FeatureFloodCount.C.
Referenced by GrainTracker::getEntityValue(), and FeatureFloodCountAux::precalculateValue().
|
inline |
Return a constant reference to the vector of all discovered features.
Definition at line 340 of file FeatureFloodCount.h.
Referenced by GrainTracker::prepopulateState().
|
virtual |
Returns the variable representing the passed in feature.
Reimplemented in GrainTracker, and FauxGrainTracker.
Definition at line 809 of file FeatureFloodCount.C.
Referenced by FeatureVolumeVectorPostprocessor::execute(), and GrainTracker::getFeatureVar().
|
inline |
Returns a const vector to the coupled MooseVariableFEBase pointers.
Definition at line 101 of file FeatureFloodCount.h.
Referenced by AverageGrainVolume::AverageGrainVolume().
std::size_t FeatureFloodCount::getNumberActiveFeatures | ( | ) | const |
Return the number of active features.
Definition at line 791 of file FeatureFloodCount.C.
Referenced by AverageGrainVolume::getValue().
|
protectedvirtual |
Return the starting comparison threshold to use when inspecting an entity during the flood stage.
Reimplemented in GrainTracker.
Definition at line 1407 of file FeatureFloodCount.C.
Referenced by isNewFeatureOrConnectedRegion().
|
virtual |
Returns the total feature count (active and inactive ids, useful for sizing vectors)
Since the FeatureFloodCount object doesn't maintain any information about features between invocations. The maximum id in use is simply the number of features.
Reimplemented in FauxGrainTracker, and GrainTracker.
Definition at line 798 of file FeatureFloodCount.C.
Referenced by FeatureVolumeVectorPostprocessor::execute(), and AverageGrainVolume::initialize().
|
overridevirtual |
Reimplemented in FauxGrainTracker.
Definition at line 785 of file FeatureFloodCount.C.
|
virtual |
Returns a list of active unique feature ids for a particular element.
The vector is indexed by variable number with each entry containing either an invalid size_t type (no feature active at that location) or a feature id if the variable is non-zero at that location.
Reimplemented in GrainTracker, and FauxGrainTracker.
Definition at line 701 of file FeatureFloodCount.C.
Referenced by AverageGrainVolume::execute(), FeatureVolumeVectorPostprocessor::execute(), GrainTracker::getVarToFeatureVector(), and FeatureFloodCountAux::precalculateValue().
|
overridevirtual |
Reimplemented in PolycrystalUserObjectBase, FauxGrainTracker, and GrainTracker.
Definition at line 298 of file FeatureFloodCount.C.
Referenced by GrainTracker::initialize(), and PolycrystalUserObjectBase::initialize().
|
overridevirtual |
Size the empty var to features vector to the number of coupled variables. This empty vector (but properly sized) vector is returned for elements that are queried but are not in the structure (which also shouldn't happen). The user is warned in this case but this helps avoid extra bounds checking in user code and avoids segfaults.
Reimplemented in PolycrystalUserObjectBase.
Definition at line 277 of file FeatureFloodCount.C.
Referenced by PolycrystalUserObjectBase::initialSetup().
|
protected |
Returns a Boolean indicating whether the entity is on one of the desired boundaries.
Definition at line 1810 of file FeatureFloodCount.C.
Referenced by visitNeighborsHelper().
|
inline |
Definition at line 117 of file FeatureFloodCount.h.
Referenced by FeatureFloodCountAux::FeatureFloodCountAux().
|
virtual |
Returns a Boolean indicating whether this feature is percolated (e.g.
intersects at least two different boundaries from sets supplied by the user)
Reimplemented in GrainTracker.
Definition at line 874 of file FeatureFloodCount.C.
Referenced by FeatureVolumeVectorPostprocessor::execute().
|
protectedvirtual |
Method called during the recursive flood routine that should return whether or not the current entity is part of the current feature (if one is being explored), or if it's the start of a new feature.
If the value is only above the connecting threshold, it's still part of a feature but possibly part of one that we'll discard if there is never any starting threshold encountered.
Reimplemented in PolycrystalUserObjectBase.
Definition at line 1425 of file FeatureFloodCount.C.
Referenced by flood().
|
protectedvirtual |
This routine is called on the master rank only and stitches together the partial feature pieces seen on any processor.
Insert the new entity at the end of the list so that it may be checked against all other partial features again.
Now remove both halves the merged features: it2 contains the "moved" feature cell just inserted at the back of the list, it1 contains the mostly empty other half. We have to be careful about the order in which these two elements are deleted. We delete it2 first since we don't care where its iterator points after the deletion. We are going to break out of this loop anyway. If we delete it1 first, it may end up pointing at the same location as it2 which after the second deletion would cause both of the iterators to be invalidated.
Reimplemented in PolycrystalUserObjectBase.
Definition at line 1121 of file FeatureFloodCount.C.
Referenced by communicateAndMerge().
|
overridevirtual |
We need to build a set containing all of the boundary entities to compare against. This will be elements for elemental flooding. Volumes for nodal flooding is not supported
Reimplemented in GrainTracker.
Definition at line 335 of file FeatureFloodCount.C.
Referenced by initialSetup(), and GrainTracker::meshChanged().
|
inline |
|
protected |
This routine uses the local flooded data to build up the local feature data structures (_feature_sets).
This routine does not perform any communication so the _feature_sets data structure will only contain information from the local processor after calling this routine. Any existing data in the _feature_sets structure is destroyed by calling this routine.
_feature_sets layout: The outer vector is sized to one when _single_map_mode == true, otherwise it is sized for the number of coupled variables. The inner list represents the flooded regions (local only after this call but fully populated after parallel communication and stitching).
If using a vector container, we need to sort all of the data structures for later operations such as checking for intersection and merging. The following "sort" function does nothing when invoked on a std::set.
Save off the min entity id present in the feature to uniquely identify the feature regardless of n_procs
Definition at line 1017 of file FeatureFloodCount.C.
Referenced by communicateAndMerge().
|
inlinestaticprivate |
Definition at line 748 of file FeatureFloodCount.h.
Referenced by FeatureFloodCount::FeatureData::consolidate(), FeatureFloodCount::FeatureData::merge(), and FeatureFloodCount::FeatureData::updateBBoxExtremes().
|
inlinestaticprivate |
Definition at line 754 of file FeatureFloodCount.h.
|
protected |
Calls buildLocalToGlobalIndices to build the individual local to global indicies for each rank and scatters that information to all ranks.
Finally, the non-master ranks update their own data structures to reflect the global mappings.
On non-root processors we can't maintain the full _feature_sets data structure since we don't have all of the global information. We'll move the items from the partial feature sets into a flat structure maintaining order and update the internal IDs with the proper global ID.
Important: Make sure we clear the local status if we received a valid global index for this feature. It's possible that we have a status of INVALID on the local processor because there was never any starting threshold found. However, the root processor wouldn't have sent an index if it didn't find a starting threshold connected to our local piece.
Definition at line 717 of file FeatureFloodCount.C.
Referenced by GrainTracker::assignGrains(), finalize(), and GrainTracker::trackGrains().
|
protected |
This routines packs the _partial_feature_sets data into a structure suitable for parallel communication operations.
Definition at line 1067 of file FeatureFloodCount.C.
Referenced by communicateAndMerge().
|
inlinestaticprotected |
This method detects whether two sets intersect without building a result set.
It exits as soon as any intersection is detected.
Definition at line 543 of file FeatureFloodCount.h.
Referenced by FeatureFloodCount::FeatureData::ghostedIntersect(), FeatureFloodCount::FeatureData::halosIntersect(), and FeatureFloodCount::FeatureData::periodicBoundariesIntersect().
|
inlinestaticprivate |
Definition at line 736 of file FeatureFloodCount.h.
Referenced by prepareDataForTransfer().
|
inlinestaticprivate |
Definition at line 742 of file FeatureFloodCount.h.
|
protected |
Sort and assign ids to features based on their position in the container after sorting.
Perform a sort to give a parallel unique sorting to the identified features. We use the "min_entity_id" inside each feature to assign it's position in the sorted vector.
Sanity check. Now that we've sorted the flattened vector of features we need to make sure that the counts vector still lines up appropriately with each feature's _var_index.
Definition at line 573 of file FeatureFloodCount.C.
Referenced by GrainTracker::assignGrains(), and finalize().
|
protected |
Update the feature's attributes to indicate boundary intersections.
Definition at line 1724 of file FeatureFloodCount.C.
Referenced by prepareDataForTransfer().
|
protectedvirtual |
This method is used to populate any of the data structures used for storing field data (nodal or elemental).
It is called at the end of finalize and can make use of any of the data structures created during the execution of this postprocessor.
Reimplemented in GrainTracker.
Definition at line 1249 of file FeatureFloodCount.C.
Referenced by finalize().
|
protected |
This routine updates the _region_offsets variable which is useful for quickly determining the proper global number for a feature when using multimap mode.
|
protected |
Retrieve only the active neighbors for each side of this element, append them to the list of active neighbors
If the current element (passed into this method) doesn't have a connected neighbor but does have a topological neighbor, this might be a new disjoint region that we'll need to represent with a separate bounding box. To find out for sure, we'll need see if the new neighbors are present in any of the halo or disjoint halo sets. If they are not present, this is a new region.
This neighbor is NULL which means we need to expand the bounding box here in case this grain is up against multiple domain edges so we don't end up with a degenerate bounding box.
Definition at line 1584 of file FeatureFloodCount.C.
Referenced by expandEdgeHalos(), and flood().
|
protected |
The actual logic for visiting neighbors is abstracted out here.
This method is templated to handle the Nodal and Elemental cases together.
Only recurse where we own this entity and it's a topologically connected entity. We shouldn't even attempt to flood to the periodic boundary because we won't have solution information and if we are using DistributedMesh we probably won't have geometric information either.
When we only recurse on entities we own, we can never get more than one away from a local entity which should be in the ghosted zone.
Premark neighboring entities with a halo mark. These entities may or may not end up being part of the feature. We will not update the _entities_visited data structure here.
Definition at line 1667 of file FeatureFloodCount.C.
Referenced by visitElementalNeighbors(), and visitNodalNeighbors().
|
protected |
These two routines are utility routines used by the flood routine and by derived classes for visiting neighbors.
Since the logic is different for the elemental versus nodal case it's easier to split them up.
Definition at line 1653 of file FeatureFloodCount.C.
Referenced by expandEdgeHalos(), and flood().
|
protected |
The set of entities on the boundary of the domain used for determining if features intersect any boundary.
Definition at line 711 of file FeatureFloodCount.h.
Referenced by meshChanged().
|
protected |
Boundary element range pointer.
Definition at line 729 of file FeatureFloodCount.h.
Referenced by execute(), and isBoundaryEntity().
|
private |
Definition at line 775 of file FeatureFloodCount.h.
Referenced by communicateAndMerge().
|
protected |
Indicates whether or not to communicate halo map information with all ranks.
Definition at line 604 of file FeatureFloodCount.h.
Referenced by GrainTracker::communicateHaloMap(), GrainTracker::meshChanged(), GrainTracker::updateFieldInfo(), and updateFieldInfo().
|
protected |
Indicates whether or not the var to feature map is populated.
Definition at line 607 of file FeatureFloodCount.h.
Referenced by getVarToFeatureVector(), GrainTracker::updateFieldInfo(), and updateFieldInfo().
|
protected |
Definition at line 593 of file FeatureFloodCount.h.
Referenced by GrainTracker::updateFieldInfo(), and updateFieldInfo().
|
protected |
The threshold above (or below) which neighboring entities are flooded (where regions can be extended but not started)
Definition at line 577 of file FeatureFloodCount.h.
Referenced by initialize().
|
private |
Definition at line 779 of file FeatureFloodCount.h.
Referenced by consolidateMergedFeatures().
|
private |
Keeps track of whether we are distributing the merge work.
Definition at line 769 of file FeatureFloodCount.h.
Referenced by communicateAndMerge().
|
protected |
Reference to the dof_map containing the coupled variables.
Definition at line 569 of file FeatureFloodCount.h.
Referenced by flood().
|
protected |
Average value of the domain which can optionally be used to find features in a field.
Definition at line 692 of file FeatureFloodCount.h.
Referenced by initialize().
|
protected |
Definition at line 715 of file FeatureFloodCount.h.
Referenced by getVarToFeatureVector(), and initialSetup().
|
protected |
This variable keeps track of which nodes have been visited during execution.
We don't use the _feature_map for this since we don't want to explicitly store data for all the unmarked nodes in a serialized datastructures. This keeps our overhead down since this variable never needs to be communicated.
Definition at line 631 of file FeatureFloodCount.h.
Referenced by PolycrystalUserObjectBase::execute(), flood(), initialize(), initialSetup(), and PolycrystalUserObjectBase::isNewFeatureOrConnectedRegion().
|
private |
The data structure for maintaining entities to flood during discovery.
Definition at line 766 of file FeatureFloodCount.h.
Referenced by flood(), and visitNeighborsHelper().
|
protected |
Definition at line 713 of file FeatureFloodCount.h.
Referenced by getVarToFeatureVector(), initialize(), GrainTracker::updateFieldInfo(), and updateFieldInfo().
|
private |
|
private |
Definition at line 776 of file FeatureFloodCount.h.
Referenced by expandEdgeHalos().
|
protected |
The vector of coupled in variables.
Definition at line 564 of file FeatureFloodCount.h.
Referenced by FeatureFloodCount(), and getFECoupledVars().
|
protected |
The number of features seen by this object (same as summing _feature_counts_per_map)
Definition at line 648 of file FeatureFloodCount.h.
Referenced by PolycrystalUserObjectBase::assignOpsToGrains(), PolycrystalUserObjectBase::buildGrainAdjacencyMatrix(), PolycrystalUserObjectBase::colorGraph(), communicateAndMerge(), consolidateMergedFeatures(), PolycrystalUserObjectBase::finalize(), flood(), getNumberActiveFeatures(), GrainTracker::getNumberActiveGrains(), getTotalFeatureCount(), getValue(), initialize(), PolycrystalUserObjectBase::isGraphValid(), GrainTracker::prepopulateState(), and sortAndLabel().
|
protected |
The number of features seen by this object per map.
Definition at line 645 of file FeatureFloodCount.h.
Referenced by consolidateMergedFeatures(), sortAndLabel(), and GrainTracker::trackGrains().
|
protected |
The vector recording the grain_id to local index (several indices will contain invalid_size_t)
Definition at line 684 of file FeatureFloodCount.h.
Referenced by GrainTracker::broadcastAndUpdateGrainData(), buildFeatureIdToLocalIndices(), doesFeatureIntersectBoundary(), GrainTracker::doesFeatureIntersectBoundary(), doesFeatureIntersectSpecifiedBoundary(), GrainTracker::doesFeatureIntersectSpecifiedBoundary(), featureCentroid(), getFeatureVar(), GrainTracker::getGrainCentroid(), GrainTracker::isFeaturePercolated(), isFeaturePercolated(), and GrainTracker::newGrainCreated().
|
protected |
The feature maps contain the raw flooded node information and eventually the unique grain numbers.
We have a vector of them so we can create one per variable if that level of detail is desired.
Definition at line 678 of file FeatureFloodCount.h.
Referenced by getEntityValue(), initialize(), GrainTracker::updateFieldInfo(), and updateFieldInfo().
|
protected |
The data structure used to hold the globally unique features.
The sorting of the vector is implementation defined and may not correspond to anything useful. The ID of each feature should be queried from the FeatureData objects.
Definition at line 662 of file FeatureFloodCount.h.
Referenced by GrainTracker::assignGrains(), GrainTracker::attemptGrainRenumber(), GrainTracker::broadcastAndUpdateGrainData(), buildFeatureIdToLocalIndices(), PolycrystalUserObjectBase::buildGrainAdjacencyMatrix(), buildLocalToGlobalIndices(), GrainTracker::communicateHaloMap(), GrainTracker::computeMinDistancesFromGrain(), consolidateMergedFeatures(), doesFeatureIntersectBoundary(), GrainTracker::doesFeatureIntersectBoundary(), doesFeatureIntersectSpecifiedBoundary(), GrainTracker::doesFeatureIntersectSpecifiedBoundary(), featureCentroid(), PolycrystalUserObjectBase::finalize(), getEntityValue(), getFeatures(), getFeatureVar(), GrainTracker::getGrainCentroid(), GrainTracker::initialize(), initialize(), GrainTracker::isFeaturePercolated(), isFeaturePercolated(), GrainTracker::newGrainCreated(), GrainTracker::prepopulateState(), GrainTracker::remapGrains(), scatterAndUpdateRanks(), sortAndLabel(), GrainTracker::trackGrains(), GrainTracker::updateFieldInfo(), and updateFieldInfo().
|
private |
Definition at line 774 of file FeatureFloodCount.h.
Referenced by finalize().
|
protected |
The map for holding reconstructed ghosted element information.
Definition at line 695 of file FeatureFloodCount.h.
Referenced by getEntityValue(), initialize(), GrainTracker::updateFieldInfo(), and updateFieldInfo().
|
protected |
This variable is used to indicate whether or not we identify features with unique numbers on multiple maps.
Definition at line 597 of file FeatureFloodCount.h.
Referenced by updateFieldInfo().
|
protected |
The data structure for looking up halos around features.
The outer vector is for splitting out the information per variable. The inner map holds the actual halo information
Definition at line 701 of file FeatureFloodCount.h.
Referenced by FeatureFloodCount::FeatureData::clear(), GrainTracker::communicateHaloMap(), getEntityValue(), FeatureFloodCount::FeatureData::halosIntersect(), initialize(), FeatureFloodCount::FeatureData::merge(), GrainTracker::updateFieldInfo(), and updateFieldInfo().
|
protected |
Indicates that this object should only run on one or more boundaries.
Definition at line 726 of file FeatureFloodCount.h.
Referenced by execute(), FeatureFloodCount(), and visitNeighborsHelper().
|
protected |
Determines if the flood counter is elements or not (nodes)
Definition at line 723 of file FeatureFloodCount.h.
Referenced by appendPeriodicNeighborNodes(), GrainTracker::communicateHaloMap(), FauxGrainTracker::execute(), execute(), PolycrystalUserObjectBase::execute(), expandEdgeHalos(), FauxGrainTracker::finalize(), flood(), FauxGrainTracker::initialize(), isElemental(), PolycrystalUserObjectBase::isNewFeatureOrConnectedRegion(), isNewFeatureOrConnectedRegion(), meshChanged(), prepareDataForTransfer(), GrainTracker::swapSolutionValues(), updateBoundaryIntersections(), and GrainTracker::updateFieldInfo().
|
protected |
Convenience variable for testing master rank.
Definition at line 732 of file FeatureFloodCount.h.
Referenced by GrainTracker::assignGrains(), PolycrystalUserObjectBase::assignOpsToGrains(), GrainTracker::broadcastAndUpdateGrainData(), PolycrystalUserObjectBase::buildGrainAdjacencyMatrix(), buildLocalToGlobalIndices(), communicateAndMerge(), GrainTracker::communicateHaloMap(), consolidateMergedFeatures(), finalize(), PolycrystalUserObjectBase::finalize(), GrainTracker::newGrainCreated(), GrainTracker::prepopulateState(), GrainTracker::remapGrains(), scatterAndUpdateRanks(), sortAndLabel(), and GrainTracker::trackGrains().
|
protected |
The vector recording the local to global feature indices.
Definition at line 681 of file FeatureFloodCount.h.
Referenced by scatterAndUpdateRanks().
|
protected |
Convenience variable holding the size of all the datastructures size by the number of maps.
Definition at line 620 of file FeatureFloodCount.h.
Referenced by consolidateMergedFeatures(), FeatureFloodCount(), getEntityValue(), initialize(), mergeSets(), sortAndLabel(), GrainTracker::trackGrains(), and GrainTracker::updateFieldInfo().
|
private |
Definition at line 773 of file FeatureFloodCount.h.
Referenced by mergeSets().
|
protected |
A reference to the mesh.
Definition at line 581 of file FeatureFloodCount.h.
Referenced by appendPeriodicNeighborNodes(), GrainTracker::centroidRegionDistance(), GrainTracker::communicateHaloMap(), PolycrystalCircles::computeDiffuseInterface(), FauxGrainTracker::execute(), execute(), expandEdgeHalos(), expandPointHalos(), FeatureFloodCount(), PolycrystalVoronoi::findCenterPoint(), PolycrystalVoronoi::findNormalVector(), FauxGrainTracker::getEntityValue(), getEntityValue(), PolycrystalVoronoi::getGrainsBasedOnPoint(), PolycrystalCircles::getGrainsBasedOnPoint(), PolycrystalUserObjectBase::initialSetup(), PolycrystalUserObjectBase::isNewFeatureOrConnectedRegion(), GrainTracker::meshChanged(), meshChanged(), PolycrystalVoronoi::precomputeGrainStructure(), PolycrystalHex::precomputeGrainStructure(), prepareDataForTransfer(), GrainTracker::swapSolutionValues(), updateBoundaryIntersections(), GrainTracker::updateFieldInfo(), visitElementalNeighbors(), and visitNodalNeighbors().
|
protected |
Convenience variable holding the number of processors in this simulation.
Definition at line 623 of file FeatureFloodCount.h.
Referenced by buildLocalToGlobalIndices(), and GrainTracker::communicateHaloMap().
|
protected |
Definition at line 617 of file FeatureFloodCount.h.
Referenced by communicateAndMerge(), getVarToFeatureVector(), initialSetup(), numCoupledVars(), GrainTracker::remapGrains(), GrainTracker::updateFieldInfo(), and updateFieldInfo().
|
protected |
The data structure used to find neighboring elements give a node ID.
Definition at line 642 of file FeatureFloodCount.h.
Referenced by meshChanged(), and visitNodalNeighbors().
|
protected |
The data structure used to hold partial and communicated feature data, during the discovery and merging phases.
The outer vector is indexed by map number (often variable number). The inner list is an unordered list of partially discovered features.
Definition at line 655 of file FeatureFloodCount.h.
Referenced by communicateAndMerge(), consolidateMergedFeatures(), deserialize(), expandEdgeHalos(), expandPointHalos(), flood(), initialize(), PolycrystalUserObjectBase::mergeSets(), mergeSets(), prepareDataForTransfer(), GrainTracker::prepopulateState(), scatterAndUpdateRanks(), and serialize().
|
protected |
A pointer to the periodic boundary constraints object.
Definition at line 687 of file FeatureFloodCount.h.
Referenced by initialSetup(), PolycrystalUserObjectBase::isNewFeatureOrConnectedRegion(), meshChanged(), and visitElementalNeighbors().
|
protected |
The data structure which is a list of nodes that are constrained to other nodes based on the imposed periodic boundary conditions.
Definition at line 707 of file FeatureFloodCount.h.
Referenced by appendPeriodicNeighborNodes(), FauxGrainTracker::getEntityValue(), getEntityValue(), and meshChanged().
|
protected |
Definition at line 689 of file FeatureFloodCount.h.
Referenced by PolycrystalUserObjectBase::isNewFeatureOrConnectedRegion(), meshChanged(), and visitElementalNeighbors().
|
private |
Definition at line 778 of file FeatureFloodCount.h.
Referenced by prepareDataForTransfer().
|
protected |
Definition at line 717 of file FeatureFloodCount.h.
Referenced by FeatureFloodCount(), and updateBoundaryIntersections().
|
protected |
Definition at line 718 of file FeatureFloodCount.h.
Referenced by FeatureFloodCount(), and updateBoundaryIntersections().
|
protected |
This variable is used to indicate whether or not multiple maps are used during flooding.
Definition at line 591 of file FeatureFloodCount.h.
Referenced by flood(), PolycrystalUserObjectBase::PolycrystalUserObjectBase(), sortAndLabel(), GrainTracker::updateFieldInfo(), and updateFieldInfo().
|
protected |
Definition at line 720 of file FeatureFloodCount.h.
Referenced by FeatureFloodCount(), and updateBoundaryIntersections().
|
protected |
Definition at line 578 of file FeatureFloodCount.h.
Referenced by getConnectingThreshold(), and initialize().
|
protected |
Definition at line 573 of file FeatureFloodCount.h.
Referenced by GrainTracker::getThreshold(), getThreshold(), and initialize().
|
protected |
The threshold above (or below) where an entity may begin a new region (feature)
Definition at line 572 of file FeatureFloodCount.h.
Referenced by FauxGrainTracker::execute(), and initialize().
|
private |
Definition at line 777 of file FeatureFloodCount.h.
|
protected |
Use less-than when comparing values against the threshold value.
True by default. If false, then greater-than comparison is used instead.
Definition at line 614 of file FeatureFloodCount.h.
Referenced by compareValueWithThreshold(), and FauxGrainTracker::execute().
|
protected |
This map keeps track of which variables own which nodes.
We need a vector of them for multimap mode where multiple variables can own a single mode.
Note: This map is only populated when "show_var_coloring" is set to true.
Definition at line 639 of file FeatureFloodCount.h.
Referenced by FeatureFloodCount(), getEntityValue(), initialize(), GrainTracker::updateFieldInfo(), and updateFieldInfo().
|
protected |
This variable is used to indicate whether the maps will contain unique region information or just the variable numbers owning those regions.
Definition at line 601 of file FeatureFloodCount.h.
Referenced by FeatureFloodCount(), getEntityValue(), initialize(), GrainTracker::updateFieldInfo(), and updateFieldInfo().
|
protected |
This variable is used to build the periodic node map.
Assumption: We are going to assume that either all variables are periodic or none are. This assumption can be relaxed at a later time if necessary.
Definition at line 588 of file FeatureFloodCount.h.
Referenced by GrainTracker::centroidRegionDistance(), and meshChanged().
|
protected |
The vector of coupled in variables cast to MooseVariable.
Definition at line 566 of file FeatureFloodCount.h.
Referenced by PolycrystalUserObjectBase::assignOpsToGrains(), GrainTracker::attemptGrainRenumber(), PolycrystalCircles::computeDiffuseInterface(), GrainTracker::computeMinDistancesFromGrain(), FauxGrainTracker::execute(), execute(), FeatureFloodCount(), FauxGrainTracker::finalize(), PolycrystalVoronoi::findCenterPoint(), PolycrystalVoronoi::findNormalVector(), getCoupledVars(), FauxGrainTracker::getEntityValue(), PolycrystalVoronoi::getGrainsBasedOnPoint(), PolycrystalCircles::getGrainsBasedOnPoint(), initialSetup(), PolycrystalUserObjectBase::initialSetup(), isNewFeatureOrConnectedRegion(), GrainTracker::swapSolutionValuesHelper(), and GrainTracker::updateFieldInfo().
|
protected |
Derived objects (e.g.
the GrainTracker) may require restartable data to track information across time steps. The FeatureFloodCounter however does not. This container is here so that we have the flexabilty to switch between volatile and non-volatile storage. The _feature_sets data structure can conditionally refer to this structure or a MOOSE-provided structure, which is backed up.
Definition at line 671 of file FeatureFloodCount.h.
|
static |
Definition at line 94 of file FeatureFloodCount.h.
Referenced by FeatureVolumeVectorPostprocessor::accumulateBoundaryFaces(), AverageGrainVolume::accumulateVolumes(), FeatureVolumeVectorPostprocessor::accumulateVolumes(), GrainTracker::assignGrains(), MultiGrainRigidBodyMotion::calculateAdvectionVelocity(), SingleGrainRigidBodyMotion::calculateAdvectionVelocity(), ComputePolycrystalElasticityTensor::computeQpElasticityTensor(), DeformedGrainMaterial::computeQpProperties(), deserialize(), FauxGrainTracker::execute(), FeatureVolumeVectorPostprocessor::execute(), FauxGrainTracker::FauxGrainTracker(), featureCentroid(), flood(), getFeatureVar(), GrainTracker::getNextUniqueID(), GrainTracker::getTotalFeatureCount(), SingleGrainRigidBodyMotion::getUserObjectJacobian(), MultiGrainRigidBodyMotion::getUserObjectJacobian(), PolycrystalVoronoi::getVariableValue(), PolycrystalCircles::getVariableValue(), initialSetup(), PolycrystalUserObjectBase::isNewFeatureOrConnectedRegion(), FeatureFloodCount::FeatureData::operator<(), operator<<(), FeatureFloodCountAux::precalculateValue(), serialize(), sortAndLabel(), GrainTracker::trackGrains(), GrainTracker::updateFieldInfo(), and updateFieldInfo().
|
static |
Constants used for invalid indices set to the max value of std::size_t type
Definition at line 93 of file FeatureFloodCount.h.
Referenced by GrainTracker::broadcastAndUpdateGrainData(), buildFeatureIdToLocalIndices(), buildLocalToGlobalIndices(), doesFeatureIntersectBoundary(), GrainTracker::doesFeatureIntersectBoundary(), doesFeatureIntersectSpecifiedBoundary(), GrainTracker::doesFeatureIntersectSpecifiedBoundary(), PolycrystalUserObjectBase::execute(), featureCentroid(), flood(), FauxGrainTracker::getEntityValue(), getEntityValue(), getFeatureVar(), GrainTracker::getGrainCentroid(), GrainTracker::isFeaturePercolated(), isFeaturePercolated(), PolycrystalUserObjectBase::isNewFeatureOrConnectedRegion(), GrainTracker::newGrainCreated(), scatterAndUpdateRanks(), and GrainTracker::trackGrains().