https://mooseframework.inl.gov
Loading...
Searching...
No Matches
Classes | Functions | Variables
PolycrystalICTools Namespace Reference

Classes

class  AdjacencyMatrix
 Simple 2D block matrix indicating graph adjacency. More...
 

Functions

std::vector< unsigned intassignPointsToVariables (const std::vector< Point > &centerpoints, const Real op_num, const MooseMesh &mesh, const MooseVariable &var)
 
unsigned int assignPointToGrain (const Point &p, const std::vector< Point > &centerpoints, const MooseMesh &mesh, const MooseVariable &var, const Real maxsize)
 
AdjacencyMatrix< Real > buildGrainAdjacencyMatrix (const std::map< dof_id_type, unsigned int > &entity_to_grain, MooseMesh &mesh, const libMesh::PeriodicBoundaries *pb, unsigned int n_grains, bool is_elemental)
 
AdjacencyMatrix< Real > buildElementalGrainAdjacencyMatrix (const std::map< dof_id_type, unsigned int > &element_to_grain, MooseMesh &mesh, const libMesh::PeriodicBoundaries *pb, unsigned int n_grains)
 
AdjacencyMatrix< Real > buildNodalGrainAdjacencyMatrix (const std::map< dof_id_type, unsigned int > &node_to_grain, MooseMesh &mesh, const libMesh::PeriodicBoundaries *pb, unsigned int n_grains)
 
std::vector< unsigned intassignOpsToGrains (AdjacencyMatrix< Real > &adjacency_matrix, unsigned int n_grains, unsigned int n_ops, const MooseEnum &coloring_algorithm)
 
MooseEnum coloringAlgorithms ()
 
std::string coloringAlgorithmDescriptions ()
 

Variables

const unsigned int HALO_THICKNESS = 4
 

Function Documentation

◆ assignOpsToGrains()

std::vector< unsigned int > PolycrystalICTools::assignOpsToGrains ( AdjacencyMatrix< Real > &  adjacency_matrix,
unsigned int  n_grains,
unsigned int  n_ops,
const MooseEnum coloring_algorithm 
)

Definition at line 321 of file PolycrystalICTools.C.

325{
326 std::vector<unsigned int> grain_to_op(n_grains, GraphColoring::INVALID_COLOR);
327
328 // Use a simple backtracking coloring algorithm
329 if (coloring_algorithm == "bt")
330 {
331 if (!colorGraph(adjacency_matrix, grain_to_op, n_grains, n_ops, 0))
333 "Unable to find a valid Grain to op configuration, do you have enough op variables?");
334 }
335 else // PETSc Coloring algorithms
336 {
337 const std::string & ca_str = coloring_algorithm;
338 Real * am_data = adjacency_matrix.rawDataPtr();
340 am_data, n_grains, n_ops, grain_to_op, ca_str.c_str());
341 }
342
343 return grain_to_op;
344}
void mooseError(Args &&... args)
bool colorGraph(const PolycrystalICTools::AdjacencyMatrix< Real > &adjacency_matrix, std::vector< unsigned int > &colors, unsigned int n_vertices, unsigned int n_ops, unsigned int vertex)
Backtracking graph coloring routines.
const unsigned int INVALID_COLOR
void colorAdjacencyMatrix(PetscScalar *adjacency_matrix, unsigned int size, unsigned int colors, std::vector< unsigned int > &vertex_colors, const char *coloring_algorithm)
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real

◆ assignPointsToVariables()

std::vector< unsigned int > PolycrystalICTools::assignPointsToVariables ( const std::vector< Point > &  centerpoints,
const Real  op_num,
const MooseMesh mesh,
const MooseVariable var 
)

◆ assignPointToGrain()

unsigned int PolycrystalICTools::assignPointToGrain ( const Point &  p,
const std::vector< Point > &  centerpoints,
const MooseMesh mesh,
const MooseVariable var,
const Real  maxsize 
)

◆ buildElementalGrainAdjacencyMatrix()

AdjacencyMatrix< Real > PolycrystalICTools::buildElementalGrainAdjacencyMatrix ( const std::map< dof_id_type, unsigned int > &  element_to_grain,
MooseMesh mesh,
const libMesh::PeriodicBoundaries pb,
unsigned int  n_grains 
)

◆ buildGrainAdjacencyMatrix()

AdjacencyMatrix< Real > PolycrystalICTools::buildGrainAdjacencyMatrix ( const std::map< dof_id_type, unsigned int > &  entity_to_grain,
MooseMesh mesh,
const libMesh::PeriodicBoundaries pb,
unsigned int  n_grains,
bool  is_elemental 
)

◆ buildNodalGrainAdjacencyMatrix()

AdjacencyMatrix< Real > PolycrystalICTools::buildNodalGrainAdjacencyMatrix ( const std::map< dof_id_type, unsigned int > &  node_to_grain,
MooseMesh mesh,
const libMesh::PeriodicBoundaries pb,
unsigned int  n_grains 
)

◆ coloringAlgorithmDescriptions()

std::string PolycrystalICTools::coloringAlgorithmDescriptions ( )

Definition at line 353 of file PolycrystalICTools.C.

354{
355 return "The grain neighbor graph coloring algorithm to use. \"legacy\" is the original "
356 "algorithm "
357 "which does not guarantee a valid coloring. \"bt\" is a simple backtracking algorithm "
358 "which will produce a valid coloring but has potential exponential run time. The "
359 "remaining algorithms require PETSc but are recommended for larger problems (See "
360 "MatColoringType)";
361}

◆ coloringAlgorithms()

MooseEnum PolycrystalICTools::coloringAlgorithms ( )

Definition at line 347 of file PolycrystalICTools.C.

348{
349 return MooseEnum("legacy bt jp power greedy", "legacy");
350}

Variable Documentation

◆ HALO_THICKNESS

const unsigned int PolycrystalICTools::HALO_THICKNESS = 4

Definition at line 30 of file PolycrystalICTools.C.