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 "InterfaceKernel.h" 13 : #include "ADInterfaceKernel.h" 14 : 15 : template <typename T, bool is_ad> 16 : class GenericInterfaceKernelTempl : public InterfaceKernelTempl<T> 17 : { 18 : public: 19 29095 : static InputParameters validParams() { return InterfaceKernelTempl<T>::validParams(); }; 20 295 : GenericInterfaceKernelTempl(const InputParameters & parameters) 21 295 : : InterfaceKernelTempl<T>(parameters) 22 : { 23 295 : } 24 : }; 25 : 26 : template <typename T> 27 : class GenericInterfaceKernelTempl<T, true> : public ADInterfaceKernelTempl<T> 28 : { 29 : public: 30 28555 : static InputParameters validParams() { return ADInterfaceKernelTempl<T>::validParams(); }; 31 13 : GenericInterfaceKernelTempl(const InputParameters & parameters) 32 13 : : ADInterfaceKernelTempl<T>(parameters) 33 : { 34 13 : } 35 : }; 36 : 37 : template <bool is_ad> 38 : using GenericInterfaceKernel = GenericInterfaceKernelTempl<Real, is_ad>; 39 : 40 : #define usingGenericInterfaceKernelTemplMembers(T) \ 41 : usingFunctionInterfaceMembers; \ 42 : usingPostprocessorInterfaceMembers; \ 43 : usingMooseObjectMembers; \ 44 : usingTransientInterfaceMembers; \ 45 : usingTaggingInterfaceMembers; \ 46 : using GenericInterfaceKernelTempl<T, is_ad>::_qp; \ 47 : using GenericInterfaceKernelTempl<T, is_ad>::_i; \ 48 : using GenericInterfaceKernelTempl<T, is_ad>::_j; \ 49 : using GenericInterfaceKernelTempl<T, is_ad>::_u; \ 50 : using GenericInterfaceKernelTempl<T, is_ad>::_phi; \ 51 : using GenericInterfaceKernelTempl<T, is_ad>::_test; \ 52 : using GenericInterfaceKernelTempl<T, is_ad>::_q_point; \ 53 : using GenericInterfaceKernelTempl<T, is_ad>::_var; \ 54 : using GenericInterfaceKernelTempl<T, is_ad>::_neighbor_value; \ 55 : using GenericInterfaceKernelTempl<T, is_ad>::_test_neighbor; \ 56 : using GenericInterfaceKernelTempl<T, is_ad>::_phi_neighbor; \ 57 : using Coupleable::getVar; \ 58 : using Coupleable::coupled; \ 59 : using Coupleable::coupledComponents 60 : 61 : #define usingGenericInterfaceKernelMembers usingGenericInterfaceKernelTemplMembers(Real)