Rename class ElemRestriction to ElementRestriction and integrate
it with class FiniteElementSpace; it is accessible with the method
FiniteElementSpace::GetElementRestriction().
Rename class XTMesh to GeometricFactors and remove invJ from the
possible geometric factors.
Introduce class QuadratureInterpolator (created and owned by class
FiniteElementSpace) that interpolates E-vectors to quadrature points,
see FiniteElementSpace::GetQuadratureInterpolator().
Switch the layouts of the E-vectors and Q-vectors to have the
local (element) DOFs and quadrature points, respectively, as the
fastest changing index.
* Removed the fixed low-order finite element classes for wedges.
* Replace more cases of 'int' variables with 'Geometry::Type',
mainly in class FiniteElement and its derived classes.
* Use constants from BasisType (instead of Quadrature1D) in the
parameters of the *WedgeElement finite element classes.
* Impose ordering on the construction of some global objects by
moving them into the same translation unit: specifically, moved
the objects 'TriangleFE', 'TetrahedronFE', 'WedgeFE', and
'Geometries' into fem/fe.cpp.
* In switchs on 'Geometry::Type', move the 'Geometry::PRISM' case
last - just to follow the order in the enumeration.
* Add a new method CoarseFineTransformations::GetPointMatrices
that simplifies some code that uses CoarseFineTransformations.
* Removed the 'INVALID' and 'MIXED' constants from the enum
Element::Type.
* Remove the static method Element::GeometryType.
* Tweak some doxygen comments in the classes Embedding and
CoarseFineTransformations.
* Generate an error if the method Wedge::GetNFaces is called:
its parameter 'nFaceVertices' does not make sense for wedges.
I implmented CalcHessian for H1_TriangleElement and H1_TetrahedronElement. The 2nd derivatives in the Hessian are orderd "u_xx, u_xy, u_yy" and "u_xx, u_xy, u_xz, u_yy, u_yz, u_zz", respectively.
Poly_1D was expanded by a third CalcBasis function which takes an additional argument for the 2nd derivative. As only CalcChebyshev is not commented out, I just implemented the 2nd derivatives for the Chebyshev Polynomials, also with an additional argument for the 2nd derivative.
FiniteElement that generalizes the method with the same name that
computes the local interpolation matrix for h-refinement. The new
method allows the coarse FiniteElement to be different from the fine
FiniteElement and can be used to generate transfer matrix when
h-refinement is combined with p-refinement or p-derefinement.
Implement the new GetLocalInterpolation() method for (essentially) all
finite element classes.
NodalTensorFiniteElement and PositiveTensorFiniteElement, add a
parameter to their constructors of a new type, DofMapType, to
indicate the type of basis being constructed: L2 or H1.
Add a new static method BasisType::GetNodalBasis() that converts
a Quadrature1D type to the corresponding nodal BasisType.
Fix a bug: in GeometryRefiner::Refine(), convert the Quadrature1D
type to BasisType before calling poly1d.GetPoints().
In class FiniteElement:
* Add a new data field, Orders, that contains the optional anisotropic
orders used by a FiniteElement; it is initialized to -1.
* Add a new method, HasAnisotropicOrders(), returning true if the first
component in Orders is set to a value different from -1.
* Replace the virtual method GetOrders() with non-virtula method called
GetAnisotropicOrders().
Update the NURBSFiniteElement classes to use the new field, Orders,
inherited from the base class.
solutions. Restore the NURBS meshes in the data directory to use their
original format.
Add a new FiniteElementSpace format for writing variable-order spaces,
currently implemented for NURBS spaces only. Move the reading of FE
space input in a new method: FiniteElementSpace::Load. Add new default
constructor for FiniteElementSpace that should be used with the Load
method.
Add a bunch of const qualifiers in NURBSExtension and NURBSPatchMap.
Extended the method Mesh::DegreeElevate to make it easier to work with
variable-order NURBS meshes.
In class Array, add copy constructors and copy assignment operators.
Add a number of FIXME comments.