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 : #include "InterfaceUserObjectBase.h" 11 : #include "SubProblem.h" 12 : #include "MooseTypes.h" 13 : #include "Assembly.h" 14 : 15 : #include "libmesh/remote_elem.h" 16 : 17 : InputParameters 18 144017 : InterfaceUserObjectBase::validParams() 19 : { 20 144017 : InputParameters params = UserObject::validParams(); 21 144017 : params += BoundaryRestrictableRequired::validParams(); 22 144017 : params += TwoMaterialPropertyInterface::validParams(); 23 144017 : params += TransientInterface::validParams(); 24 144017 : params.addClassDescription("Basic UO class to perform computation across an interface"); 25 : 26 : // Need one layer of ghosting 27 144017 : params.addRelationshipManager("ElementSideNeighborLayers", 28 : Moose::RelationshipManagerType::GEOMETRIC | 29 : Moose::RelationshipManagerType::ALGEBRAIC); 30 144017 : return params; 31 0 : } 32 : 33 707 : InterfaceUserObjectBase::InterfaceUserObjectBase(const InputParameters & parameters) 34 : : UserObject(parameters), 35 : BoundaryRestrictableRequired(this, false), // false for applying to sidesets 36 : TwoMaterialPropertyInterface(this, Moose::EMPTY_BLOCK_IDS, boundaryIDs()), 37 : NeighborCoupleableMooseVariableDependencyIntermediateInterface(this, false, false), 38 : TransientInterface(this), 39 : ElementIDInterface(this), 40 1414 : _mesh(_subproblem.mesh()), 41 707 : _q_point(_assembly.qPointsFace()), 42 707 : _qrule(_assembly.qRuleFace()), 43 707 : _JxW(_assembly.JxWFace()), 44 707 : _coord(_assembly.coordTransformation()), 45 707 : _normals(_assembly.normals()), 46 707 : _current_elem(_assembly.elem()), 47 707 : _current_elem_volume(_assembly.elemVolume()), 48 707 : _current_side(_assembly.side()), 49 707 : _current_side_elem(_assembly.sideElem()), 50 707 : _current_side_volume(_assembly.sideElemVolume()), 51 707 : _neighbor_elem(_assembly.neighbor()), 52 1414 : _current_neighbor_volume(_assembly.neighborVolume()) 53 : { 54 707 : }