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 : /** 31 : * Retrieve the PenetrationLocator associated with the two sides. 32 : */ 33 : PenetrationLocator & 34 : getPenetrationLocator(const BoundaryName & primary, const BoundaryName & secondary, Order order); 35 : 36 : /** 37 : * Retrieve the Quadrature PentrationLocator associated with the two sides. 38 : * 39 : * A "Quadrature" version means that it's going to find the penetration each quadrature point on 40 : * this boundary 41 : */ 42 : PenetrationLocator & getQuadraturePenetrationLocator(const BoundaryName & primary, 43 : const BoundaryName & secondary, 44 : Order order); 45 : 46 : /** 47 : * Retrieve the PentrationLocator associated with the two sides. 48 : */ 49 : NearestNodeLocator & getNearestNodeLocator(const BoundaryName & primary, 50 : const BoundaryName & secondary); 51 : 52 : /** 53 : * Retrieve a Quadrature NearestNodeLocator associated with the two sides. 54 : * 55 : * A "Quadrature" version means that it's going to find the nearest nodes to each quadrature point 56 : * on this boundary 57 : */ 58 : NearestNodeLocator & getQuadratureNearestNodeLocator(const BoundaryName & primary, 59 : const BoundaryName & secondary); 60 : 61 : /** 62 : * Whether any of this interface's methods have been called, e.g. whether the object that this 63 : * interface is for requires geometric search data 64 : */ 65 1172606 : bool requiresGeometricSearch() const { return _requires_geometric_search; } 66 : 67 : protected: 68 : GeometricSearchData & _geometric_search_data; 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 : bool _requires_geometric_search; 73 : };