https://mooseframework.inl.gov
Loading...
Searching...
No Matches
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{
19public:
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
36protected:
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
70
73};
MooseEnum expansion_type
MooseEnum generation_type
This class is a simple wrapper around FunctionalBasisInterface, and intended for use by any single fu...
This class provides the algorithms and properties of the Zernike polynomial series.
Definition Zernike.h:18
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 void checkPhysicalBounds(const std::vector< Real > &bounds) const override
Checks the physical bounds according to the actual implementation.
Definition Zernike.C:54
Zernike()
Definition Zernike.C:20
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
std::vector< Real > _negative_azimuthal_components
Stores the recurrence evaluations for the negative rank azimuthal terms.
Definition Zernike.h:69
std::vector< Real > _positive_azimuthal_components
Stores the recurrence evaluations for the positive rank azimuthal terms.
Definition Zernike.h:72
virtual void evaluateSqrtMu()
Evaluates the 1/sqrt(mu) normalized form of the basis functions.
Definition Zernike.C:226
virtual void evaluateStandard()
Evaluates the standard form of the basis functions.
Definition Zernike.C:245
virtual bool isInPhysicalBounds(const Point &point) const override
Determines if the point provided is in within the physical bounds.
Definition Zernike.C:414
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
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
virtual Real getStandardizedFunctionVolume() const override
Returns the volume within the standardized function local_limits.
Definition Zernike.C:391
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