https://mooseframework.inl.gov
Loading...
Searching...
No Matches
C1ICBase.C
Go to the documentation of this file.
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
32{
34
35 params.addParam<Real>("average", 0, "The average value");
36 params.addParam<Real>("amplitude", 1., "The amplitude");
37 params.addParam<Real>("length", 0.75, "The length");
38 params.addParam<Real>("width", .125, "The width");
39 params.addParam<Real>("buffer", 0.03125, "A small area between the max value and the interface");
40 params.addParam<Real>("interface", 0.03125, "The interface width");
41
42 return params;
43}
44
46 : InitialCondition(parameters),
47 _average(parameters.get<Real>("average")),
48 _amplitude(parameters.get<Real>("amplitude")),
49 _length(parameters.get<Real>("length")),
50 _width(parameters.get<Real>("width")),
51 _buffer(parameters.get<Real>("buffer")),
52 _interface(parameters.get<Real>("interface"))
53{
54}
55
56Number
58{
59 Real x = (r - _buffer) / _interface;
60
61 if (x < 0.0)
62 return (_average + _amplitude);
63 if (x > 1.0)
64 return (_average - _amplitude);
65
66 return ((1.0 + 4.0 * x * x * x - 6.0 * x * x) * _amplitude + _average);
67}
68
69Number
71{
72 Real x = (r - _buffer) / _interface;
73
74 if (x < 0.0)
75 return 0.0;
76 if (x > 1.0)
77 return 0.0;
78
79 return ((12.0 * x * x - 12.0 * x) * _amplitude);
80}
const std::vector< double > x
Real _amplitude
Definition C1ICBase.h:48
Real _interface
Definition C1ICBase.h:52
Number interfaceDerivative(Real r)
Definition C1ICBase.C:70
static InputParameters validParams()
Definition C1ICBase.C:31
C1ICBase(const InputParameters &parameters)
Definition C1ICBase.C:45
Number interfaceValue(Real r)
Definition C1ICBase.C:57
Real _buffer
Definition C1ICBase.h:51
Real _average
Definition C1ICBase.h:47
static InputParameters validParams()
void addParam(const std::string &name, const std::initializer_list< typename T::value_type > &value, const std::string &doc_string)