Line data Source code
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 "MooseTypes.h" 13 : 14 : #include "libmesh/enum_order.h" 15 : 16 : // Forward Declarations 17 : class GeometricSearchData; 18 : class PenetrationLocator; 19 : class NearestNodeLocator; 20 : class MooseObject; 21 : class BoundaryName; 22 : 23 : class GeometricSearchInterface 24 : { 25 : public: 26 : static InputParameters validParams(); 27 : 28 : GeometricSearchInterface(const MooseObject * moose_object); 29 : 30 : #ifdef MOOSE_KOKKOS_ENABLED 31 : /** 32 : * Special constructor used for Kokkos functor copy during parallel dispatch 33 : */ 34 : GeometricSearchInterface(const GeometricSearchInterface & object, 35 : const Moose::Kokkos::FunctorCopy & key); 36 : #endif 37 : 38 : /** 39 : * Retrieve the PenetrationLocator associated with the two sides. 40 : */ 41 : PenetrationLocator & 42 : getPenetrationLocator(const BoundaryName & primary, const BoundaryName & secondary, Order order); 43 : 44 : /** 45 : * Retrieve the Quadrature PentrationLocator associated with the two sides. 46 : * 47 : * A "Quadrature" version means that it's going to find the penetration each quadrature point on 48 : * this boundary 49 : */ 50 : PenetrationLocator & getQuadraturePenetrationLocator(const BoundaryName & primary, 51 : const BoundaryName & secondary, 52 : Order order); 53 : 54 : /** 55 : * Retrieve the PentrationLocator associated with the two sides. 56 : */ 57 : NearestNodeLocator & getNearestNodeLocator(const BoundaryName & primary, 58 : const BoundaryName & secondary); 59 : 60 : /** 61 : * Retrieve a Quadrature NearestNodeLocator associated with the two sides. 62 : * 63 : * A "Quadrature" version means that it's going to find the nearest nodes to each quadrature point 64 : * on this boundary 65 : */ 66 : NearestNodeLocator & getQuadratureNearestNodeLocator(const BoundaryName & primary, 67 : const BoundaryName & secondary); 68 : 69 : /** 70 : * Whether any of this interface's methods have been called, e.g. whether the object that this 71 : * interface is for requires geometric search data 72 : */ 73 1303593 : bool requiresGeometricSearch() const { return _requires_geometric_search; } 74 : 75 : protected: 76 : GeometricSearchData & _geometric_search_data; 77 : 78 : /// Whether any of this interface's methods have been called, e.g. whether the object that this 79 : /// interface is for requires geometric search data 80 : bool _requires_geometric_search; 81 : };