https://mooseframework.inl.gov
Zernike.h
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 #pragma once
11 
13 
18 {
19 public:
20  Zernike();
21 
22  Zernike(const std::vector<MooseEnum> & domain,
23  const std::vector<std::size_t> & order,
26 
27  // Overrides from FunctionalBasisInterface
28  virtual Real getStandardizedFunctionVolume() const override;
29  virtual bool isInPhysicalBounds(const Point & point) const override;
30 
31  // Overrides from SingleSeriesBasisInterface
32  virtual std::size_t
33  calculatedNumberOfTermsBasedOnOrder(const std::vector<std::size_t> & order) const override;
34  virtual const std::vector<Real> & getStandardizedFunctionLimits() const override;
35 
36 protected:
40  virtual void evaluateOrthonormal();
44  virtual void evaluateStandard();
48  virtual void evaluateSqrtMu();
49 
50  // Overrides from SingleSeriesBasisInterface
51  virtual void checkPhysicalBounds(const std::vector<Real> & bounds) const override;
52  virtual std::vector<Real>
53  getStandardizedLocation(const std::vector<Real> & location) const override;
54 
62 
66  std::size_t simpleDoubleToSingle(std::size_t n, long m) const;
67 
69  std::vector<Real> _negative_azimuthal_components;
70 
72  std::vector<Real> _positive_azimuthal_components;
73 };
virtual void evaluateSqrtMu()
Evaluates the 1/sqrt(mu) normalized form of the basis functions.
Definition: Zernike.C:226
std::size_t simpleDoubleToSingle(std::size_t n, long m) const
Maps the double order/rank idices to a single linear index.
Definition: Zernike.C:436
This class provides the algorithms and properties of the Zernike polynomial series.
Definition: Zernike.h:17
void fillOutNegativeRankAndApplyAzimuthalComponent()
Helper function used by evaluateGeneration() and evaluateExpansion().
Definition: Zernike.C:363
virtual void evaluateOrthonormal()
Evaluates the orthonormal form of the basis functions.
Definition: Zernike.C:66
virtual const std::vector< Real > & getStandardizedFunctionLimits() const override
Returns a vector of the lower and upper bounds of the standard functional space.
Definition: Zernike.C:382
Zernike()
Definition: Zernike.C:20
std::vector< Real > _negative_azimuthal_components
Stores the recurrence evaluations for the negative rank azimuthal terms.
Definition: Zernike.h:69
virtual void evaluateStandard()
Evaluates the standard form of the basis functions.
Definition: Zernike.C:245
virtual std::vector< Real > getStandardizedLocation(const std::vector< Real > &location) const override
Standardize the location according to the requirements of the underlying basis, which may actually co...
Definition: Zernike.C:397
MooseEnum expansion_type
virtual std::size_t calculatedNumberOfTermsBasedOnOrder(const std::vector< std::size_t > &order) const override
Returns the number of terms in the single series given a value for the order.
Definition: Zernike.C:48
virtual bool isInPhysicalBounds(const Point &point) const override
Determines if the point provided is in within the physical bounds.
Definition: Zernike.C:414
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
virtual void checkPhysicalBounds(const std::vector< Real > &bounds) const override
Checks the physical bounds according to the actual implementation.
Definition: Zernike.C:54
std::vector< Real > _positive_azimuthal_components
Stores the recurrence evaluations for the positive rank azimuthal terms.
Definition: Zernike.h:72
This class is a simple wrapper around FunctionalBasisInterface, and intended for use by any single fu...
MooseEnum generation_type
virtual Real getStandardizedFunctionVolume() const override
Returns the volume within the standardized function local_limits.
Definition: Zernike.C:391