www.mooseframework.org
FunctionalBasisInterface.h
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 
10 #pragma once
11 
12 #include "MooseEnum.h"
13 #include "MooseError.h"
14 #include "MooseTypes.h"
15 
16 // Shortened typename
18 
24 {
25 public:
27  FunctionalBasisInterface(const unsigned int number_of_terms);
28 
32  Real operator[](std::size_t index) const;
33 
37  const std::vector<Real> & getAllGeneration();
38 
42  const std::vector<Real> & getAllExpansion();
43 
47  std::size_t getNumberOfTerms() const;
48 
52  Real getGeneration();
53 
58 
62  Real getExpansion();
63 
67  Real getExpansionSeriesSum();
68 
72  virtual const std::vector<Real> & getStandardizedFunctionLimits() const = 0;
73 
77  virtual Real getStandardizedFunctionVolume() const = 0;
78 
82  bool isGeneration() const;
83 
87  bool isExpansion() const;
88 
92  virtual bool isCacheInvalid() const = 0;
93 
97  virtual bool isInPhysicalBounds(const Point & point) const = 0;
98 
102  virtual void setLocation(const Point & point) = 0;
103 
107  virtual void setOrder(const std::vector<std::size_t> & orders) = 0;
108 
112  virtual void setPhysicalBounds(const std::vector<Real> & bounds) = 0;
113 
115  static MooseEnum _domain_options;
116 
117 protected:
121  virtual void clearBasisEvaluation(const unsigned int & number_of_terms);
122 
126  virtual void evaluateGeneration() = 0;
127 
131  virtual void evaluateExpansion() = 0;
132 
136  Real load(std::size_t index) const;
137 
141  void save(std::size_t index, Real value);
142 
144  unsigned int _number_of_terms;
145 
148 
149 private:
151  std::vector<Real> _basis_evaluation;
152 
155 };
156 
FunctionalBasisInterface::getStandardizedFunctionVolume
virtual Real getStandardizedFunctionVolume() const =0
Returns the volume within the standardized function local_limits.
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::isInPhysicalBounds
virtual bool isInPhysicalBounds(const Point &point) const =0
Determines if the point provided is in within the physical bounds.
FunctionalBasisInterface::getStandardizedFunctionLimits
virtual const std::vector< Real > & getStandardizedFunctionLimits() const =0
Returns a vector of the lower and upper bounds of the standard functional space.
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::setOrder
virtual void setOrder(const std::vector< std::size_t > &orders)=0
Set the order of the series.
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::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::setPhysicalBounds
virtual void setPhysicalBounds(const std::vector< Real > &bounds)=0
Sets the bounds of the series.
FunctionalBasisInterface::setLocation
virtual void setLocation(const Point &point)=0
Set the location that will be used by the series to compute values.
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
FunctionalBasisInterface
This class provides the basis for any custom functional basis, and is the parent class of both Single...
Definition: FunctionalBasisInterface.h:23