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 "C1ICBase.h" 11 : 12 : // Portions of this code Copyright 2007-2009 Roy Stogner 13 : // 14 : // Permission is hereby granted, free of charge, to any person obtaining 15 : // a copy of this software and associated documentation files (the 16 : //"Software"), to deal in the Software without restriction, including 17 : // without limitation the rights to use, copy, modify, merge, publish, 18 : // distribute, sublicense, and/or sell copies of the Software, and to 19 : // permit persons to whom the Software is furnished to do so, subject to 20 : // the following conditions: 21 : // 22 : // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 23 : // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 24 : // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 25 : // IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 26 : // CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 27 : // TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 28 : // SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 29 : 30 : InputParameters 31 507 : C1ICBase::validParams() 32 : { 33 507 : InputParameters params = InitialCondition::validParams(); 34 : 35 1014 : params.addParam<Real>("average", 0, "The average value"); 36 1014 : params.addParam<Real>("amplitude", 1., "The amplitude"); 37 1014 : params.addParam<Real>("length", 0.75, "The length"); 38 1014 : params.addParam<Real>("width", .125, "The width"); 39 1014 : params.addParam<Real>("buffer", 0.03125, "A small area between the max value and the interface"); 40 1014 : params.addParam<Real>("interface", 0.03125, "The interface width"); 41 : 42 507 : return params; 43 0 : } 44 : 45 266 : C1ICBase::C1ICBase(const InputParameters & parameters) 46 : : InitialCondition(parameters), 47 266 : _average(parameters.get<Real>("average")), 48 266 : _amplitude(parameters.get<Real>("amplitude")), 49 266 : _length(parameters.get<Real>("length")), 50 266 : _width(parameters.get<Real>("width")), 51 266 : _buffer(parameters.get<Real>("buffer")), 52 532 : _interface(parameters.get<Real>("interface")) 53 : { 54 266 : } 55 : 56 : Number 57 200640 : C1ICBase::interfaceValue(Real r) 58 : { 59 200640 : Real x = (r - _buffer) / _interface; 60 : 61 200640 : if (x < 0.0) 62 89116 : return (_average + _amplitude); 63 111524 : if (x > 1.0) 64 37244 : return (_average - _amplitude); 65 : 66 74280 : return ((1.0 + 4.0 * x * x * x - 6.0 * x * x) * _amplitude + _average); 67 : } 68 : 69 : Number 70 0 : C1ICBase::interfaceDerivative(Real r) 71 : { 72 0 : Real x = (r - _buffer) / _interface; 73 : 74 0 : if (x < 0.0) 75 : return 0.0; 76 0 : if (x > 1.0) 77 : return 0.0; 78 : 79 0 : return ((12.0 * x * x - 12.0 * x) * _amplitude); 80 : }