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 : // MOOSE includes 13 : #include "MaterialAuxBase.h" 14 : 15 : /** 16 : * A base class for the various Material related AuxKernel objects 17 : */ 18 : template <typename T, bool is_ad> 19 : class MaterialStdVectorAuxBaseTempl : public MaterialAuxBaseTempl<std::vector<T>, is_ad> 20 : { 21 : public: 22 : static InputParameters validParams(); 23 : 24 : MaterialStdVectorAuxBaseTempl(const InputParameters & parameters); 25 : 26 : protected: 27 : /// index of the vector element 28 : unsigned int _index; 29 : 30 : using MaterialAuxBaseTempl<std::vector<T>, is_ad>::_full_value; 31 : }; 32 : 33 : template <typename T, bool is_ad> 34 : InputParameters 35 43135 : MaterialStdVectorAuxBaseTempl<T, is_ad>::validParams() 36 : { 37 43135 : InputParameters params = MaterialAuxBaseTempl<T, is_ad>::validParams(); 38 43135 : params.addParam<unsigned int>("index", 0, "The index to consider for this kernel"); 39 43135 : return params; 40 0 : } 41 : 42 : template <typename T, bool is_ad> 43 180 : MaterialStdVectorAuxBaseTempl<T, is_ad>::MaterialStdVectorAuxBaseTempl( 44 : const InputParameters & parameters) 45 : : MaterialAuxBaseTempl<std::vector<T>, is_ad>(parameters), 46 180 : _index(this->template getParam<unsigned int>("index")) 47 : { 48 180 : } 49 : 50 : template <typename T = Real> 51 : using MaterialStdVectorAuxBase = MaterialStdVectorAuxBaseTempl<T, false>;