Changelog
This file contains the most significant changes to the library as well as upgrade notes for users. For a more detailed list of changes, please refer to the complete changelog.
Upgrading to v0.20
This is a major release with breaking changes, mainly in the Polynomials and ReferenceFEs modules. The main goal of this release is to provide a more flexible and extensible framework for polynomial bases and reference finite elements based on moments, as a stepping stone for the implementation of more complicated elements (e.g. MTW, etc...). The documentation of the affected modules has greatly improved.
New features
- Polynomials: new
ChebyshevandBernsteinpolynomial types; newCartProdPolyBasisandCompWiseTensorPolyBasisgeneralising the old monomial bases to other 1D basis families; new high-level factoryFEEC_poly_basiscovering most spaces in the Periodic Table of the Finite Elements. - ReferenceFEs: new
ReferenceFE(F, r, k[, T]; kwargs...)constructor using FEEC notation; newMomentBasedReferenceFEfactory unifying moment-based element construction; new elementsmodal_lagrangian,modal_serendipity,CrouzeixRaviart, andnedelec2; unified Piola map hierarchy (Pullbacks.jl) and geometric decomposition API. - Default bases: simplex elements (RT, BDM, Nédélec) now use Bernstein bases by default; n-cube elements use Legendre.
- TensorValues: new
SkewSymTensorValueandHighOrderTensorValuetypes; new operationscongruent_prod,contracted_product,component_basis, andrepresentatives_of_basis_dual. Easier conversion to and betweenBase.ArrayandStaticArrays.jlarray types. - FESpaces: new
scale_dofandglobal_meshsizekeyword arguments for theFESpaceconstructor to enable automatic DOF rescaling with mesh size (equivalent to a diagonal preconditioning).
Breaking changes
Nedelec→Nedelec{kind}: replaceNedelec()withnedelec(=Nedelec{1}()) ornedelec2(=Nedelec{2}()).DivConformingabstract type removed:RaviartThomasandBDMnow directly subtypeReferenceFEName.CellFEconstructor: trailing positional args are now keyword args.SignFlipMap,TransformRTDofBasis,TransformNedelecDofBasisremoved: handled internally by the newPullbacks.jlpipeline.- Default polynomial bases changed: internal representations differ from v0.19 — affects serialised data and exact numerical values.
ThirdOrderTensorValueis now a type alias forHighOrderTensorValue. Code relying on type identity may break.MacroReferenceFEconstructor gains a 3rd positional argumentName.Conformity(reffe, sym::Symbol)per-element overloads removed: custom elements must implementvalid_conformity_symbolsinstead.FineToCoarseReferenceFEs.jlno longer loaded.- Old stubs
apply,FETerm,AffineFETerm,LinearFETerm,FESource,FEEnergyremoved from theGridapnamespace.
Deprecations
| Deprecated | Replacement |
|---|---|
MonomialBasis{D}(args...) | MonomialBasis(Val(D), args...) |
JacobiPolynomialBasis{D}(args...) | LegendreBasis(Val(D), args...) |
JacobiPolynomial | Legendre |
QGradMonomialBasis{D}(T, order) | FEEC_poly_basis(Val(D), T, order+1, 1, :Q⁻) |
QCurlGradMonomialBasis{D}(T, order) | FEEC_poly_basis(Val(D), T, order+1, D-1, :Q⁻; rotate_90=(D==2)) |
PCurlGradMonomialBasis{D}(T, order) | FEEC_poly_basis(Val(D), T, order+1, D-1, :P⁻; rotate_90=(D==2)) |
NedelecPreBasisOnSimplex{D}(order) | NedelecPolyBasisOnSimplex(Val(D), Float64, order) |
num_terms(f) | length(f) |
return_type(::PolynomialBasis) | value_type(::PolynomialBasis) |
n_components | num_components |
get_cell_shapefuns(model, cell_reffe, conf) | get_cell_shapefuns_and_dof_basis(...)[1] |
get_cell_dof_basis(model, cell_reffe, conf) | get_cell_shapefuns_and_dof_basis(...)[2] |
get_free_values(space) | get_free_dof_values(space) |
get_dirichlet_values(space) | get_dirichlet_dof_values(space) |