https://mooseframework.inl.gov
Loading...
Searching...
No Matches
PolycrystalICTools.h
Go to the documentation of this file.
1//* This file is part of the MOOSE framework
2//* https://mooseframework.inl.gov
3//*
4//* All rights reserved, see COPYRIGHT for full restrictions
5//* https://github.com/idaholab/moose/blob/master/COPYRIGHT
6//*
7//* Licensed under LGPL 2.1, please see LICENSE for details
8//* https://www.gnu.org/licenses/lgpl-2.1.html
9
10#pragma once
11
12#include "Moose.h"
13#include "libmesh/libmesh.h"
14#include "InitialCondition.h"
15
17{
18
23template <typename T>
25{
26public:
27 AdjacencyMatrix(unsigned int size) : _size(size), _data(size * size) {}
28
29 ~AdjacencyMatrix() = default;
30
31 // Get rid of copy constructors
34
35 // Use only move constructors
36 AdjacencyMatrix(AdjacencyMatrix && /* f */) = default;
37 AdjacencyMatrix & operator=(AdjacencyMatrix && /* f */) = default;
38
39 T & operator()(unsigned int i, unsigned int j) { return _data[i * _size + j]; }
40 T operator()(unsigned int i, unsigned int j) const { return _data[i * _size + j]; }
41
42 std::size_t size() const { return _size; }
43 T * rawDataPtr() { return _data.data(); }
44
45private:
46 const std::size_t _size;
47 std::vector<T> _data;
48};
49
50std::vector<unsigned int> assignPointsToVariables(const std::vector<Point> & centerpoints,
51 const Real op_num,
52 const MooseMesh & mesh,
53 const MooseVariable & var);
54
55unsigned int assignPointToGrain(const Point & p,
56 const std::vector<Point> & centerpoints,
57 const MooseMesh & mesh,
58 const MooseVariable & var,
59 const Real maxsize);
60
62buildGrainAdjacencyMatrix(const std::map<dof_id_type, unsigned int> & entity_to_grain,
63 MooseMesh & mesh,
65 unsigned int n_grains,
66 bool is_elemental);
67
69buildElementalGrainAdjacencyMatrix(const std::map<dof_id_type, unsigned int> & element_to_grain,
70 MooseMesh & mesh,
72 unsigned int n_grains);
73
75buildNodalGrainAdjacencyMatrix(const std::map<dof_id_type, unsigned int> & node_to_grain,
76 MooseMesh & mesh,
78 unsigned int n_grains);
79
80std::vector<unsigned int> assignOpsToGrains(AdjacencyMatrix<Real> & adjacency_matrix,
81 unsigned int n_grains,
82 unsigned int n_ops,
83 const MooseEnum & coloring_algorithm);
84
86
88}
Real f(Real x)
Test function for Brents method.
const Real p
const double T
Simple 2D block matrix indicating graph adjacency.
T & operator()(unsigned int i, unsigned int j)
AdjacencyMatrix(const AdjacencyMatrix &f)=delete
AdjacencyMatrix(AdjacencyMatrix &&)=default
T operator()(unsigned int i, unsigned int j) const
AdjacencyMatrix & operator=(AdjacencyMatrix &&)=default
AdjacencyMatrix & operator=(const AdjacencyMatrix &f)=delete
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 int > assignPointsToVariables(const std::vector< Point > &centerpoints, const Real op_num, const MooseMesh &mesh, const MooseVariable &var)
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 > 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)
std::vector< unsigned int > assignOpsToGrains(AdjacencyMatrix< Real > &adjacency_matrix, unsigned int n_grains, unsigned int n_ops, const MooseEnum &coloring_algorithm)
std::string coloringAlgorithmDescriptions()
unsigned int assignPointToGrain(const Point &p, const std::vector< Point > &centerpoints, const MooseMesh &mesh, const MooseVariable &var, const Real maxsize)