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 "AuxKernel.h" 13 : 14 : /** 15 : * Couples to some other value and modulates it by the mesh height in a direction. 16 : * 17 : * What this means is that a constant field will become a linear field that is zero 18 : * at the end of the domain that is most negative in the given direction and is that 19 : * given constant value at the extremum of the mesh in the given direction. 20 : * 21 : * This can be useful for specifying linear mesh "stretches". If you are wanting to stretch 22 : * a mesh by "5"... put 5 into the field that this couples to and this AuxKernel can create 23 : * a linear "displacement" field that will give that stretch. 24 : */ 25 : class CoupledDirectionalMeshHeightInterpolation : public AuxKernel 26 : { 27 : public: 28 : /** 29 : * Factory constructor, takes parameters so that all derived classes can be built using the same 30 : * constructor. 31 : */ 32 : static InputParameters validParams(); 33 : 34 : CoupledDirectionalMeshHeightInterpolation(const InputParameters & parameters); 35 : 36 40 : virtual ~CoupledDirectionalMeshHeightInterpolation() {} 37 : 38 : protected: 39 : virtual Real computeValue(); 40 : 41 : /// The value of a coupled variable to modulate 42 : const VariableValue & _coupled_val; 43 : 44 : /// The direction to interpolate in 45 : unsigned int _direction; 46 : 47 : Real _direction_min; 48 : Real _direction_max; 49 : };