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 "DiscreteNucleationAux.h" 11 : #include "DiscreteNucleationMap.h" 12 : 13 : registerMooseObject("PhaseFieldApp", DiscreteNucleationAux); 14 : 15 : InputParameters 16 69 : DiscreteNucleationAux::validParams() 17 : { 18 69 : InputParameters params = AuxKernel::validParams(); 19 69 : params.addClassDescription("Project the DiscreteNucleationMap state onto an AuxVariable"); 20 138 : params.addRequiredParam<UserObjectName>("map", "DiscreteNucleationMap user object"); 21 138 : params.addParam<Real>("no_nucleus_value", 0.0, "Variable value indicating no nucleus is present"); 22 138 : params.addParam<Real>( 23 138 : "nucleus_value", 1.0, "Variable value indicating the presence of a nucleus"); 24 69 : return params; 25 0 : } 26 : 27 36 : DiscreteNucleationAux::DiscreteNucleationAux(const InputParameters & params) 28 : : AuxKernel(params), 29 36 : _map(getUserObject<DiscreteNucleationMap>("map")), 30 72 : _v0(getParam<Real>("no_nucleus_value")), 31 108 : _v1(getParam<Real>("nucleus_value")) 32 : { 33 36 : if (isNodal()) 34 0 : paramError("variable", "This kernel must operate on an elemental AuxVariable."); 35 36 : } 36 : 37 : void 38 1256200 : DiscreteNucleationAux::precalculateValue() 39 : { 40 : // check if a nucleation event list is available for the current element 41 1256200 : _nucleus = &_map.nuclei(_current_elem); 42 1256200 : } 43 : 44 : Real 45 4952800 : DiscreteNucleationAux::computeValue() 46 : { 47 4952800 : return (*_nucleus)[_qp] * (_v1 - _v0) + _v0; 48 : }