https://mooseframework.inl.gov
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 
56 Number
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 
69 Number
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 }
void addParam(const std::string &name, const std::initializer_list< typename T::value_type > &value, const std::string &doc_string)
Real _interface
Definition: C1ICBase.h:52
static InputParameters validParams()
Definition: C1ICBase.C:31
Number interfaceDerivative(Real r)
Definition: C1ICBase.C:70
static InputParameters validParams()
Real _average
Definition: C1ICBase.h:47
Real _amplitude
Definition: C1ICBase.h:48
Number interfaceValue(Real r)
Definition: C1ICBase.C:57
const std::vector< double > x
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
C1ICBase(const InputParameters &parameters)
Definition: C1ICBase.C:45
Real Number
Real _buffer
Definition: C1ICBase.h:51
const Elem & get(const ElemType type_in)