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 "ModularGapConductanceConstraint.h" 13 : #include "InterfaceUserObjectBase.h" 14 : #include "ADFunctorInterface.h" 15 : 16 : /** 17 : * Base class for gap flux models used by ModularGapConductanceConstraint 18 : */ 19 : class GapFluxModelBase : public InterfaceUserObjectBase, public ADFunctorInterface 20 : { 21 : public: 22 : static InputParameters validParams(); 23 : 24 : GapFluxModelBase(const InputParameters & parameters); 25 : 26 : /** 27 : * Cache geometry-related information from the mortar constraint 28 : */ 29 : virtual ADReal 30 : computeFluxInternal(const ModularGapConductanceConstraint & mortar_constraint) const; 31 : 32 : /** 33 : * Compute gap physics used cache information in GapFluxModelBase 34 : */ 35 : virtual ADReal computeFlux() const = 0; 36 : 37 0 : virtual void finalize() final{}; 38 0 : virtual void threadJoin(const UserObject &) final{}; 39 : 40 : protected: 41 : mutable unsigned int _qp; 42 : mutable ADReal _gap_width; 43 : mutable ADReal _surface_integration_factor; 44 : mutable ADReal _adjusted_length; 45 : mutable ADReal _normal_pressure; 46 : 47 : /// The secondary quadrature point location 48 : mutable Moose::ElemPointArg _secondary_point; 49 : /// The primary quadrature point location 50 : mutable Moose::ElemPointArg _primary_point; 51 : };