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 "NodalBC.h" 13 : #include "ADNodalBC.h" 14 : 15 : template <bool is_ad> 16 : class GenericNodalBC : public NodalBC 17 : { 18 : public: 19 14569 : static InputParameters validParams() { return NodalBC::validParams(); }; 20 152 : GenericNodalBC(const InputParameters & parameters) : NodalBC(parameters) {} 21 : }; 22 : 23 : template <> 24 : class GenericNodalBC<true> : public ADNodalBC 25 : { 26 : public: 27 14405 : static InputParameters validParams() { return ADNodalBC::validParams(); }; 28 70 : GenericNodalBC(const InputParameters & parameters) : ADNodalBC(parameters) {} 29 : 30 : protected: 31 : virtual Real computeQpOffDiagJacobian(unsigned int jvar) = 0; 32 : }; 33 : 34 : #define usingGenericNodalBCMembers \ 35 : usingPostprocessorInterfaceMembers; \ 36 : usingMooseObjectMembers; \ 37 : usingTransientInterfaceMembers; \ 38 : usingTaggingInterfaceMembers; \ 39 : using GenericNodalBC<is_ad>::_qp; \ 40 : using GenericNodalBC<is_ad>::coupledValue; \ 41 : using GenericNodalBC<is_ad>::adCoupledValue; \ 42 : using GenericNodalBC<is_ad>::_u; \ 43 : using GenericNodalBC<is_ad>::_var; \ 44 : using GenericNodalBC<is_ad>::getVar; \ 45 : using Coupleable::coupled; \ 46 : using Coupleable::coupledComponents