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 "UserObject.h" 13 : #include "BoundaryRestrictableRequired.h" 14 : #include "TwoMaterialPropertyInterface.h" 15 : #include "NeighborCoupleableMooseVariableDependencyIntermediateInterface.h" 16 : #include "TransientInterface.h" 17 : #include "ElementIDInterface.h" 18 : #include "FaceInfo.h" 19 : 20 : /** 21 : * Base class for implementing interface user objects 22 : */ 23 : class InterfaceUserObjectBase 24 : : public UserObject, 25 : public BoundaryRestrictableRequired, 26 : public TwoMaterialPropertyInterface, 27 : public NeighborCoupleableMooseVariableDependencyIntermediateInterface, 28 : public TransientInterface, 29 : public ElementIDInterface 30 : { 31 : public: 32 : static InputParameters validParams(); 33 : 34 : InterfaceUserObjectBase(const InputParameters & parameters); 35 : 36 : protected: 37 : /** 38 : * Execute method. 39 : */ 40 0 : virtual void execute() override {} 41 : 42 : /** 43 : * Called before execute() is ever called so that data can be cleared. 44 : */ 45 0 : virtual void initialize() override {} 46 : 47 : MooseMesh & _mesh; 48 : 49 : const MooseArray<Point> & _q_point; 50 : const QBase * const & _qrule; 51 : const MooseArray<Real> & _JxW; 52 : const MooseArray<Real> & _coord; 53 : const MooseArray<Point> & _normals; 54 : 55 : /// current element 56 : const Elem * const & _current_elem; 57 : /// the volume of the current element 58 : const Real & _current_elem_volume; 59 : /// current side of the current element 60 : const unsigned int & _current_side; 61 : /// the side element 62 : const Elem * const & _current_side_elem; 63 : /// current side volume 64 : const Real & _current_side_volume; 65 : 66 : /// The neighboring element 67 : const Elem * const & _neighbor_elem; 68 : /// current neighbor volume 69 : const Real & _current_neighbor_volume; 70 : };