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 : #include "NSLiquidFractionAux.h" 11 : #include "MooseMesh.h" 12 : #include "NS.h" 13 : 14 : registerMooseObject("NavierStokesApp", NSLiquidFractionAux); 15 : 16 : InputParameters 17 75 : NSLiquidFractionAux::validParams() 18 : { 19 75 : InputParameters params = AuxKernel::validParams(); 20 75 : params.addClassDescription("Computes liquid fraction $f_l$ given the temperature."); 21 75 : params.addRequiredParam<MooseFunctorName>(NS::temperature, "The temperature."); 22 150 : params.addRequiredParam<MooseFunctorName>("T_solidus", "The solidus temperature."); 23 150 : params.addRequiredParam<MooseFunctorName>("T_liquidus", "The liquidus temperature."); 24 75 : return params; 25 0 : } 26 : 27 40 : NSLiquidFractionAux::NSLiquidFractionAux(const InputParameters & parameters) 28 : : AuxKernel(parameters), 29 80 : _T(getFunctor<Real>(NS::temperature)), 30 80 : _T_solidus(getFunctor<Real>("T_solidus")), 31 120 : _T_liquidus(getFunctor<Real>("T_liquidus")) 32 : { 33 40 : } 34 : 35 : Real 36 32280 : NSLiquidFractionAux::computeValue() 37 : { 38 : using namespace MetaPhysicL; 39 : 40 32280 : const auto elem_arg = makeElemArg(_current_elem); 41 32280 : const auto state = determineState(); 42 : 43 32280 : if (_T_liquidus(elem_arg, state) < _T_solidus(elem_arg, state)) 44 0 : mooseError("The specified liquidus temperature is smaller than the solidus temperature."); 45 : 46 32280 : Real fl = (_T(elem_arg, state) - _T_solidus(elem_arg, state)) / 47 32280 : (_T_liquidus(elem_arg, state) - _T_solidus(elem_arg, state)); 48 : 49 32280 : fl = (fl > 1.0) ? 1.0 : fl; 50 10758 : fl = (fl < 0.0) ? 0.0 : fl; 51 : 52 32280 : return fl; 53 : }