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 : #pragma once 11 : 12 : #include "SingleSeriesBasisInterface.h" 13 : 14 : /** 15 : * This class provides the algorithms and properties of the Legendre polynomial series. 16 : */ 17 4 : class Legendre final : public SingleSeriesBasisInterface 18 : { 19 : public: 20 : Legendre(); 21 : Legendre(const std::vector<MooseEnum> & domain, 22 : const std::vector<std::size_t> & order, 23 : MooseEnum expansion_type, 24 : MooseEnum generation_type); 25 : 26 : // Overrides from FunctionalBasisInterface 27 : virtual Real getStandardizedFunctionVolume() const override; 28 : virtual bool isInPhysicalBounds(const Point & point) const override; 29 : 30 : // Overrides from SingleSeriesBasisInterface 31 : virtual std::size_t 32 : calculatedNumberOfTermsBasedOnOrder(const std::vector<std::size_t> & order) const override; 33 : virtual const std::vector<Real> & getStandardizedFunctionLimits() const override; 34 : 35 : protected: 36 : /** 37 : * Evaluates the orthonormal form of the basis functions 38 : */ 39 : virtual void evaluateOrthonormal(); 40 : /** 41 : * Evaluates the standard form of the basis functions 42 : */ 43 : virtual void evaluateStandard(); 44 : /** 45 : * Evaluates the 1/sqrt(mu) normalized form of the basis functions 46 : */ 47 : virtual void evaluateSqrtMu(); 48 : 49 : // Overrides from SingleSeriesBasisInterface 50 : virtual void checkPhysicalBounds(const std::vector<Real> & bounds) const override; 51 : virtual std::vector<Real> 52 : getStandardizedLocation(const std::vector<Real> & location) const override; 53 : };