An interface declaration for DiscreteFunctionSpace which removes the size of the Codomain. More...
#include <ptems/space.hpp>
Public Member Functions | |
| virtual std::size_t | NumberGlobalDoFs () const =0 |
| Gets the global number of degrees of freedom for the space. More... | |
| std::unordered_map< std::size_t, X > | StronglyImposedDoFs () const |
| Computes the set of global DoFs with strongly imposed Dirichlet boundary conditions. More... | |
| std::vector< std::size_t > | StronglyImposedDofMapping (std::size_t &size) const |
| Create mapping from global dof number to DoF number of the reduced set of dofs with strongly imposed boundary conditions Dofs removed (Dirichlet) More... | |
| virtual bool | IsContinuous () const =0 |
| Gets if the functions space is continuous over element boundaries. More... | |
| virtual bool | CanIncrementPolynomialDegree () const |
| Gets whether the space can be modified by incrementing/decrementing the polynomial degree uniformly for any component. More... | |
| virtual bool | CanIncrementPolynomialDegree ([[maybe_unused]] std::size_t component) const |
| Gets whether the space can be modified by incrementing/decrementing the polynomial degree uniformly for the specified codomain component. More... | |
| virtual bool | SupportsVariablePolynomialDegree () const |
| Gets whether the space can be modified with varying polynomial degree for each element for any component. More... | |
| virtual bool | SupportsVariablePolynomialDegree ([[maybe_unused]] std::size_t component) const |
| Gets whether the space can be modified with varying polynomial degree for each element for the specified codomain component. More... | |
| std::uintptr_t | ID () const |
| Gets a unique ID for the space (actually just the pointer address) More... | |
Static Public Attributes | |
| static constexpr std::size_t | IndexStronglyImposedDof = -1 |
| Index in the mapping returned by StronglyImposedDofMapping if the dof is strongly imposed. More... | |
Protected Member Functions | |
| virtual void | ComputeStronglyImposedDoFs ([[maybe_unused]] std::unordered_map< std::size_t, X > &dofs, [[maybe_unused]] std::size_t offset) const |
| Computes the set of global DoFs with strongly imposed Dirichlet boundary conditions. More... | |
| virtual void | ComputeGlobalDoFOffset (std::size_t *dofOffset, std::size_t offset) const =0 |
| Computes the offset onto the global degrees of freedom for each component. More... | |
| virtual std::size_t * | ComputeDoFMapping (std::size_t *dofMapping, std::size_t elementIdx, std::size_t offset) const =0 |
| Computes the mapping between local dof numbers for an element and the global dof numbers. More... | |
| virtual X * | ComputeBasisFunctions (X *basis, std::size_t elementIdx, const Vector< DIM > &pt)=0 |
| Computes the basis functions for each component at the specified point of the specified element. More... | |
| virtual FuncAndGradData< DIM, X > * | ComputeGradBasisFunctions (FuncAndGradData< DIM, X > *basis, std::size_t elementIdx, const Vector< DIM > &pt)=0 |
| Computes the basis functions and first order derivatives for each component at the specified point of the specified element. More... | |
| virtual FuncAndGradData< DIM, X > * | ComputeGradValueBasisFunctions (FuncAndGradData< DIM, X > *basis, std::size_t elementIdx, const Vector< DIM > &pt) |
| Computes the basis functions and first order derivatives of those basis functions for each component at the specified point of the specified element. More... | |
| virtual FuncGradAndHessianData< DIM, X > * | ComputeHessianBasisFunctions ([[maybe_unused]] FuncGradAndHessianData< DIM, X > *basis, [[maybe_unused]] std::size_t elementIdx, [[maybe_unused]] const Vector< DIM > &pt) |
| Computes the basis functions, first order derivatives, and second order derivatives for each component at the specified point of the specified element. More... | |
| virtual FuncThirdOrderData< DIM, X > * | ComputeThirdOrderBasisFunctions ([[maybe_unused]] FuncThirdOrderData< DIM, X > *basis, [[maybe_unused]] std::size_t elementIdx, [[maybe_unused]] const Vector< DIM > &pt) |
| Computes the basis functions and first, second, and third order derivatives for each component at the specified point of the specified element. More... | |
| virtual FuncFourthOrderData< DIM, X > * | ComputeFourthOrderBasisFunctions ([[maybe_unused]] FuncFourthOrderData< DIM, X > *basis, [[maybe_unused]] std::size_t elementIdx, [[maybe_unused]] const Vector< DIM > &pt) |
| Computes the basis functions and first, second, third, and fourth order derivatives for each component at the specified point of the specified element. More... | |
| virtual std::vector< X > * | ComputeDoFAtBasis (std::vector< X > *dofs, [[maybe_unused]] std::size_t elementIdx) |
| Computes the basis functions of the space evaluated by the functional for each degree of freedom. More... | |
| virtual std::vector< X > * | ComputeDoFAtBasisProjection (std::vector< X > *dofs, std::size_t elementIdx) |
| Computes the value projection of the basis functions of the space evaluated by the functional for each degree of freedom. More... | |
| virtual Vector< DIM > * | ComputeLocalAnalyticityEstimate (Vector< DIM > *analyticity, [[maybe_unused]] std::size_t elementIdx, [[maybe_unused]] const X *dofs) |
| Computes the local analyticity estimate of the element using Legendre coefficients. More... | |
| virtual std::size_t | CodomainDimensionSize () const =0 |
| Gets ths size of the codomain of the fuctions in the space. More... | |
| virtual std::size_t * | FillPolynomialDegree (std::size_t element, std::size_t *nextPolydeg) const =0 |
| Populates an array with polynomial degree for each component of the result for the specified element. More... | |
| virtual void | SetPolynomialDegree ([[maybe_unused]] const std::map< std::size_t, const std::size_t * > &elementPolydegs, const DoFChangeList< X > &dofs) |
| Set the polynomial degree of the specified elements and update the DoFs of the specified functions. More... | |
| virtual void | SetPolynomialDegree ([[maybe_unused]] const std::size_t *polydeg, const DoFChangeList< X > &dofs) |
| Set the polynomial degree of the all elements and update the DoFs of the specified functions. More... | |
| virtual void | ComputeNumberLocalDoFs (std::size_t elementIdx, std::size_t *numberDofs) const =0 |
| Gets the number of degrees of freedom for an element in the space per component. More... | |
| virtual std::vector< X >::iterator | Interpolate (typename std::vector< X >::iterator dofsBegin, typename std::vector< X >::iterator dofsEnd, const X *value) const =0 |
| Fill the degrees of freedom for this space by interpolating the specified constant function. More... | |
| virtual std::vector< X >::iterator | Interpolate ([[maybe_unused]] typename std::vector< X >::iterator dofsBegin, [[maybe_unused]] typename std::vector< X >::iterator dofsEnd, [[maybe_unused]] const std::function< X(const Vector< DIM > &, std::size_t)> &func) const |
| Fill the degrees of freedom for this space by interpolating the specified function. More... | |
| virtual void | OnMeshChanged (const PFEMesh< DIM > &previousMesh, DiscreteFunctionSpaceInterface< DIM, X > *previousSpace, const typename FEMesh< DIM >::Modifications &changes, const DoFChangeList< X > &dofs)=0 |
| Event notification from mesh that the mesh has been changed. More... | |
| virtual DiscreteFunctionSpaceInterface< DIM, X > * | CreateClone (const PFEMesh< DIM > &mesh)=0 |
| Creates a clone of the space. More... | |
Friends | |
| template<std::size_t D, typename T , std::size_t N> | |
| class | DiscreteCartesianProductSpace |
An interface declaration for DiscreteFunctionSpace which removes the size of the Codomain.
| DIM | The dimension of the domain (and mesh) |
| X | The type of the result of the functions (double, std::complex, etc) |
|
inlinevirtual |
Gets whether the space can be modified by incrementing/decrementing the polynomial degree uniformly for any component.
Reimplemented in ptems::DiscreteCartesianProductSpace< DIM, X, N >, ptems::VariableDegreeDiscreteFunctionSpace< DIM, X, N >, ptems::VariableDegreeDiscreteFunctionSpace< 1, X, N >, ptems::VariableDegreeDiscreteFunctionSpace< 2, X, N >, and ptems::VariableDegreeDiscreteFunctionSpace< DIM, double, 1 >.
|
inlinevirtual |
Gets whether the space can be modified by incrementing/decrementing the polynomial degree uniformly for the specified codomain component.
| component | Index of component to check |
|
protectedpure virtual |
Gets ths size of the codomain of the fuctions in the space.
Implemented in ptems::DiscreteFunctionSpace< DIM, X, N >, and ptems::DiscreteFunctionSpace< DIM, double, 1 >.
|
protectedpure virtual |
Computes the basis functions for each component at the specified point of the specified element.
The point is the local point defined on the reference element (for elements with a single reference element) or the bounding box (for elements with multiple reference elements).
The passed pointer is a continuous array of all the basis functions for the first component, followed by all the basis functions for the second etc. The number of basis functions MUST be the same as ComputeNumberLocalDoFs calculates
| basis | Pointer to the first basis function to compute. This pointer can be treated as if it is an array containing the number of DoFs for the first component as computed by ComputeNumberLocalDoFs(), followed by the number of DoFs for the second component as computed by ComputeNumberLocalDoFs(), etc. |
| elementIdx | The element index to get the basis functions for |
| pt | The local point in the reference element or bounding box to get the basis functions for |
basis+x, where x is the sum of the array entries computed by ComputeNumberLocalDoFs Implemented in ptems::DiscontinuousSpace< Polynomials, DIM, X, N >, and ptems::DiscreteCartesianProductSpace< DIM, X, N >.
|
inlineprotectedvirtual |
Computes the basis functions of the space evaluated by the functional for each degree of freedom.
| dofs | Pointer to the vector to store each basis for the first DoF functional to compute. This pointer can be treated as if it is an array containing the number of DoFs for the first component as computed by ComputeNumberLocalDoFs(), followed by the number of DoFs for the second component as computed by ComputeNumberLocalDoFs(), etc.. Each vector will already be sized to same size as ComputeNumberLocalDoFs() for the component and filled wth zero |
| elementIdx | The element index to get the basis functions/dofs for |
dofs+x, where x is the sum of the array entries computed by ComputeNumberLocalDoFs
|
inlineprotectedvirtual |
Computes the value projection of the basis functions of the space evaluated by the functional for each degree of freedom.
| dofs | Pointer to the vector to store each basis for the first DoF functional to compute. This pointer can be treated as if it is an array containing the number of DoFs for the first component as computed by ComputeNumberLocalDoFs(), followed by the number of DoFs for the second component as computed by ComputeNumberLocalDoFs(), etc. Each vector will already be sized to same size as ComputeNumberLocalDoFs() for the component and filled wth zero |
| elementIdx | The element index to get the basis functions/dofs for |
dofs+x, where x is the sum of the array entries computed by ComputeNumberLocalDoFs Reimplemented in ptems::VirtualElementSpace< HBasis, 2, X, N >, and ptems::DiscreteCartesianProductSpace< DIM, X, N >.
|
protectedpure virtual |
Computes the mapping between local dof numbers for an element and the global dof numbers.
The passed pointer is a continuous array of all the dofs for the first component, followed by all the dofs for the second etc. The number of dofs MUST be the same as ComputeNumberLocalDoFs calculates
| std::logic_error | If the underlying mesh is invalid for the type of space; e.g., nonconforming mesh for a conforming space. |
| std::out_of_range | if elementIdx is not less than the number of elements in the underlying mesh |
| dofMapping | Pointer to the first global dof index to compute. This pointer can be treated as if it is an array containing the number of DoFs for the first component as computed by ComputeNumberLocalDoFs(), followed by the number of DoFs for the second component as computed by ComputeNumberLocalDoFs(), etc. |
| elementIdx | Index of the element to get the local to global mapping of the degrees of freedom for |
| offset | Offset to add to the global DoF numbers |
dofMapping+x, where x is the sum of the array entries computed by ComputeNumberLocalDoFs Implemented in ptems::VirtualElementSpace< HBasis, 2, X, N >, ptems::PiecewiseConstant< DIM, X, N >, ptems::DiscontinuousSpace< Polynomials, DIM, X, N >, ptems::DiscontinuousSpace< LegendrePolynomials< DIM >, DIM, double, 1 >, ptems::DiscontinuousSpace< LagrangePolynomials< DIM >, DIM, double, 1 >, ptems::ContinuousLagrangeSpace< 2, X, N >, ptems::ContinuousLagrangeSpace< 1, X, N >, and ptems::DiscreteCartesianProductSpace< DIM, X, N >.
|
inlineprotectedvirtual |
Computes the basis functions and first, second, third, and fourth order derivatives for each component at the specified point of the specified element.
The point is the local point defined on the reference element (for elements with a single reference element), or the bounding box (for elements with multiple reference elements).
The passed pointer is a continuous array of all the basis functions for the first component, followed by all the basis functions for the second etc. The number of basis functions MUST be the same as ComputeNumberLocalDoFs calculates
| std::logic_error | If fourth order derivatives are not supported by the space |
| basis | Pointer to the first basis function to compute. This pointer can be treated as if it is an array containing the number of DoFs for the first component as computed by ComputeNumberLocalDoFs(), followed by the number of DoFs for the second component as computed by ComputeNumberLocalDoFs(), etc. |
| elementIdx | The element index to get the basis functions for |
| pt | The local point in the reference element or bounding box to get the basis functions for |
basis+x, where x is the sum of the array entries computed by ComputeNumberLocalDoFs
|
protectedpure virtual |
Computes the offset onto the global degrees of freedom for each component.
| std::logic_error | If the underlying mesh is invalid for the type of space; e.g., nonconforming mesh for a conforming space. |
| dofOffset | Pointer to array of length of number of components + 1 to store the the offset into the global DoFs for the DoFs for each component (first N entries) and the total number of globals DoFs (last entry) |
| offset | Offset to add to the global DoF numbers |
Implemented in ptems::VirtualElementSpace< HBasis, 2, X, N >, ptems::PiecewiseConstant< DIM, X, N >, ptems::DiscontinuousSpace< Polynomials, DIM, X, N >, ptems::DiscontinuousSpace< LegendrePolynomials< DIM >, DIM, double, 1 >, ptems::DiscontinuousSpace< LagrangePolynomials< DIM >, DIM, double, 1 >, ptems::ContinuousLagrangeSpace< 2, X, N >, ptems::ContinuousLagrangeSpace< 1, X, N >, and ptems::DiscreteCartesianProductSpace< DIM, X, N >.
|
protectedpure virtual |
Computes the basis functions and first order derivatives for each component at the specified point of the specified element.
The point is the local point defined on the reference element (for elements with a single reference element) or the bounding box (for elements with multiple reference elements).
The passed pointer is a continuous array of all the basis functions for the first component, followed by all the basis functions for the second etc. The number of basis functions MUST be the same as ComputeNumberLocalDoFs calculates
| basis | Pointer to the first basis function to compute. This pointer can be treated as if it is an array containing the number of DoFs for the first component as computed by ComputeNumberLocalDoFs(), followed by the number of DoFs for the second component as computed by ComputeNumberLocalDoFs(), etc. |
| elementIdx | The element index to get the basis functions for |
| pt | The local point in the reference element or bounding box to get the basis functions for |
basis+x, where x is the sum of the array entries computed by ComputeNumberLocalDoFs Implemented in ptems::DiscontinuousSpace< Polynomials, DIM, X, N >, and ptems::DiscreteCartesianProductSpace< DIM, X, N >.
|
inlineprotectedvirtual |
Computes the basis functions and first order derivatives of those basis functions for each component at the specified point of the specified element.
The point is the local point defined on the reference element (for elements with a single reference element) or the bounding box (for elements with multiple reference elements).
The passed pointer is a continuous array of all the basis functions for the first component, followed by all the basis functions for the second etc. The number of basis functions MUST be the same as ComputeNumberLocalDoFs calculates
| basis | Pointer to the first basis function to compute. This pointer can be treated as if it is an array containing the number of DoFs for the first component as computed by ComputeNumberLocalDoFs(), followed by the number of DoFs for the second component as computed by ComputeNumberLocalDoFs(), etc. |
| elementIdx | The element index to get the basis functions for |
| pt | The local point in the reference element or bounding box to get the basis functions for |
basis+x, where x is the sum of the array entries computed by ComputeNumberLocalDoFs
|
inlineprotectedvirtual |
Computes the basis functions, first order derivatives, and second order derivatives for each component at the specified point of the specified element.
The point is the local point defined on the reference element (for elements with a single reference element), or the bounding box (for elements with multiple reference elements).
The passed pointer is a continuous array of all the basis functions for the first component, followed by all the basis functions for the second etc. The number of basis functions MUST be the same as ComputeNumberLocalDoFs calculates
| std::logic_error | If second order derivatives are not supported by the space |
| basis | Pointer to the first basis function to compute. This pointer can be treated as if it is an array containing the number of DoFs for the first component as computed by ComputeNumberLocalDoFs(), followed by the number of DoFs for the second component as computed by ComputeNumberLocalDoFs(), etc. |
| elementIdx | The element index to get the basis functions for |
| pt | The local point in the reference element or bounding box to get the basis functions for |
basis+x, where x is the sum of the array entries computed by ComputeNumberLocalDoFs
|
inlineprotectedvirtual |
Computes the local analyticity estimate of the element using Legendre coefficients.
| elementIdx | Element to estimate analyticity |
| analyticity | Pointer to the array to store analyticity estimate, per variable, in range \((0,1]\) (or negative if analyticity cannot be computed) |
| dofs | Pointer to array containing degrees of freedom |
|
protectedpure virtual |
Gets the number of degrees of freedom for an element in the space per component.
| std::logic_error | If the underlying mesh is invalid for the type of space; e.g., nonconforming mesh for a conforming space. |
| std::out_of_range | if elementIdx is not less than the number of elements in the underlying mesh |
| elementIdx | Index of the element to get the number of local degrees of freedom for |
| numberDofs | Pointer to array of length of number of components to store the local number of degrees of freedom for the specified element per component |
Implemented in ptems::PiecewiseConstant< DIM, X, N >, ptems::VirtualElementSpace< HBasis, 2, X, N >, ptems::DiscontinuousSpace< Polynomials, DIM, X, N >, ptems::DiscontinuousSpace< LegendrePolynomials< DIM >, DIM, double, 1 >, ptems::DiscontinuousSpace< LagrangePolynomials< DIM >, DIM, double, 1 >, ptems::ContinuousLagrangeSpace< 2, X, N >, ptems::ContinuousLagrangeSpace< 1, X, N >, and ptems::DiscreteCartesianProductSpace< DIM, X, N >.
|
inlineprotectedvirtual |
Computes the set of global DoFs with strongly imposed Dirichlet boundary conditions.
| dofs | Set to update with global dof number and value for strongly imposed Dirichlet BC |
| offset | Offset to add to the global DoF numbers |
|
inlineprotectedvirtual |
Computes the basis functions and first, second, and third order derivatives for each component at the specified point of the specified element.
The point is the local point defined on the reference element (for elements with a single reference element), or the bounding box (for elements with multiple reference elements).
The passed pointer is a continuous array of all the basis functions for the first component, followed by all the basis functions for the second etc. The number of basis functions MUST be the same as ComputeNumberLocalDoFs calculates
| std::logic_error | If third order derivatives are not supported by the space |
| basis | Pointer to the first basis function to compute. This pointer can be treated as if it is an array containing the number of DoFs for the first component as computed by ComputeNumberLocalDoFs(), followed by the number of DoFs for the second component as computed by ComputeNumberLocalDoFs(), etc. |
| elementIdx | The element index to get the basis functions for |
| pt | The local point in the reference element or bounding box to get the basis functions for |
basis+x, where x is the sum of the array entries computed by ComputeNumberLocalDoFs
|
protectedpure virtual |
Creates a clone of the space.
| mesh | The mesh to use for the clone |
Implemented in ptems::DiscreteFunctionSpace< DIM, X, N >, and ptems::DiscreteFunctionSpace< DIM, double, 1 >.
|
protectedpure virtual |
Populates an array with polynomial degree for each component of the result for the specified element.
| element | The index of the element to get the polynomial degree for |
| nextPolydeg | Point into an array to store the polynomial degree. The array will have enough space to store CodomainDimensionSize() values |
Implemented in ptems::DiscreteFunctionSpace< DIM, X, N >, and ptems::DiscreteFunctionSpace< DIM, double, 1 >.
|
inline |
Gets a unique ID for the space (actually just the pointer address)
|
inlineprotectedvirtual |
Fill the degrees of freedom for this space by interpolating the specified function.
| std::logic_error | If dofsEnd-dofsBegin is less than the number of degrees of freedom to be populated |
dofsEnd-dofsBegin may be larger than the number of degrees of freedom in the space. Implementations of this function MUST ONLY populate the same number degrees of degrees of freedom as NumberGlobalDoFs() and return the iterator to dofsBegin+NumberGlobalDoFs()| dofsBegin | Iterator pointing to the start of the degrees of freedom to fill |
| dofsEnd | Iterator pointing to the end of the degrees of freedom to fill |
| func | The function to interpolate. Functional which takes two arguments: global coordinate and component of the vector space |
dofsBegin+NumberGlobalDoFs().
|
protectedpure virtual |
Fill the degrees of freedom for this space by interpolating the specified constant function.
| std::logic_error | If dofsEnd-dofsBegin is less than the number of degrees of freedom to be populated |
dofsEnd-dofsBegin may be larger than the number of degrees of freedom in the space. Implementations of this function MUST ONLY populate the same number degrees of degrees of freedom as NumberGlobalDoFs() and return the iterator to dofsBegin+NumberGlobalDoFs()| dofsBegin | Iterator pointing to the start of the degrees of freedom to fill |
| dofsEnd | Iterator pointing to the end of the degrees of freedom to fill |
| value | Pointer to array containing the constants for each component |
dofsBegin+NumberGlobalDoFs(). Implemented in ptems::VirtualElementSpace< HBasis, 2, X, N >, ptems::DiscontinuousSpace< Polynomials, DIM, X, N >, ptems::ContinuousLagrangeSpace< 2, X, N >, ptems::ContinuousLagrangeSpace< 1, X, N >, and ptems::DiscreteCartesianProductSpace< DIM, X, N >.
|
pure virtual |
Gets if the functions space is continuous over element boundaries.
Implemented in ptems::VirtualElementSpace< HBasis, 2, X, N >, ptems::PiecewiseConstant< DIM, X, N >, ptems::DiscontinuousSpace< Polynomials, DIM, X, N >, ptems::DiscontinuousSpace< LegendrePolynomials< DIM >, DIM, double, 1 >, ptems::DiscontinuousSpace< LagrangePolynomials< DIM >, DIM, double, 1 >, ptems::ContinuousLagrangeSpace< 2, X, N >, ptems::ContinuousLagrangeSpace< 1, X, N >, and ptems::DiscreteCartesianProductSpace< DIM, X, N >.
|
pure virtual |
Gets the global number of degrees of freedom for the space.
| std::logic_error | If the underlying mesh is invalid for the type of space; e.g., nonconforming mesh for a conforming space. |
Implemented in ptems::VirtualElementSpace< HBasis, 2, X, N >, ptems::PiecewiseConstant< DIM, X, N >, ptems::DiscontinuousSpace< Polynomials, DIM, X, N >, ptems::DiscontinuousSpace< LegendrePolynomials< DIM >, DIM, double, 1 >, ptems::DiscontinuousSpace< LagrangePolynomials< DIM >, DIM, double, 1 >, ptems::ContinuousLagrangeSpace< 2, X, N >, ptems::ContinuousLagrangeSpace< 1, X, N >, and ptems::DiscreteCartesianProductSpace< DIM, X, N >.
|
protectedpure virtual |
Event notification from mesh that the mesh has been changed.
The space should perform any necessary changes to conform to the new mesh.
The m_mesh variable will contain the new mesh.
| std::logic_error | If the new mesh is invalid for the type of space; e.g., nonconforming mesh for a conforming space. |
| previousMesh | The mesh before refinement |
| previousSpace | The space for the previous mesh |
| changes | A FEMesh<DIM>::Modifications structure defining the change to the mesh |
| dofs | Map (actually array of pairs) of the degree of freedom from a function which is part of this space before the change, to a (reference to a) vector to APPEND with the new degrees of freedom after mesh change |
Implemented in ptems::DiscreteCartesianProductSpace< DIM, X, N >.
|
inlineprotectedvirtual |
Set the polynomial degree of the specified elements and update the DoFs of the specified functions.
| elementPolydegs | (Ordered) map of element number to array (of length N) of new polynomial degrees for each component |
| dofs | Map (actually array of pairs) of the degree of freedom from a function which is part of this space before the change, to a (reference to a) vector to APPEND with the new degrees of freedom after mesh change |
|
inlineprotectedvirtual |
Set the polynomial degree of the all elements and update the DoFs of the specified functions.
| polydeg | Array (of length N) of new polynomial degrees for each component |
| dofs | Map (actually array of pairs) of the degree of freedom from a function which is part of this space before the change, to a (reference to a) vector to APPEND with the new degrees of freedom after mesh change |
|
inline |
Create mapping from global dof number to DoF number of the reduced set of dofs with strongly imposed boundary conditions Dofs removed (Dirichlet)
| size | Index of first dof of reduced set of dofs. Updated to index of last dof+1. |
|
inline |
Computes the set of global DoFs with strongly imposed Dirichlet boundary conditions.
|
inlinevirtual |
Gets whether the space can be modified with varying polynomial degree for each element for any component.
Reimplemented in ptems::ContinuousLagrangeSpace< 2, X, N >, ptems::ContinuousLagrangeSpace< 1, X, N >, ptems::DiscreteCartesianProductSpace< DIM, X, N >, ptems::VariableDegreeDiscreteFunctionSpace< DIM, X, N >, ptems::VariableDegreeDiscreteFunctionSpace< 1, X, N >, ptems::VariableDegreeDiscreteFunctionSpace< 2, X, N >, and ptems::VariableDegreeDiscreteFunctionSpace< DIM, double, 1 >.
|
inlinevirtual |
Gets whether the space can be modified with varying polynomial degree for each element for the specified codomain component.
| component | Index of component to check |
Reimplemented in ptems::DiscreteCartesianProductSpace< DIM, X, N >.
|
staticconstexpr |
Index in the mapping returned by StronglyImposedDofMapping if the dof is strongly imposed.