www.mooseframework.org
FunctionalBasisInterface.C
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://www.mooseframework.org
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 
11 
12 MooseEnum FunctionalBasisInterface::_domain_options("x=0 y=1 z=2");
13 
14 /*
15  * The default constructor is used to initialize a series before knowing the number of terms in the
16  * series. This is called from the CSBI, and in the body of the CSBI constructor, setNumberOfTerms()
17  * is used to after-the-fact perform the same initializations that would be done with the
18  * non-default constructor.
19  */
21  : _is_cache_invalid(true), _is_generation(false)
22 {
23 }
24 
25 /*
26  * The non-default constructor should be used to initialize a series if the number of terms is
27  * known, such as with a single series.
28  */
29 FunctionalBasisInterface::FunctionalBasisInterface(const unsigned int number_of_terms)
30  : _number_of_terms(number_of_terms),
31  _is_cache_invalid(true),
33  _is_generation(false)
34 {
35  _basis_evaluation.shrink_to_fit();
36 }
37 
38 Real FunctionalBasisInterface::operator[](std::size_t index) const
39 {
40  return (index > _basis_evaluation.size() ? 0.0 : _basis_evaluation[index]);
41 }
42 
43 bool
45 {
46  return _is_generation;
47 }
48 
49 bool
51 {
52  return !_is_generation;
53 }
54 
55 const std::vector<Real> &
57 {
58  if (isExpansion() || isCacheInvalid())
59  {
61 
63 
64  _is_generation = true;
65  _is_cache_invalid = false;
66  }
67 
68  return _basis_evaluation;
69 }
70 
71 const std::vector<Real> &
73 {
74  if (isGeneration() || isCacheInvalid())
75  {
77 
79 
80  _is_generation = false;
81  _is_cache_invalid = false;
82  }
83 
84  return _basis_evaluation;
85 }
86 
87 std::size_t
89 {
90  return _number_of_terms;
91 }
92 
93 Real
95 {
96  // Use getAllGeneration() which will lazily evaluate the series as needed
97  return getAllGeneration().back();
98 }
99 
100 Real
102 {
103  Real sum = 0.0;
104 
105  // Use getAllGeneration() which will lazily evaluate the series as needed
106  for (auto term : getAllGeneration())
107  sum += term;
108 
109  return sum;
110 }
111 
112 Real
114 {
115  // Use getAllExpansion() which will lazily evaluate the series as needed
116  return getAllExpansion().back();
117 }
118 
119 Real
121 {
122  Real sum = 0.0;
123 
124  // Use getAllExpansion() which will lazily evaluate the series as needed
125  for (auto term : getAllExpansion())
126  sum += term;
127 
128  return sum;
129 }
130 
131 Real
132 FunctionalBasisInterface::load(std::size_t index) const
133 {
134  return _basis_evaluation[index];
135 }
136 
137 void
138 FunctionalBasisInterface::save(std::size_t index, Real value)
139 {
140  _basis_evaluation[index] = value;
141 }
142 
143 void
144 FunctionalBasisInterface::clearBasisEvaluation(const unsigned int & number_of_terms)
145 {
146  _basis_evaluation.assign(number_of_terms, 0.0);
147  _basis_evaluation.shrink_to_fit();
148 }
FunctionalBasisInterface::_domain_options
static MooseEnum _domain_options
An enumeration of the domains available to each functional series.
Definition: FunctionalBasisInterface.h:115
FunctionalBasisInterface::FunctionalBasisInterface
FunctionalBasisInterface()
Definition: FunctionalBasisInterface.C:20
FunctionalBasisInterface::evaluateGeneration
virtual void evaluateGeneration()=0
Evaluate the generation form of the functional basis.
FunctionalBasisInterface::getGenerationSeriesSum
Real getGenerationSeriesSum()
Gets the sum of all terms in the generation functional basis.
Definition: FunctionalBasisInterface.C:101
FunctionalBasisInterface::load
Real load(std::size_t index) const
Helper function to load a value from #_series.
Definition: FunctionalBasisInterface.C:132
FunctionalBasisInterface::isCacheInvalid
virtual bool isCacheInvalid() const =0
Whether the cached values correspond to the current point.
FunctionalBasisInterface::_is_generation
bool _is_generation
Indicates whether the current evaluation is expansion or generation.
Definition: FunctionalBasisInterface.h:154
FunctionalBasisInterface::getAllGeneration
const std::vector< Real > & getAllGeneration()
Returns an array reference containing the value of each generation term.
Definition: FunctionalBasisInterface.C:56
FunctionalBasisInterface::getGeneration
Real getGeneration()
Gets the last term of the generation functional basis.
Definition: FunctionalBasisInterface.C:94
FunctionalBasisInterface::_number_of_terms
unsigned int _number_of_terms
The number of terms in the series.
Definition: FunctionalBasisInterface.h:144
FunctionalBasisInterface.h
FunctionalBasisInterface::isExpansion
bool isExpansion() const
Returns true if the current evaluation is expansion.
Definition: FunctionalBasisInterface.C:50
FunctionalBasisInterface::getExpansionSeriesSum
Real getExpansionSeriesSum()
Evaluates the sum of all terms in the expansion functional basis up to #_order.
Definition: FunctionalBasisInterface.C:120
FunctionalBasisInterface::operator[]
Real operator[](std::size_t index) const
Returns the current evaluation at the given index.
Definition: FunctionalBasisInterface.C:38
FunctionalBasisInterface::clearBasisEvaluation
virtual void clearBasisEvaluation(const unsigned int &number_of_terms)
Set all entries of the basis evaluation to zero.
Definition: FunctionalBasisInterface.C:144
FunctionalBasisInterface::evaluateExpansion
virtual void evaluateExpansion()=0
Evaluate the expansion form of the functional basis.
FunctionalBasisInterface::isGeneration
bool isGeneration() const
Returns true if the current evaluation is generation.
Definition: FunctionalBasisInterface.C:44
FunctionalBasisInterface::save
void save(std::size_t index, Real value)
Helper function to store a value in #_series.
Definition: FunctionalBasisInterface.C:138
FunctionalBasisInterface::_is_cache_invalid
bool _is_cache_invalid
indicates if the evaluated values correspond to the current location
Definition: FunctionalBasisInterface.h:147
FunctionalBasisInterface::getAllExpansion
const std::vector< Real > & getAllExpansion()
Returns an array reference containing the value of each expansion term.
Definition: FunctionalBasisInterface.C:72
FunctionalBasisInterface::getNumberOfTerms
std::size_t getNumberOfTerms() const
Returns the number of terms in the series.
Definition: FunctionalBasisInterface.C:88
FunctionalBasisInterface::_basis_evaluation
std::vector< Real > _basis_evaluation
Stores the values of the basis evaluation.
Definition: FunctionalBasisInterface.h:151
FunctionalBasisInterface::getExpansion
Real getExpansion()
Gets the #_order-th term of the expansion functional basis.
Definition: FunctionalBasisInterface.C:113