Assigns grain subdomain IDs to a volume mesh based on watertight closed boundaries in an external boundary mesh, using ray casting accelerated by a k-d tree. More...
#include <SubdomainGrainIDGenerator.h>
Classes | |
| struct | SubdomainCheckerEntry |
| Cache of bounding box and checker pointers for fast spatial queries. More... | |
Public Types | |
| typedef DataFileName | DataFileParameterType |
Public Member Functions | |
| SubdomainGrainIDGenerator (const InputParameters ¶meters) | |
| std::unique_ptr< libMesh::MeshBase > | generate () override |
| std::unique_ptr< CSG::CSGBase > | generateInternalCSG () |
| std::unique_ptr< MeshBase > | generateInternal () |
| const std::set< MeshGeneratorName > & | getRequestedMeshGenerators () const |
| const std::set< MeshGeneratorName > & | getRequestedMeshGeneratorsForSub () const |
| void | addParentMeshGenerator (const MeshGenerator &mg, const AddParentChildKey) |
| void | addChildMeshGenerator (const MeshGenerator &mg, const AddParentChildKey) |
| const std::set< const MeshGenerator *, Comparator > & | getParentMeshGenerators () const |
| const std::set< const MeshGenerator *, Comparator > & | getChildMeshGenerators () const |
| const std::set< const MeshGenerator *, Comparator > & | getSubMeshGenerators () const |
| bool | isParentMeshGenerator (const MeshGeneratorName &name, const bool direct=true) const |
| bool | isChildMeshGenerator (const MeshGeneratorName &name, const bool direct=true) const |
| bool | isNullMeshName (const MeshGeneratorName &name) const |
| bool | hasSaveMesh () const |
| bool | hasOutput () const |
| const std::string & | getSavedMeshName () const |
| bool | hasGenerateData () const |
| bool | hasGenerateCSG () const |
| bool | isDataOnly () const |
| virtual bool | enabled () const |
| std::shared_ptr< MooseObject > | getSharedPtr () |
| std::shared_ptr< const MooseObject > | getSharedPtr () const |
| bool | isKokkosObject () const |
| MooseApp & | getMooseApp () const |
| const std::string & | type () const |
| const std::string & | name () const |
| std::string | typeAndName () const |
| MooseObjectParameterName | uniqueParameterName (const std::string ¶meter_name) const |
| MooseObjectName | uniqueName () const |
| const InputParameters & | parameters () const |
| const hit::Node * | getHitNode () const |
| bool | hasBase () const |
| const std::string & | getBase () const |
| const T & | getParam (const std::string &name) const |
| std::vector< std::pair< T1, T2 > > | getParam (const std::string ¶m1, const std::string ¶m2) const |
| const T * | queryParam (const std::string &name) const |
| const T & | getRenamedParam (const std::string &old_name, const std::string &new_name) const |
| T | getCheckedPointerParam (const std::string &name, const std::string &error_string="") const |
| bool | isParamValid (const std::string &name) const |
| bool | isParamSetByUser (const std::string &name) const |
| void | connectControllableParams (const std::string ¶meter, const std::string &object_type, const std::string &object_name, const std::string &object_parameter) const |
| void | paramError (const std::string ¶m, Args... args) const |
| void | paramWarning (const std::string ¶m, Args... args) const |
| void | paramWarning (const std::string ¶m, Args... args) const |
| void | paramInfo (const std::string ¶m, Args... args) const |
| std::string | messagePrefix (const bool hit_prefix=true) const |
| std::string | errorPrefix (const std::string &) const |
| void | mooseError (Args &&... args) const |
| void | mooseDocumentedError (const std::string &repo_name, const unsigned int issue_num, Args &&... args) const |
| void | mooseErrorNonPrefixed (Args &&... args) const |
| void | mooseWarning (Args &&... args) const |
| void | mooseWarning (Args &&... args) const |
| void | mooseWarningNonPrefixed (Args &&... args) const |
| void | mooseWarningNonPrefixed (Args &&... args) const |
| void | mooseDeprecated (Args &&... args) const |
| void | mooseDeprecated (Args &&... args) const |
| void | mooseDeprecatedNoTrace (Args &&... args) const |
| void | mooseInfo (Args &&... args) const |
| void | callMooseError (std::string msg, const bool with_prefix, const hit::Node *node=nullptr, const bool show_trace=true) const |
| std::string | getDataFileName (const std::string ¶m) const |
| std::string | getDataFileNameByName (const std::string &relative_path) const |
| std::string | getDataFilePath (const std::string &relative_path) const |
| const Parallel::Communicator & | comm () const |
| processor_id_type | n_processors () const |
| processor_id_type | processor_id () const |
Static Public Member Functions | |
| static InputParameters | validParams () |
| static bool | hasGenerateData (const InputParameters ¶ms) |
| static bool | hasGenerateCSG (const InputParameters ¶ms) |
| static void | callMooseError (MooseApp *const app, const InputParameters ¶ms, std::string msg, const bool with_prefix, const hit::Node *node, const bool show_trace=true) |
| static void | setHasGenerateData (InputParameters ¶ms) |
| static void | setHasGenerateCSG (InputParameters ¶ms) |
Public Attributes | |
| usingCombinedWarningSolutionWarnings | |
| const ConsoleStream | _console |
Static Public Attributes | |
| static const std::string | data_only_param |
| static const std::string | type_param |
| static const std::string | name_param |
| static const std::string | unique_name_param |
| static const std::string | app_param |
| static const std::string | moose_base_param |
| static const std::string | kokkos_object_param |
| static constexpr auto | SYSTEM |
| static constexpr auto | NAME |
Protected Member Functions | |
| void | buildSubdomainGroupedData () |
| build the data structure grouping by different subdomains | |
| void | buildInOutTesters () |
| Build the IN-OUT testers for each subdomain. | |
| virtual void | generateData () |
| virtual std::unique_ptr< CSG::CSGBase > | generateCSG () |
| T & | copyMeshProperty (const std::string &target_data_name, const std::string &source_data_name, const std::string &source_mesh) |
| T & | copyMeshProperty (const std::string &source_data_name, const std::string &source_mesh) |
| std::unique_ptr< MeshBase > & | getMesh (const std::string ¶m_name, const bool allow_invalid=false) |
| std::vector< std::unique_ptr< MeshBase > * > | getMeshes (const std::string ¶m_name) |
| std::unique_ptr< MeshBase > & | getMeshByName (const MeshGeneratorName &mesh_generator_name) |
| std::vector< std::unique_ptr< MeshBase > * > | getMeshesByName (const std::vector< MeshGeneratorName > &mesh_generator_names) |
| std::unique_ptr< CSG::CSGBase > & | getCSGBase (const std::string ¶m_name) |
| std::unique_ptr< CSG::CSGBase > & | getCSGBaseByName (const MeshGeneratorName &mesh_generator_name) |
| std::vector< std::unique_ptr< CSG::CSGBase > * > | getCSGBases (const std::string ¶m_name) |
| std::vector< std::unique_ptr< CSG::CSGBase > * > | getCSGBasesByName (const std::vector< MeshGeneratorName > &mesh_generator_names) |
| void | declareMeshForSub (const std::string ¶m_name) |
| void | declareMeshesForSub (const std::string ¶m_name) |
| void | declareMeshForSubByName (const MeshGeneratorName &mesh_generator_name) |
| void | declareMeshesForSubByName (const std::vector< MeshGeneratorName > &mesh_generator_names) |
| std::unique_ptr< MeshBase > | buildMeshBaseObject (unsigned int dim=libMesh::invalid_uint) |
| std::unique_ptr< ReplicatedMesh > | buildReplicatedMesh (unsigned int dim=libMesh::invalid_uint) |
| std::unique_ptr< DistributedMesh > | buildDistributedMesh (unsigned int dim=libMesh::invalid_uint) |
| void | addMeshSubgenerator (const std::string &type, const std::string &name, Ts... extra_input_parameters) |
| void | addMeshSubgenerator (const std::string &type, const std::string &name, InputParameters params) |
| void | declareNullMeshName (const MeshGeneratorName &name) |
| void | flagInvalidSolutionInternal (const InvalidSolutionID invalid_solution_id) const |
| InvalidSolutionID | registerInvalidSolutionInternal (const std::string &message, const bool warning) const |
| const T & | getMeshProperty (const std::string &data_name, const std::string &prefix) |
| const T & | getMeshProperty (const std::string &data_name) |
| bool | hasMeshProperty (const std::string &data_name, const std::string &prefix) const |
| bool | hasMeshProperty (const std::string &data_name, const std::string &prefix) const |
| bool | hasMeshProperty (const std::string &data_name) const |
| bool | hasMeshProperty (const std::string &data_name) const |
| std::string | meshPropertyName (const std::string &data_name) const |
| T & | declareMeshProperty (const std::string &data_name, Args &&... args) |
| T & | declareMeshProperty (const std::string &data_name, const T &data_value) |
| T & | declareMeshProperty (const std::string &data_name, Args &&... args) |
| T & | declareMeshProperty (const std::string &data_name, const T &data_value) |
| T & | setMeshProperty (const std::string &data_name, Args &&... args) |
| T & | setMeshProperty (const std::string &data_name, const T &data_value) |
| T & | setMeshProperty (const std::string &data_name, Args &&... args) |
| T & | setMeshProperty (const std::string &data_name, const T &data_value) |
Static Protected Member Functions | |
| static bool | boundingBoxesIntersect (const BoundingBox &lhs, const BoundingBox &rhs, const Real tolerance) |
| Check whether two bounding boxes overlap within a small tolerance. | |
| static std::string | meshPropertyName (const std::string &data_name, const std::string &prefix) |
Protected Attributes | |
| std::unique_ptr< libMesh::MeshBase > & | _boundary_mesh |
| Reference to the external boundary mesh defining grain boundaries. | |
| std::unordered_map< SubdomainID, std::vector< Point > > | _centroids_by_subdomain |
| The centroids of the boundary elements grouped by subdomains. | |
| std::unordered_map< SubdomainID, std::vector< std::unique_ptr< SurfaceElement > > > | _boundary_elements_by_subdomain |
| The boundary elements grouped by subdomains. | |
| std::unordered_map< SubdomainID, BoundingBox > | _bboxes_by_subdomain |
| The bounding boxes of the boundary elements grouped by subdomains. | |
| std::unordered_map< SubdomainID, std::unique_ptr< AdaptiveRayContainmentCheck > > | _subdomain_id_checkers |
| The IN-OUT testers for each subdomain. | |
| std::vector< SubdomainCheckerEntry > | _checker_entries |
| Cache contiguous checker metadata for faster per-element scans. | |
| Point | _ray_direction |
| Ray shooting direction in Point format. | |
| Real | _eps |
| eps for intersection or on surface checking | |
| unsigned int | _leaf_max_size |
| Maximum number of boundary-element centroids in a leaf node of the k-d tree. | |
| std::unique_ptr< libMesh::MeshBase > | _boundary_owned |
| The boundary mesh to use for identifying grain IDs. | |
| std::unique_ptr< libMesh::MeshBase > & | _input |
| The input mesh to modify. | |
| MooseMesh *const | _mesh |
| const bool & | _enabled |
| MooseApp & | _app |
| Factory & | _factory |
| ActionFactory & | _action_factory |
| const std::string & | _type |
| const std::string & | _name |
| const InputParameters & | _pars |
| const Parallel::Communicator & | _communicator |
| const Real | _lambda |
| Threshold applied to the fraction outside the retained domain for a partial element. | |
| const Order | _qrule_order |
| Quadrature order used to estimate the retained-domain fraction. | |
| const SBMUtils::InterceptedSubdomainPolicy | _intercepted_subdomain_policy |
| Policy for assigning partial elements to a dedicated intercepted subdomain. | |
Private Member Functions | |
| virtual std::string | meshPropertyPrefix (const std::string &) const override final |
| void | checkGetMesh (const MeshGeneratorName &mesh_generator_name, const std::string ¶m_name) const |
| const MeshGeneratorName * | getMeshGeneratorNameFromParam (const std::string ¶m_name, const bool allow_invalid) const |
| const std::vector< MeshGeneratorName > & | getMeshGeneratorNamesFromParam (const std::string ¶m_name) const |
| RestartableDataValue & | setMeshPropertyHelper (const std::string &data_name) |
| const RestartableDataValue & | getMeshPropertyInternal (const std::string &data_name, const std::string &prefix) const |
| void | mooseErrorInternal (Args &&... args) const |
Static Private Member Functions | |
| static const hit::Node * | getHitNode (const InputParameters ¶ms) |
| static std::string | messagePrefix (const InputParameters ¶ms, const bool hit_prefix) |
Private Attributes | |
| std::set< MeshGeneratorName > | _requested_mesh_generators |
| std::set< MeshGeneratorName > | _requested_mesh_generators_for_sub |
| std::vector< std::pair< std::string, std::unique_ptr< MeshBase > * > > | _requested_meshes |
| std::vector< std::pair< std::string, std::unique_ptr< CSG::CSGBase > * > > | _requested_csg_bases |
| std::unique_ptr< MeshBase > | _null_mesh |
| std::unique_ptr< CSG::CSGBase > | _null_csg_base |
| std::set< const MeshGenerator *, Comparator > | _parent_mesh_generators |
| std::set< const MeshGenerator *, Comparator > | _child_mesh_generators |
| std::set< const MeshGenerator *, Comparator > | _sub_mesh_generators |
| std::set< std::string > | _null_mesh_names |
| const std::string & | _save_with_name |
| const bool | _data_only |
| const ParallelParamObject & | _parent |
| const MooseBase & | _si_moose_base |
| const FEProblemBase * | _si_problem |
| MooseApp & | _meta_data_app |
| const MooseObject *const | _meta_data_object |
Assigns grain subdomain IDs to a volume mesh based on watertight closed boundaries in an external boundary mesh, using ray casting accelerated by a k-d tree.
Definition at line 23 of file SubdomainGrainIDGenerator.h.
| SubdomainGrainIDGenerator::SubdomainGrainIDGenerator | ( | const InputParameters & | parameters | ) |
Definition at line 52 of file SubdomainGrainIDGenerator.C.
|
staticprotected |
Check whether two bounding boxes overlap within a small tolerance.
Definition at line 234 of file SubdomainGrainIDGenerator.C.
Referenced by generate().
|
protected |
Build the IN-OUT testers for each subdomain.
Definition at line 210 of file SubdomainGrainIDGenerator.C.
Referenced by generate().
|
protected |
build the data structure grouping by different subdomains
Definition at line 122 of file SubdomainGrainIDGenerator.C.
Referenced by generate().
|
overridevirtual |
Implements MeshGenerator.
Definition at line 62 of file SubdomainGrainIDGenerator.C.
|
static |
Definition at line 16 of file SubdomainGrainIDGenerator.C.
|
protected |
The bounding boxes of the boundary elements grouped by subdomains.
Definition at line 53 of file SubdomainGrainIDGenerator.h.
Referenced by buildInOutTesters(), and buildSubdomainGroupedData().
|
protected |
The boundary elements grouped by subdomains.
Definition at line 51 of file SubdomainGrainIDGenerator.h.
Referenced by buildInOutTesters(), and buildSubdomainGroupedData().
|
protected |
Reference to the external boundary mesh defining grain boundaries.
Definition at line 44 of file SubdomainGrainIDGenerator.h.
Referenced by buildSubdomainGroupedData(), and generate().
|
protected |
The boundary mesh to use for identifying grain IDs.
Definition at line 70 of file SubdomainGrainIDGenerator.h.
Referenced by buildSubdomainGroupedData().
|
protected |
The centroids of the boundary elements grouped by subdomains.
Definition at line 48 of file SubdomainGrainIDGenerator.h.
Referenced by buildInOutTesters(), and buildSubdomainGroupedData().
|
protected |
Cache contiguous checker metadata for faster per-element scans.
Definition at line 59 of file SubdomainGrainIDGenerator.h.
Referenced by buildInOutTesters(), and generate().
|
protected |
eps for intersection or on surface checking
Definition at line 65 of file SubdomainGrainIDGenerator.h.
Referenced by buildInOutTesters(), and generate().
|
protectedinherited |
The input mesh to modify.
Definition at line 27 of file SBMSubdomainGeneratorBase.h.
Referenced by generate(), and SubdomainInterceptedGenerator::generate().
|
protectedinherited |
Policy for assigning partial elements to a dedicated intercepted subdomain.
Definition at line 36 of file SBMElementClassificationInterface.h.
Referenced by InterceptedElementModifier::computeSubdomainID(), SubdomainElementModifier::computeSubdomainID(), generate(), SubdomainInterceptedGenerator::generate(), and SBMElementClassificationInterface::SBMElementClassificationInterface().
|
protectedinherited |
Threshold applied to the fraction outside the retained domain for a partial element.
Definition at line 30 of file SBMElementClassificationInterface.h.
Referenced by InterceptedElementModifier::computeSubdomainID(), SubdomainElementModifier::computeSubdomainID(), generate(), and SubdomainInterceptedGenerator::generate().
|
protected |
Maximum number of boundary-element centroids in a leaf node of the k-d tree.
Definition at line 67 of file SubdomainGrainIDGenerator.h.
Referenced by buildInOutTesters().
|
protectedinherited |
Quadrature order used to estimate the retained-domain fraction.
Definition at line 33 of file SBMElementClassificationInterface.h.
Referenced by InterceptedElementModifier::computeSubdomainID(), SubdomainElementModifier::computeSubdomainID(), generate(), and SubdomainInterceptedGenerator::generate().
|
protected |
Ray shooting direction in Point format.
Definition at line 62 of file SubdomainGrainIDGenerator.h.
Referenced by buildInOutTesters().
|
protected |
The IN-OUT testers for each subdomain.
Definition at line 57 of file SubdomainGrainIDGenerator.h.
Referenced by buildInOutTesters().