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 "InputParameters.h" 13 : #include "MooseVariableBase.h" 14 : #include "MooseVariableFieldBase.h" 15 : 16 : /** 17 : * The value of a tagged vector for a given node and a given variable is coupled to 18 : * the current AuxVariable. TagVectorAux returns the coupled nodal value. 19 : */ 20 : template <class T> 21 : class TagAuxBase : public T 22 : { 23 : public: 24 : static InputParameters validParams(); 25 : 26 : TagAuxBase(const InputParameters & parameters); 27 : 28 : protected: 29 : const bool _scaled; 30 : /** 31 : * check the aux variable acting on this auxkernl has the consistent properties with the input 32 : * coupled variable 33 : * @param input_var Input coupled variable 34 : * @param aux_var Aux variable 35 : */ 36 : void checkCoupledVariable(const MooseVariableBase * input_var, 37 : const MooseVariableFieldBase * aux_var); 38 : 39 : using T::_var; 40 : using T::paramError; 41 : }; 42 : 43 : template <class T> 44 : InputParameters 45 130108 : TagAuxBase<T>::validParams() 46 : { 47 130108 : InputParameters params = T::validParams(); 48 : 49 130108 : params.addRequiredCoupledVar("v", 50 : "The coupled variable whose components are coupled to AuxVariable"); 51 260216 : params.set<ExecFlagEnum>("execute_on", true) = {EXEC_TIMESTEP_END}; 52 130108 : params.suppressParameter<ExecFlagEnum>("execute_on"); 53 390324 : params.addParam<bool>("scaled", 54 260216 : true, 55 : "Return value depending on the variable scaling/autoscaling. Set this to " 56 : "false to obtain unscaled physical reaction forces."); 57 130108 : return params; 58 130108 : } 59 : 60 : template <class T> 61 897 : TagAuxBase<T>::TagAuxBase(const InputParameters & parameters) 62 897 : : T(parameters), _scaled(this->template getParam<bool>("scaled")) 63 : { 64 897 : } 65 : 66 : template <class T> 67 : void 68 680 : TagAuxBase<T>::checkCoupledVariable(const MooseVariableBase * input_var, 69 : const MooseVariableFieldBase * aux_var) 70 : { 71 680 : if (input_var->feType() != aux_var->feType()) 72 8 : paramError("variable", 73 : "The AuxVariable this AuxKernel is acting on has to have the same order and family " 74 : "as the variable 'v'"); 75 672 : if (input_var->count() != aux_var->count()) 76 4 : paramError("variable", 77 : "The AuxVariable this AuxKernel is acting on has to have the same number of " 78 : "components as the variable 'v'"); 79 668 : }