All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Fixed FEEC basis constructor for serendipity reffes. since PR#1260.
- Fixed precompilation error when extending
Conformityfrom theFESpacesmodule. Since PR#1259.
- Minor changesto incorporate the changes in Gridap 0.20, specifically the pullback machinery, into GridapDistributed. Since PR#1258.
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...).
Main PR is PR#1048.
- Documentation and refactoring of
Gridap.Polynomials. Since PR#1072. - Two new families of polynomial bases in addition to
Monomial,Legendre(formerJacobi) andModalC0:ChebyshevandBernstein MonomialBasisandQ[Curl]GradMonomialBasishave been generalized toLegendre,ChebyshevandBernsteinusing the newCartProdPolyBasisandCompWiseTensorPolyBasisrespectively.PCurlGradMonomialBasishas been generalized toLegendreandChebyshevusing the newRaviartThomasPolyBasis.- New aliases and high level constructor for
CartProdPolyBasis(former MonomialBasis):MonomialBasis,LegendreBasis,ChebyshevBasisandBernsteinBasis. - Generalized gradient and hessian of all
CartProdPolyBasisto any tensor type (even with dependant components), as long as the derivative tensor is a tensor of at most third order. Since PR#1184. - New high level factory
FEEC_poly_basisfor the bases for the scalar Lagrange, Nedelec, Raviart-Thomas, BDM spaces, and all other spaces of the Periodic Table of the Finite Elements. (for Serendipity, only scalar is supported). For example:- Nedelec on simplex
FEEC_poly_basis(Val(D),Float64,order+1, 1,:P⁻) - Nedelec on n-cubes
FEEC_poly_basis(Val(D),Float64,order+1, 1,:Q⁻) - Raviart on simplex
FEEC_poly_basis(Val(D),Float64,order+1,D-1,:P⁻; rotate_90=(D==2)) - Raviart on n-cubes
FEEC_poly_basis(Val(D),Float64,order+1,D-1,:Q⁻; rotate_90=(D==2)) - BDM on simplex
FEEC_poly_basis(Val(D),Float64,order+1,D-1,:P ; rotate_90=(D==2))
- Nedelec on simplex
- Added
BernsteinBasisOnSimplexthat implements Bernstein polynomials in barycentric coordinates, since PR#1104. - More documentation of
Gridap.ReferenceFEs. Since PR#1109. - Some refactoring of
Gridap.TensorValuesto simplify maintenance and new implementations. Since PR#1115.- Added
SkewSymTensorValue: a new<:MultiValue2nd order tensor type such thattranspose(s)==-s. - Added
HighOrderTensorValue: a new<:MultiValuetensors of order >=3, with all components independent. Since PR#1193. congruent_prod: new operation for 2nd order tensors:a,b -> bᵀ⋅a⋅bpreserving symmetry ofa.component_basis,representatives_of_componentbasis_dual,representatives_of_basis_dual: new APIs for::MultiValues yielding bases of the vector space spanned by the independent components of a tensor type (1st method) and its dual space (2nd method), or the dual to a basis (3rd method).contracted_productgeneralizesouter,dot,double_contractionandinnerfor tensors of arbitrary order, refactoring these operations for tensors with all components independent. Since PR#1193.
- Added
- Refactoring of moment-based ReferenceFEs, those using face-integral linear forms for DoFs, including
RaviartThomas,Nedelec,BDMandCrouzeixRaviart.- The mid-level
MomentBasedRefFEfactory function creates moment based refFEs - The low-level
FaceMeasureimplements the numerical integration of a bilinear integrand over the faces of a polytope. - The low-level
MomentBasedDofBasisimplements a discretized basis of moment DoF. It supports automatic pre-composition of the field with a differential operator. Since PR#1184.
- The mid-level
- Implemented moment-based scalar (
H1conform) elements for scalar elementslagrangianandserendipityunder the namesmodal_lagrangianandmodal_serendipity. They are the default elements when calling fork=0-forms in the generic FEEC reference FE constructor (P⁻/:P/:Q⁻=>lagrangian,:S=>serendipity), use the keywordnodal=trueto opt-in nodal DOF based counterpart. Since PR#1173. - Unified the high-level constructors of ReferenceFEs
- New high level
ReferenceFEs constructor using Arnold et al FEEC notations (Periodic Table of the Finite Elements):ReferenceFE(F::Symbol, r, k, [, T::Type]; kwargs...)withFthe element family,rpolynomial order andkthe form order. - Added
poly_type,mom_poly_typeandchange_dofkeyword arguments to many low and high-level reference FE constructors, they enable to control the polynomial (pre-)bases choice for the approximation space and moment test-spaces of the reference elements (SeeReferenceFEsdoc. page). Since PR#1173. - Documented the implemented ReferenceFEs with available order and other information in the
ReferenceFEssection of the doc. - Implemented the Nedelec reference elements of the second kind
nedelec2. - API for Geometric decomposition of polynomial bases, implemented for simplices and n-cubes. Since PR#1144.
The geometric decomposition API consist in the methods
has_geometric_decomposition,get_face_own_funsandapply_face_signflip.
- Fixed evaluation of
LinearCombinationDofVectoron vector of<:Fields (only impacts ModalC0 FEs and future moment based reffes). Since PR#1105. - Fixed
get_face_dofs(::ReferenceFEs)on many moment based elements, it sometimes returnedface_own_dofs. - Fixed hessian of
Legendre(formerJacobi) and ModalC0 bases, since PR#1255.
num_terms(f::AbstractVector{<:Field})in favor oflength(f::PolynomialBasis)MonomialBasis{D}(args...)in favor ofMonomialBasis(Val(D), args...)[P/Q][Curl]GradMonomialBasis{D}(args...)in favor ofFEEC_poly_basisNedelecPreBasisOnSimplex{D}(order)in favor ofNedelecPolyBasisOnSimplex(Val(D), Float64, order)JacobiPolynomialBasis{D}(args...)in favor ofLegendreBasis(Val(D), args...)return_type(::PolynomialBasis)in favor ofvalue_type(::PolynomialBasis)
- Split CI into separate jobs to keep test time down. Since PR#1251.
- Fix incorrect permutation handling in
compute_field_offsetsforBlockMultiFieldStyle. Since PR1247. MappedGridnow returns its internal geometric map. Since PR#1226.- Fixed bug in skeleton transient fields. Since PR1229.
- Fixed bug in
FineToCoarseFieldinternal indexing. Since PR1224. - Fixed
outer(f, s::ShiftedNabla)silently ignoring the shift contribution. - Fixed incorrect
else p == HEXcontrol flow inEdgeBasedRefinement.jl. Since PR[1246] (#1246). - Fixed copy-paste bug where
get_tangent_vectorcalledget_normal_vectorinCellFields.jl. Since PR[1246] (#1246). - Generalized
change_domain_o2nso that it can now deal with triangulation portions. Since PR1249. - Generalized Nedelec Hexahedral elements for meshes beyond Cartesian Meshes. Since PR1250.
- Added
testvalue(::Type{<:Tuple})for tuples with an arbitrary number of items. Since PR#1210. - Added
normalizefunction support forMultiValueobjects. Since PR#1211. - Added
sqrtfunction support forTensorValueobjects. Since PR#1212. - Added better ways to iterate over
Table, following theSparseArraysmodel. Mainly, we introducedatarange,dataviewanddataiteratorfunctions. Since PR#1218. - Added a new preference to control the integer type used for indexing local quantities (e.g. faces within a cell). A new function
set_local_integer_typeis introduced, which sets a new typeGridapLocalInt(defaultInt8) that is set at compile time. This allows forGeneralPolytopeswith an arbitrary number of faces. Since PR#1218. - Added new function
compute_graphreturning the face-connectivity of meshes and submeshes. Since PR#1218. - Added a new API to change the block structure of multi-field cellfields. The
MultiFieldFEBasisComponentandMultiFieldBasishave now new constructors that easily allow to recast a multi-field space with a different block structure. Since PR#1218. - Various improvements to the polytopal API. For
GeneralPolytopes, addedis_convex,signed_area,signed_volume,convexify(2D),extrude, as well as several low-level functions to manipulate polytopes. We now compute normals using Newel's algorithm, which is more stable. Since PR#1218.
- Reworked the
CellConformityAPI to be more flexible and extensible, while optimizing certain parts.CellConformityis now abstract, with new concrete typesGenericCellConformity(stores generic arrays),CompressedCellConformity(stores compressed data optimized for low number of reffe types, oldCellConformity), andDiscontinuousCellConformity(DG-type conformity, much faster for discontinuous spaces). For all new conformities, I have introduced a new API to query dof masks based on the faces dofs belong to, mainlygenerate_cell_dof_maskandgenerate_dof_mask. Since PR#1218.
- Fixed lack of more general tests for Nedelec ReferenceFEs. Added a test which is currently broken. Since PR#1216.
- Small bugfix in
face_labeling_from_cell_tags. Since PR#1218. - Fixed
getindex!when the given indexes need to be converted the indexstyle of the array (cache isn't skipped anymore). Implemented the bound check elusion API in mostArraysarraysSince #1213. - Fixed
TransientCellFieldskeleton evaluation for:minusside. Since PR#1229.
- Existing Jacobi polynomial bases/spaces were renamed to Legendre (which they were).
Monomialis now subtype of the new abstract typePolynomial <: FieldMonomialBasisis now an alias forCartProdPolyBasis{...,Monomial}- All polynomial bases are now subtypes of the new abstract type
PolynomialBasis <: AbstractVector{<:Polynomial} get_order, now always returns the maximum order of the basis, the correspondence withReferenceFEsconstructors is summarized in the documentation of the module.NedelecPreBasisOnSimplexis renamedNedelecPolyBasisOnSimplexJacobiPolynomialis renamedLegendreand subtypesPolynomialJacobiPolynomialBasisis renamedLegendreBasisModalC0BasisFunctionis renamedModalC0and subtypesPolynomial- On simplices, the default polynomial bases of BDM, Nédélec and Raviart-Thomas RefFEs have changed for barycentric polynomial bases which lead to better conditioned systems for higher order.
- Similarly, on n-cubes, the default polynomial bases of BDM, Nédélec and Raviart-Thomas RefFEs have changed for Legendre (tensor-product) polynomial bases instead of Monomials.
- Changed
Base.==forReferenceFEs, and implemented it forLinearCombinationFieldVectorandLinearCombinationDofVector. The implementation now uses AutoHashEquals.jl, so RefFEs are now only equal if they have the same prebasis, shapefun and dofs. - Monomial (pre)bases have been replaced with Bernstein / Barycentric bases for non-scalar finite elements on simplices.
ThirdOrderTensorValue{D1,D2,D3,T,L}has been redefined as alias toHighOrderTensorValue{Tuple{D1,D2,D3},T,3,L}.
-
Added the symmetric quadrature rules of Witherden and Vincent, correctness tests for all quadrature rules, and minor extensions to the interfaces of
QuadratureandPolytope. Since PR#1169.- Added the symmetric quadrature rules of Witherden and Vincent for tri/tet, quad/hex, wedge and pyramid.
- Added
maxdegree(p::Polytope, name::QuadratureName)to the interface ofQuadrature. - Enriched the tests for quadratures by checking
tensor_product,duffy, andwitherden_vincentagainst exact integrals for monomials on the corresponding polytopes (tri/tet, quad/hex, wedge and pyramid, respectively). Other quadrature rules are compared against these tested ones. - Added
get_measure(p::Polytope, vertex_coords)andget_diameter(p::Polytope, vertex_coords)to the interface ofPolytope.
-
The default quadrature for simplices is now
witherden_vincentuntil available, thenxiao_gimbuttasuntil available, thenduffy. Since PR#1169. -
Added specific tags on dual numbers to allow for nested AD without perturbation confusion. Since PR#1181.
-
Updated the documentation of
Polytope{D}'s type parametersD, it is correctly described as the polytope's dimension (instead of embedding dimension). Since PR#1194. -
Added compatibilty for
JSON.jlv1+ andJDL2.jlv0.6+. Since PR1198.
- Fixed issue #1188. Fix one() function for non-square tensors.
- Fixed
strangquadrature of order 4 for triangles. Since PR#1169. - Minor
MuliValuebugfixes forislessand<=with scalars.
- Added specific tags on dual numbers to allow for nested AD without perturbation confusion. Since PR#1181.
- The default quadrature for simplices is now
witherden_vincentuntil available, thenxiao_gimbuttasuntil available, thenduffy. Since PR#1169.
- Added support for subdividing unstructured meshes to any level, including periodic ones. Since PR#1143.
- Fixed issue #1174. Since PR#1175.
- Fixes the issue that a single CellField could not be passed to TrialFESpace constructor in cases where more than one tag was being passed to dirichlet_tags kw-arg argument. Since PR#1177.
- Added extension for
TikzPictures.jl. Since PR#1150. - Added
eigenfunction support forTensorValueobjects. Fixes issue #1156. Since PR#1157. - Added kwargs support for
isapproxfunction onMultiValueobjects. Since PR1158 - Misc improvements of
TensorValuesAPIs and indexing methods. Since PR#1162.- Indexing tensors using slices (
:/Colon()), (static)vectors or arrays, ranges (OneTo,SOneTo), or mix of them. - Implemented
Base.keysthat relates to the array shape of theMultiValue - Constructors
MV(::[S/M]Array)andSA(::MultiValue)for any typesMV<:MultiValueandSA<:[S/M]Arrayfor arguments for which the conversion viaconvertis possible.
- Indexing tensors using slices (
- Added new way of doing AD for MultiField, where partials are computed separately for each field then merged together. Since PR#1136.
- Added low-level API
Arrays.invalidate_cache!(cache)that forces the re-computation of values inLazyArraycaches. Since PR#1137. - Added support for star-patch integration, i.e patch integration with masked patch boundaries. Since PR#1138.
- Added compatibility for
DataStructures.jlv0.19.0. Since PR#1149.
- Small modifications to
PolytopalQuadratureto make it more flexible. Since PR#1149.
- Fixes issue #1119, allowing evaluation of
CellFieldson arbitrary points on periodic meshes. Since PR#1139.
MultiFieldFEBasisComponentnow supports addition and subtraction. Since PR#1130.- Fixed issues introduced in PR #1130. Closes issue #1131. Since PR #1132.
- Removed method ambiguity in
Adaptivity.setup_edge_based_rrules. Fixes issue #1133. Since PR#1135.
- Added missing operations between
SkeletonPairs. Since PR#1122. - Added bubble elements for simplex and cube-like polytopes. Since PR#1124
- Update
normfunction to be compatible with complex vectors and tensors. Since PR#1118. AdaptivityGluecan now deal with non-surjective n2o maps. Since PR#1126.
- Minor bugfixes from v0.19. Since PR#1111.
- Support for polytopal meshes in 2D and 3D. New structures
PolytopalGridTopology,PolytopalGridandPolytopalDiscreteModel. Since PR#1110. - Support for non-overlapping triangulations. Both
BodyFittedTriangulationandBoundaryTriangulationhave been extended to support repeated face ids. In particular, theFaceToCellGluehas a new constructor. Since PR#1110. - Support for patch-wise integration and local solves. New structures
PatchTopology,PatchTriangulationandPatchAssemblerhave been added. These structures allow for the integration, assembly and solution of local problems on (potentially overlapping) patches of the mesh. Since PR#1110. - Support for polynomial spaces on polytopal meshes. New structure
PolytopalFESpacehas been added. Since PR#1110. - With all of the above, we have support for hybrid non-conforming methods on polytopal meshes. Examples have been added for HDG and HHO in 2D and 3D. Since PR#1110.
- The
tolkwarg forInterpolablewas unused. It is now used for the point-to-cell search, which was breaking for very small cell sizes. Since PR#1106.
- Added functionality to allow automatic differentiation of integrals with respect to evaluation positions xh where xh is a FEFunction. Since PR#1095
- Fix bug for issue #927, where Nedelec FE would not work on faces (Dc < Dp). Since PR#1094.
- Added support to evaluate polynomial bases on dualized points. Since PR#1100.
- Added definition for
DiracDeltawithTriangulationargument. Since PR#1087.
- Fixed the failure of hessian over sum/product two
Fields orCellFields as reported in issue #875 by adding the relevant manual chain rules. Since PR#1053.
- Modified the
LinearStageOperatorstruct to align it with theNonlinearStageOperator. Addedusx,wsandtxas new fields in the struct. Since PR#1089. - Misc
TensorValuesimprovements since PR #1092.MultiValues can now be indexed by tuples of mixedIntegerandCartesianIndex- Indexing in
MultiValues now performs bound checks, that can be disabled using@inboundsor Gridap's performance execution mode. - Make sure that the result of all operation (empty/zero tensor) of correctly promoted (element) type when applied to tensor(s) of length zero
- An argument error is now thrown when calling
tr(::ThirdOrderTensorValue{A,B})withA!=B
- Added corresponding function
get_tangent_vectortoget_normal_vector. This method calculates the (unique up to sign) tangential unit vector to edges in 2D meshes, by rotating the normal (nx, ny) -> (ny, -nx). Since PR#1071.
realandimagfunctions now return a real TensorValue. Since PR#1080.- Refactor of automatic differentiation for multi-field spaces. Now there is a more consistent implementation covering all cases. Since PR#1070.
- Added AMR-related methods
markandestimatetoAdaptivitymodule. Implemented Dorfler marking strategy. Since PR#1063.
- BUG in
FineToCoarseFields.jl. Since PR#1074.
- Low level optimisations to reduce allocations.
AffineMaprenamed toAffineField. NewAffineMap <: Map, doing the same asAffineFieldwithout struct allocation. NewConstantMap <: Map, doing the same asConstantFieldwithout struct allocation. Since PR#1043. ConstantFESpacescan now be built on triangulations. Since PR#1069
- Added get_dof_value_type for FESpacesWithLinearConstraints. Since PR#1062.
- Added Xiao-Gimbutas quadratures for simplices. Since PR#1058.
- Small improvements of the documentation of
Gridap.TensorValues. Since PR#1051.
- Fixed #974, an error when weak form is real but unknown vector is complex. Since PR#1050.
- Fixed issue where barycentric refinement rule in 3D would not produce oriented meshes. Since PR#1055.
- Optimized MonomialBasis low-level functions. Since PR#1059.
- Added MacroFElements. These are defined as having the basis/dof-basis of a FESpace created on top of a RefinementRule. Since PR#1024.
- Added Barycentric refinement rule in 2D and 3D. Added Simplexify refinement rule. Since PR#1024.
- Added names to vector and tensor components in VTK exports, to avoid Paraview's automatic (sometimes wrong) guesses. See
TensorValues.indep_components_names. Since PR#1038. - Misc improvements of the
TensorValuesmodule: SeeTensorValues.indep_components_names. Since PR#1040.- Documented all symbols exported by the module
- Improved and added test for some API function of
MultiValue(generaldiagof 2nd order tensors, fixedconvertof 3rd order tensors to SArray, avoid unwanted fallback ofnum_componentsonMultiValuetypes with undefined dimensions, more autodiff tests, betterdouble_contractionAPI (prevent invalid operation giving indexing errors and enable valid operations)). - Added a clear separation between the physical components access (
getindex,num_components) and the numerical access to the stored independent components (num_indep_components,indep_comp_getindex) to enable using symmetric tensor types as unknown in FE Spaces. - Implemented automatic differentiation
gradientandlaplacianfor second order tensor, anddivergencefor third order tensors. - Added
AbstractSymTensorValue, an abstract type for second order symmetric tensors, andSymTracelessTensorValue(aliased toQTensorValue), a type for traceless symmetric tensors.SymTensorValueis now subtype ofAbstractSymTensorValue. - A convergence test for Poisson problem of
QTensorValueunknown field validates the implementation.
- Added support for benchmarking, through
PkgBenchmark.jl. Since PR#1039. - Added code quality tests, through
Aqua.jl. Since PR#1039.
- Fixed constructor of RungeKutta with only one solver. Since PR#999.
- Conforming FESpaces now keep track of their
CellConformityinfo, within themetadatafield. Since PR#1042.
- Improved performance of PR#967. Along the way, opened the door to Triangulations of different type in SkeletonTriangulation. Since PR#1026.
- Misc changes required to support facet integration on non-conforming meshes. These changes do not involve methods of the public API. Since PR#967
- Added WriteVTK kwargs to control the output encoding for vtk files. Since PR#1016.
- Passing
kwargsfromrefinetosimplexifyfunctions in Adaptivity. Since PR#1015. - Fixed
interpolateforZeroMeanFESpace. Since PR#1020. - Fixed
gather_free_and_dirichlet_values!forFESpaceWithConstantFixed. Since PR#1020.
-
Added more features to Adaptivity. Notably: 3D uniform edge-based refinement for HEX and TETs. Barycentric refinement for simplices. Simplexify as a new refinement strategy. Since PR#1013.
-
Define
GeneralPolytopethat represents general polytopes in 2 and 3 dimensions. Since PR#1006.
- Added local preferences for Gridap through
Preferences.jl. The macro@checkcan now be activated/deactivated by using the local preferenceexecution_mode. Since PR#1014.
- Bugfix in
get_face_dofsfor Nedelec GenericRefFE. Since PR#1005. - Ensure deterministic behavior for matrix assembly involving multiple domains. Since PR#1004.
- Changed the sign of the residual in
TransientLinearFEOperatorto align with the conventions ofAffineFEOperator. Since PR#996.
- Bugfix in
restrict_to_fieldforBlockMultiFieldStyle. Since PR#993.
- ODE module extensive refactor. Breaking changes! See docs and PR for details. Since PR965.
- Fixed name clash with
Statistics.mean. Since PR#988. - Deprecated
SubVectorin favor of Julia'sview. Since PR#989.
- Added some missing API methods to
AssemblersandMultiField. Since PR#985.
- Fix when evaluating
\circoperator withCellState. Since PR#987.
- Changed how
symbolic_loop_matrix_vector!loop works. Now it also takes account vector entries touched from matvecdata. Since PR#975.
- Added
get_dof_to_nodeandget_dof_to_compforLagrangianDofBasis. Since PR#964.
- Changed how
allocate_vectorworks. Now it only allocates, instead of allocating+initialising to zero. Since PR#963.
- Fixed issue where
FineToCoarseFieldwould not work for vector-valued fields. Since PR#970. - Fixed issue where
BlockSparseMatrixAssemblerwould not work correctly when permuting variables. Since PR#971.
- Implemented real/imag for VectorValues
- Explicit Runge-Kutta ODE Solvers. Since PR #952
- Improved the methods
allocate_in_rangeandallocate_in_domainwith support forBlockArraysand distributed arrays. Since PR#960.
BlockMultiFieldStyleavailable forTransientMultiFieldFESpacessince PR #946.- When creating
DiscreteModelPortions, some of theFaceLabelingarrays were being aliased. This caused issues when adding tags to distributed models in debug mode. Since PR #956. - Function
add_entry!was inconsistent forAbstractMatrixandAbstractSparseMatrix. Since PR#959.
- Block assembly now generalised to work with
AbstractBlockArrays, to include changes in GridapDistributed. Since PR 939. - Implici-Explicit Runge-Kutta ODE solvers. Since PR #919.
- Using Broadcasting(\circ) instead of \circ in one of the lazy_maps used to transform a coarse field into a fine field. Since PR #938.
- Better infinite norm computation in
Algebra._check_convergence. Now works for anyAbstractArraytype, includingPVector. Since PR #940. - Updated Runge-Kutta solver. Since PR #919.
- Reimplemented
DomainStyleforCellQuadratureto fix breaking low-level Poisson tutorial. Since PR #937.
- Jacobi polynomial bases. Since PR #896.
- Replaced newest vertex bisection mesh adaptation in
src/Geometry/NewestVertexBisection.jlwith appropriate changes tosrc/Adaptivity/EdgeBasedRefinement.jl. Since PR #901. - When refining
DiscreteModels, theFaceLabelingof the resultingAdaptedDiscreteModelwill now correctly inhering the tags of the parent model. This has been made possible by the addition of the methodget_d_to_face_to_parent_face. Since PR#886. - Added support for mixed adaptivity (i.e coarsening and refining), as well as non-conforming adaptivity. Since PR#886.
- Added support for block assembly of FE systems. Two new types
BlockMultiFieldStyleandBlockSparseMatrixAssemblershave been added. Since PR#915.
- The API of
CellQuadraturehas now both data and integration domain styles as keyword arguments. Old signatures are deprecated. Since PR #885.
- ODE operators cache linear system at initial time or the time stored by the operator. Before, the linear system was cached at time
t = 0.0, which cannot be done if the operator is not well-defined att = 0.0. Since PR #891. - Fixed the method
get_normal_vectorforAdaptedTriangulation. The methodget_facet_normalwas using default, it's now using the spetialized implementation for the underlying triangulation type. Since PR #884. - Fixed
cell_dof_idsfor the case of vectorialConstantFESpace. Since PR #888 - Fixed generation of Modal C0 bases for Julia 1.9. Since PR #918.
- Fixed some edge cases for
change_domainbetweenAdaptedTriangulationswhere inneficient coordinate transformations would be applied between physical and reference domains. Since PR#886. - Fixed: Domain limits can now be of any type (notably, floats) when refining
CartesianDiscreteModels. Since PR#886.
- Implemented
RefinementRuleandAdaptivityGlue, which encode the mapping between the old and new cells in an adapted model. Since PR #838. - Implemented
AdaptedDiscreteModelandAdaptedTriangulation, representing respectively a model and triangulation produced by adapting a parent model. This types mostly wrap aroundDiscreteModelandTriangulation, with some added features necessary to keep track of the adaptive hierarchy. Since PR #838. - Implemented tools to be able to transfer
CellDatums back and forth between parent and child grids. These include changes tochange_domain(which now takes the sourceTriangulationas argument) and a new type ofMeasurecalledCompositeMeasure, which allows the integrationTriangulationto be different from theTriangulationof the resultingDomainContribution. To accommodateCompositeMeasure,Measurehas been made abstract type and aGenericMeasurehas been created to replace the old type. Since PR #838. - For the fine-to-coarse transfer of
CellFields, the newFineToCoarseFieldhas been implemented. This new structure bundles several fields defined on the fine mesh to create a single field on the coarse mesh. To enable fast interpolation of this type of field, we have also implementedFineToCoarseReferenceFEandFineToCoarseDofBasis. Since PR #838. - Implemented
CompositeQuadrature, a quadrature for a cell that has been refined using aRefinementRule. Since PR #838. - Implemented simple refinement strategies for Cartesian discrete models in 2&3D as well as Unstructured discrete models in 2D. The latter is implemented by red-green refinement. Since PR #838.
- Added optimization when calling
uniquefor aCompressedArray. Since PR #838. - Added support for changing domain between adapted triangulations in cases where the target triangulation is a view, a
BoundaryTriangulationor aSkeletonTriangulation. Since PR #868.
- Using broadcasting through in
ODESolvervector operations. Since PR #860 - Fixes to
array_cache(a::Table): Now does not use thezero(T,N)function, but instead creates new empty vector using the general allocatorVector{T}(undef,N). This allowsTableto work with complex composite types which don't have an easyzero(T)function defined. Since PR #838. - Added
get_metadatato all the instances ofReferenceFE. This makes the abstract type more consistent, which is necessary for the new typeFineToCoarseReferenceFE. Since PR #838. ConstantFESpaceis now properly exported. Since PR #872.
- Fixed a bug in function
collect_cell_matrix_and_vector. Since PR #849
lastindexforMultiValues for consistent usage of[end]as perlength. Since PR #834- BDM (Brezzi-Douglas-Marini) ReferenceFEs in PR #823
- Implemented
ConstantFESpace. This space allows, e.g., to impose the mean value of the pressure via an additional unknown/equation (a Lagrange multiplier). Since PR #836 - Methods to construct
DiracDeltaat genericPoint(s) in the domain. Since PR #837 - some key missing
lastindexandendtests belonging to PR [#834]. Since PR #837 AbstractVectorsupport to weights andPoints of GenericQuadrature, in particular forFillArrayusage. Since PR #839- Using the above generalization of
GenericQuadrature, made the weights of quadrature ofDiracDeltafor generic points to be aFillvector. Since PR #839 - Optional keyword argument
Tto select the floating point precision for the numerical quadrature pipeline involvingMeasure,CellQuadratureandQuadraturefunctions.Tdefaults toFloat64when not specified, so it doesn't involve any breaking changes in public API. Since PR #840
- Functionality to take gradient of functional involving integration (
DomainContribution) over Skeleton faces, with respect to the degrees-of-freedom ofFEFunction. The interface remains the same -gradient(f,uh). Since PR #797 - Extended the
MultiFieldfunctional gradient (with respect to degrees-of-freedom ofMultiFieldFEFunction) to functionals involving Skeleton integration. The interface remains the samegradient(f,xh). Since PR #799 - Functionality to take jacobian of functional involving integration (
DomainContribution) over Skeleton faces (obtained from testing bilinear form with the whole set of testfe_basis), with respect to the degrees-of-freedom ofFEFunction. The interface remains the same -jacobian(f,uh). Since PR #803 - A dummy tag for ForwardDiff configs being constructed in Gridap at
src/Arrays/Autodiff.jlto fix issue #805. Since PR #806
- The behavior of
gradientfor functionals involving operations ofCellFieldsinsidemeanandjumpterms of Skeleton Integration terms. Since PR #800 - The behavior of
SkeletonCellFieldPairat the Boundary integration terms. Since PR #800 push_normalfor rectangular Jacobians. Since PR#809- Nedelec FEs with triangles. Since PR #813
Gridap.jacobianfor Skeleton integration terms, in the case of general test basis where dim not same as trial basis. Since PR #815
KeyToValMaplazy map that dynamically creates aDictwith the outputs of a function over an array of inputs. Since PR #801MappedDiscreteModelandMappedGrid, which are geometrical models with one extra geo map in the physical space. Since PR #801GridWithFEMap, which has a geometrical map defined by a FE function. Since PR #801- Vertex bisection algorithm for refinement of triangular meshes in 2D. Since PR #733
- Generalized-α method for 1st order ODEs. Since PR #781
- Implemented (generalised) ModalC0 Polynomial bases and reference FEs. Since PR #777
- Serendipity reference FEs for any dimension and order. Since PR #777
- Implemented addition/subtraction between a
TensorValueand aSymTensorValue. Since PR #755. - Nédélec elements on simplices (lowest order interpolation for the moment). Since PR #758.
- Restrict to the active model the evaluation of a FE function at arbitrary points. Since PR #752.
- Renamed
GridapODEstoODEs. Since PR #756
- Extra support for dual number propagation. Since PR #653
- Added ODE tools to Gridap. GridapODEs has been merged into Gridap. Sice PR#748
- Support for periodic conditions in
CartesianDiscreteModels built fromcmin,cmax. Since PR #738. - Function
savepvd. Since PR #736. - Support for passing
nothingas the first argument of theCartesianDiscreteModelconstructor to mimic the API ofGridapDistributed. Since PR #735.
- Bug in
SymTensorValue. Since PR #740. - Bug in interpolation at arbitrary points. Since PR #729.
- Bug in
reference_grid(TET). Since PR #734. - Bug in computation of Hessian with AD for multi-field. Since PR #731.
- Improving compile times by removing unnecessary
@inlinestatements. Since PR #726.
- CellFE constructor now gets optional arguments and pass them down. Since PR #728.
- Implemented
Base.unaliascopy(A::SubVector). Since PR #715.
- Bugfix in
Base.view(glue::FaceToFaceGlue,ids::AbstractArray). Since PR #724.
- Hiding the creation of
FESolverandLinearFESolverfrom user code. Since PR #705.
- Using implementation of
pvtk_gridprovided in WriteVTK. Since PR #699.
- Adding a newer version of WriteVTK in the [compat] section. Since PR #698.
- AD with multi-field residuals with different num dofs per field. Since PR #687.
- Laplacian
Δoperator on unstructured linear grids for quantities defined in the reference space (i.e. shape functions in standard FEM). Since PR #691. - Laplacian
Δoperator on triangulations usingGridView(e.g., when interpolating functions in a sub-domain or on the boundary). Since PR #691. - Fixed typo in , function
solve! ofLinearSolvers.jl`. Since PR #692.
- Aliases
Interior,Boundary,Skeleton, andInterfacefor theTriangulation,BoundaryTriangulation,SkeletonTriangulation, andInterfaceTriangulationconstructors. Since PR #662. - Function
create_pvtk_filefor exporting results inpvtuformat. Since PR #685.
- Major refactoring in the
Triangulationinterface to properly support the solution of PDEs defined on domains of different dimension. The major change from the user perspective is thatTriangulationobjects can be used both to integrate the weak form (as before) but also to define FE spaces (except for unfitted triangulations obviously). It is still possible to define FE spaces fromDiscreteModels, but it is safer and more idiomatic (closer to the math notation) to useTriangulationobjects from now on. Since PR #662. - Changes in assembly interface to allow optimization when assembling matrices and vectors simultaneously. Since PR #685.
BoundaryDiscreteModel,RestrictedDiscreteMdeol,RestrictedTriangulation,TriangulationStyle,BackgroundTriangulation,SubTriangulation,get_cell_to_bgcell,get_cell_ref_map,get_background_triangulation, andhave_compatible_domains. Since PR #662.- Functions
scale_entries!andfill_entries!. Replaced by Julia functionsLinearAlgebra.rmul!andLinearAlgebra.fillstored!. Since PR #680.
- Implemented DIV operator for FE functions in RT space. Since PR #650.
GenericAssemblyStrategy. Since PR #655.- Additional high level API assembly functions. Since PR #652.
- Bug related with the release of ChainRulesCore version 1.3.1. Since #654.
- Inheritance relationship for DiscreteModelPortion. Since PR #645.
- Optimization to RT FEs. Since PR #638.
- Bug in boundary discrete model. Since PR #651.
- Trait to CellQuadrature to support the evaluation of integrals on the reference domain. Since PR #636.
- Type
Interpolableallowing to interpolate data from two independent meshes. Since PR #632.
- Deactivating optimizations related with
MemoArraysince they are not reliable. Since PR #624. - Bug related with
ArrayBlock. Since PR #623.
- Bug related with boundary integration caused by some optimization introduced in v0.16. Fixed via PR #616.
- Bug for 1st order FE spaces in combination of 1st order models with periodic BCs. Since PR #611.
- User API to select specific quadrature rules. Since PR #578.
- Experimental support for mixed dimensional PDEs. Since PR #567.
- Added
get_cell_dof_basis(model,cell_reffes,::Conformity)andget_cell_shapefuns(model,cell_reffes,::Conformity). Since PR #579. - Implemented
get_cell_dof_basisandget_cell_shapefunsfor global RT FE spaces in a new fileDivConformingFESpaces.jl. Since PR #579. - Added support to allow evaluation of FE functions at arbitrary points. Since PR #523.
- Implemented
compute_cell_points_from_vector_of_pointsto buildCellPointfrom a vector of points. Since PR #523.
- Major refactoring in the handling of blocks (e.g. in multi-field and skeleton terms). The new code follows a much more simple approach based in the new type
ArrayBlock. Since PR #583. - The default quadrature rule for tets has changed. Since PR #578.
- Refactoring in
SparseMatrixAssemblerto make it more extensible and efficient. Since PR #568. - Renamed
get_free_values->get_free_dof_values. Since PR #567. - Renamed
get_dirichlet_values->get_dirichlet_dof_values. Since PR #606. - Renamed
object->valuethe variable inConstantField. Since PR #606. - Miscellaneous changes in the FE assembly to allow the solution of mixed dimensional problems. Since PR #567.
- Renamed
get_cell_shapefunsbyget_fe_basis. Since PR #579. - Renamed
get_cell_shapefuns_trialbyget_trial_fe_basis. Since PR #579. - Renamed
get_cell_dof_basisbyget_fe_dof_basis. Since PR #579. - Removed
conformityoptional keyword argument fromFESpace(::DiscreteModel,::CellFE; kwargs...)constructor. Since PR #579. - Replaced
CellFE(::AbstractArray{<:Field},::AbstractArray{<:ReferenceFE})byCellFE(::DiscreteModel,::AbstractArray{<:ReferenceFE},::Conformity). Since PR #579.
- All code associated with with
BlockArrayCoo. Since PR #583. - Module
Gridap.Integrationhas been deleted and its contents have been merged intoGridap.ReferenceFEsmodule. - Types
SparseMatrixCSRandSymSparseMatrixCSRhave been moved to the registered packageSparseMatricesCSR. To use them simply addSparseMatricesCSRinto your environment and typeusing SparseMatricesCSR. Since Since PR #568. - Removed
PushForwardMapand all code depending upon it. Since PR #579.
- Differential operators
(∇+k)(u),(∇+k)⋅u,(∇+k)×u,(∇+k)⊗u, andu⊗(∇+k)for someu::CellFieldandk::VectorValue. Since PR #597. - Definition of
u.*vbetween instances of vector-valuedCellFieldobjectsuandv. Also differential operators∇.*uand(∇+k).*u. Since PR #597.
- Bug in
CartesianDiscreteModelwith periodic boundary conditions that shows up in Julia 1.6 but not in Julia 1.5. Since commit da005cf.
get_cell_mapnow returns array ofAffineMapfor linear grids of simplices. Needed to compute Laplacian operator, inverse maps etc. Since PR #553.
- Bug in
print_op_tree. Since PR #563
- Method
inverse_mapforAffineMap. Since PR #552. - Method
get_cell_pointsforCellDof. Since PR #551. - Evaluation of
MonomialBasisobjects at a single point. Since PR #550. randfunction forMultiValueobjects. Since PR #530.
- Bug in
return_valueforBroadcasting(∇∇). Since PR #554. - Bug in
dotfor third order tensors. Since PR #544.
- Added support for Hessian and Laplacian operators. Only implemented for Finite Elements with an
AffineMap. Since PR #514.
- Bug in
RestrictedDiscreteModelfor periodic boundary conditions. Since PR #517. - Bug in
sum(a::LazyArray)wheneltype(a) <: AbstractArray. Since PR #513.
This version is a major (backwards-incompatible) refactoring of the project which is not summarized here for the sake of brevity. Most of the functionality of v0.14.0 is available in v0.15.0, but possibly with a significantly different API. See here the changes in the sources of the Gridap Tutorials between versions 0.14.0 and 0.15.0 to effectively see the major changes in the API.
- Added additional tensor operations and new double contraction notation
⋅². Implemented azeroconstructor forThirdOrderTensorValuesto allow integration of 3-tensors. Since PR #415.
- Bug-fix for 32-bit Julia: Replace all occurrences of Int64 by Int. Since PR #445.
- Bug-fix for 32-bit Julia. Using inttype=Int keyword argument for JSON parsing. Since PR #456.
- Added VectorWithEntryInserted and VectorWithEntryRemoved. Since PR #401.
- Added missing get_constant_approach() getter to FESpaceWithConstantFixed. Since PR #409.
- The name FESpaceWithLastDofRemoved has been deprecated in favor of its generalization FESpaceWithConstantFixed. Since PR #396 and PR #404.
- Support for Julia v1.0. Now, the minimum supported is Julia v1.3. Since PR #376.
- Major refactoring associated with the handling of elemental matrices and vectors in multi-field computations and also on the skeleton. Since PR #376.
- First and second argument switch in
update_state_variables!in order to have function-first style. Since PR #376. - Table struct has been generalized such that data and ptrs arrays can be of an arbitrary type extending AbstractArray. Since PR #310
interpolate, interpolate!, interpolate_dirichlet...switched argument order to function first style. For instanceinterpolate(u, V)instead ofinterpolate(V, u)
- Allowing the construction of an
HomogeneousTrialFESpacefrom aTrialFESpace. Since PR #384. - Support for automatic differentiation of residuals and Jacobians in multi-field computations since PR #383.
- New
FilterKernelsince PR #379.
- Bug associated with boundary triangulation in 1D discrete models. Since PR #393.
- New
FilteredCellArraysince PR #372.
Visualization.visualization_datafunction that makes it easier to bring fields into visualization library friendly formats. Since PR #354.- Gradient of a product binary operation (
*) between a scalar and a field. Since PR #340.
- Automatic differentiation of the Jacobian from a given residual and the Jacobian and the residual from a given energy. Not working at this moment on the Skeleton nor for multi-field (WIP), but yes for other cases.
Now, the user can omit
jacfromFETerm(res,jac,trian,quad), i.e.FETerm(res,trian,quad)and the Jacobian will be automatically generated. In addition, the user can writeFEEnergy(ener,trian,quad)for a givenener(uh)function and the residual and the Jacobian will be automatically generated. Since PR #338.
- Automatic differentiation for symmetric gradient, i.e.
ε(u)for a given vector-valued functionu. Since PR #327. - Added missing SparseMatrixAssembler constructor for MultiFieldFESpaces. Since PR #320.
- kw-argument
spacetoLagrangianRefFEconstructor in order to select the type of underlying polynomial space, i.e.,:Q,:S, or:P. Since PR #321.
- The meaning of
inward/outwardhas slightly changed forSkeletonCellBasisobjects. Now, by accessing to these properties aReducedSkeletonCellBasisis returned, which allows to use the result in a more flexible way (in particular, the result can be used in a similar way than the result ofjumpormean). Since PR #317. - Major refactoring in
ReferenceFEsmodule. Since PR #319 and #321. In particular:NodalReferenceFEhas been replaced by a new abstract typeLagrangianRefFE.GenericNodalCartesianRefFEhas been replaced byGenericLagrangianRefFE.
- Removals associated with the
ReferenceFEsrefactoring in PR #319:- Removed
QDiscRefFEconstructor. Use a standardLagrangianRefFEandL2Conformityinstead. - Removed
PDiscRefFEconstructor. UseLagrangianRefFEconstructor with the kw-argumentspace=:P. - Removed
CDLagrangianRefFEconstructor. Use a standardLagrangianRefFEandCDConformityinstead. - Removed fields
face_own_dofsandface_own_dof_permutationsfromGenericRefFE. - Removed struct
DiscRefFE.
- Removed
- Better handling of FE terms defined on empty triangulations. Since PR #329.
- Replaced
+=byadd_entry!. Since PR #316. - Minor fix to let Vtk.jl support changes in Vtk 1.7.X versus 1.6.X. Since PR #324.
- Added
SkeletonTriangulationconstructor in order to integrate, where a given interpolation is discontinuous. Since PR #304. - New
ConformingFESpaceconstructor. Since PR #293. - Added
QDiscRefFEconstructor forDiscRefFE. Since PR #293. - New
FESpaceconstructor that takes an instance ofReferenceFE. Since PR #294. - New
FESpaceconstructor that takes an instance ofConformity. Since PR #311. - New
CDLagrangianRefFEstruct, that provides a Lagrangian reference FE with different conformity per direction. Since PR #299. - New
FESpacemethod that takes a model and aRefFE. Since PR #299. - Possibility to have 0 order in
DISCdirections of aCDLagrangianRefFE. Since PR #308. - Added setindex! method for Reindexed. Since PR #309.
- Changed the interfaces of
ReferenceFEandNodalReferenceFEin relation of DOF ownership. Now functionget_face_own_dofsand related ones are parametrized by aConformityobject. Since PR #311. - The constructors
GenericRefFE,GenericNodalCartesianRefFE, andcompute_conforming_cell_dofstake an extra argument of typeConformity. Since PR #311. - Renamed
PDiscRefFE->DiscRefFEstruct keeping the name for constructor. Since PR #293. - One of the
GradConformingFESpacemethods now more generalConformingFESpace. Since PR #293. DivConformingFESpaceandCurlConformingFESpaceconstructors eliminated. Since PR #293.- Extend table to support arbitrary vector types. Since PR #310.
- Construction of
VectorValue,TensorValue, et al. objects from non-homogeneous arguments. This solves some problems associated with automatic differentiation. Since PR #298. CDLagrangianRefFEnode ordering. Since PR #305.
- Method
solve!(x,ls,op::AffineOperator,cache::Nothing,newmatrix). Since PR #288.
- Bug related with
WriteVTKversion 1.7. Fixed via PR #287. - Bug in outer constructor of Table{...} for input arrays of abstract type. Fixed via PR #285.
- Bug in the handling of caches in
NLSolver. Fixed via PR #283. - Bug that showed up when interpolating a FE function defined on an
ExtendedFESpaceonto a non-extendedFESpace. Fixed via PR #282.
- Operator
⊙(\odot) as an alias ofinner. Since PR #239. - Operator
⊗(\otimes) as an alias ofouter. Since PR #239. - Support for (symmetric) 4th order tensors. Since PR #239.
- Optimizations for symmetric 2nd order tensors. Since PR #239.
- Methods for
crossfunction (aka×(\times)) to operate withVectorValues. Since PR #280. - Interpolation is now supported also for multifield spaces. Since PR #279.
- Major refactoring in the module
Gridap.TensorValues. Since PR #239. The following changes are likely to affect all users:- The operator
*is not allowed for expressing the dot product anymore. UseLinearAlgebra.dotfunction aka⋅(\cdot). - The syntax
∇*uis not allowed anymore. Use∇⋅uinstead. - Gridap re-exports
dot,⋅, and other names from LinearAlgebra that are used often in Gridap code. - Function
n_componentsis renamed tonum_components.
- The operator
- The
SingleFieldFESpaceinterface has changed. The functiongather_free_and_dirichlet_values!has been added as mandatory for all FE space implementations and the old functiongather_free_and_dirichlet_valuesis now optional. Since PR #279.
- Functions
create_vtk_fileandcreatevtk. Since PR #273.
- Function
print_op_treeto visualize lazy operation trees. Since PR #270. - Exported
applyandreindexfromGridaptop level. Since PR #270. - Extended support of
CartesianDiscreteModelto models with periodic boundary conditions. PR #266.
- Optional argument
mapfor CartesianDescriptor converted to a key-word argument. Since PR #266.
- Fixed some methods of the
sparsecsrgeneric function. Since PR #262. - Fixed BUG in
findnzfunction forSparseMatrixCSR. Since PR #264. - Fixed
restrict(::AbstractArray,::TriangulationPortion)for portions of triangulations extendingBoundaryTriangulation. Since PR #267.
- New key-word arguments
zeromean_trianandzeromean_quadin theFESpaceconstructor. Since PR #257. - New method
reindex(::Triangulation,indices). Since PR #257. - New functions
get_face_to_face(::BoundaryTriangulation)andget_cell_around(::BoundaryTriangulation). Since PR #256.
- Added missing implementation of
simplexify(SEGMENT)andsimplexify(VERTEX). Since PR #252.
- Extended support of
TriangulationPortionto boundary and skeleton triangulations. Since PR #249. - Added
FESpaceWithLinearConstraints. Since PR #247. - Added inner constructor to
CartesianDiscreteModelallowing to build a model that represents a subgrid of a larger grid. Since PR #245.
- The part associated with the imposition of constraints in the
FESpaceinterface has changed slightly. Since PR #247. - Simplified the signature of
zero_free_values(::FESpace). Since PR #249. - Simplified the signature of
zero_initial_guess(op::NonlinearOperator). Since PR #249. - Major refactoring in the
Assemblerinterface. Important change: Now, assembly-related functions take the data returned by functions likecollect_cell_matrixas it is. Example: the old user codeassemble_matrix(assembler,collect_cell_matrix(du,dv,terms)...)now is written simply asassemble_matrix(assembler,collect_cell_matrix(du,dv,terms)), i.e., the unpack of the last argument is not used anymore. In addition, with the new assembler interface, it is possible to customize the assembly process via a so-calledAssemblerStrategyobject. Since PR #249. - Change the types of the sizes and partition fields of CartesianDescriptor to tuples instead of points. Since PR #246.
- Automatic differentiation of manufactured solutions. Since PR #236.
- Function
cell_measure. Since PR #234.
- Several bugs associated with
ExtendedFESpace. In particular, we have fixed a bug that showed up when combiningZeroMeanFESpaceandExtendedFESpace. Since PR #234.
- Function
HomogeneousTrialFESpace. Since PR #226. - Function
lazy_appendin order to lazily append two objects (implemented forAbstractVector,Triangulation, andCellQuadrature). Since PR #220. - Support for FE spaces with DOFs defined in the physical space. Since PR #216 and #218.
- Replaced
non_linear->nonlinearandNonLinear->Nonlinear. Since PR #223. - The
FESpaceinterface has slightly changed, mainly the return type of functionsget_cell_basisandget_cell_dof_basis.. Since PR #216 and #218.
- Bug that showed up in multi-field computations when some field had no contribution to the rhs vector. Since #229.
- Bug in gradient operator in the void part of
ExtendedFESpaceobjects. Since PR #219. - Bug in jumps of quantities restricted to
InterfaceTriangulationobjects. Since PR #215.
- Support for surface-coupled multi-physics. See
SurfaceCouplingTests.jlfor further details. Since PR #209. - Support for constitutive laws with state / historical variables. See
IsotropicDamageTests.jlfor further details. Since PR #208. - Curl-conforming reference FE
NedelecRefFEand corresponding FE space constructor since PR #199. - New constructors
AffineFETermFromCellMatVecandFETermFromCellJacResthat provides full control in the definition of cell matrices and vectors. Since PR #191. - Support for simultaneous integration of matrices and vectors. Since PR #191.
-
Renaming NonLinear to Nonlinear since it is one word and it is not consistent with style
-
The definition of interpolation order in Raviart-Thomas and Nédélec reference FEs has changed. Now, the divergence of functions in the Raviart-Thomas space of order
kbelongs toP_korQ_kdepending on the underlying polytope. Idem for Nédelec, but using the curl instead of the divergence. Since PR #212. -
The order in which test and trial spaces are written in the code has changed and also the other in the arguments of functions defining bi-linear and linear forms, and weak residuals and Jacobians. This affects everybody that is using Gridap, even the most basic users. Now, we write the trial space before the test one in all methods taking two spaces in their arguments. E.g., we have changed
AffineFEOperator(V,U,terms...)toAffineFEOperator(U,V,terms...), whereUis the trial andVis the test space. For functions defining weak forms, now we have: The new signatures for bi-linear and a linear forms area(u,v),l(v), whereuis a trial function andvis a test one. For weak Jacobians and residualsjac(u,du,v)andres(u,v), whereuis the (trial) function in which we evaluate these quantities,duis the direction in which we evaluate the Jacobian andvis a test function. Since PR #195 and PR #197. -
The part related with the application of constraints in the
FESpaceinterface has changed. Since PR #191.
- Bug in 1d Cartesian grids. Since PR #192.
- New
DirichletFESpacethat can be used to compute matrices and vectors associated with the Dirichlet DOFs. Since commit 972afcc
This version is a major refactoring of the project which is not summarized here for the sake of brevity. Most of the functionality of v0.6.0 is available in v0.7.0, but with a possibly slightly different API. See here the changes in the sources of the Gridap Tutorials between versions 0.6.0 and 0.7.0 to effectively see the major changes in the API.
- New
GenericRefFE. Since commit 876ef1e - New
NedelecRefFEconstructor that generates Nedelec FEs of arbitrary order in 2D and 3D on hex. Since commit 876ef1e - New keyword argument
mapin the constructor ofCartesianModel, which allows one to transform the original domain, by default [0,1]^d to a new domain through a homeomorphic map. Since commit 30cc4bc - New keyword argument
mapin the constructor ofCartesianGridand a newmapattribute in this structure, since commit 30cc4bc CartesianGridPointshas new attributemapsince commit 30cc4bc- Added
SparseMatricesCSRsupport toSparseMatrixAssemblerandMultiSparseMatrixAssemblerin PR #118.
- The
RaviartThomasRefFEhas now been replaced byGenericRefFE, and the constructor for Raviart-Thomas FEs is calledRTRefFE. Since commit 876ef1e - The default map in the
CartesianModelconstructor is [0,1]^d instead of [-1,1]^d, since commit 30cc4bc CartesianGridhas attributemapsince commit 30cc4bc
- Incompatibility problem with
TensorValuesversion 0.3.5. Via commit 3c0682a.
- Pretty printing for the types most exposed to users. Since PR #109.
- Bug related to
ZeroMeanFESpace. Via PR #111.
- Added a high level constructor, namely
FESpace, to create different types of FE spaces. See issue #100 for more details. Since PR #102. - Added
ZeroMeanFESpaceto construct FE spaces whose functions have zero mean value. Since PR #102. - Added Hdiv FE space using Raviart-Thomas reference FEs in 34bfa34
- Added the corresponding DOF basis for Raviart-Thomas reference FEs for interpolation of fields 60b9021
- Added an arbitrary order div-conforming Raviart-Thomas reference FE of arbitrary order on quads in commit 60b9021
- Now, the
tagsargument is optional when constructingSkeletonTriangulationandBoundaryTriangulationobjects from aDiscreteModel. Since commit e6424a3. - Added
meanoperator for quantities restricted to aSkeletonTriangulation. Since commit 83798b4. - Extended
NormalVectortoSkeletonTriangulations. Since commit 5fb8487. - Now,
TrialFESpacescan be constructed from values instead of functions if the corresponding Dirichlet conditions are constant. Since commit bae237e. - Added the possibility of adding new tags to a
FaceLabelsobject via the functionadd_tag_from_tags!and using it to construct FE spaces. Since commit e9dfac4. - Added
BackslashSolverto facilitate the usage in Gridap of the build-in Julia backslash linear solver. Since commit 8e3a9b7. - Added
NLSolverto facilitate the usage in Gridap of the non-linear solvers available in the official Julia packageNLsolve. Introduced in commit e5a933f asJuliaNLSolver. Renamed toNLSolverin PR #108.
- The Signature of
solve!forNumericalSetupobjects. The argument for the system matrix has been removed. The information about the matrix is already in theNumericalSetupobject. Since commit ac212d3. - The signature of
solve!(::FEFunction,::FESolver,::FEOperator). Before it was used ascache = solve!(uh,solver,op), now it is used asuh, cache = solve!(uh,solver,op). Since PR #102. - Previous ConformingFESpace constructor is H1ConformingFESpace since 34bfa34
JuliaNLSolver. Renamed toNLSolver. Since PR #108.- Key-word argument
orderinCellQuadratureconstructor. Renamed todegree. Since PR #108.
- Bug in
@lawmacro for more than oneFEBasisarguments. Solved via PR #104. - Bug in
NonlinearFEOperatorconstructor with default assembler in multi-field computations. Solved via PR #104. - Bug in
NormalVectorfor non-Cartesian grids. Solved via PR #98.
- Added support to high order simplicial Lagrangian finite elements. Since commit cbefe9b.
- Now the built-in simplicial grids are oriented. Since commit cbefe9b.
- Added binary operations between
FEFunctionandNumber, andFEBasisandNumber. Since PR #88. - Added
PDiscRefFE,DiscFESpace, andConstrainedFESpace. Since PR #88. - Now its possible to pass a
CellNumberor anArrayof numbers into a constitutive law. Useful to identify which is the material of the current Gauss point in multi-material problems. Since commit 62cb2c3. LinearFESolveris now optional for solving aLinearFEOperator. Since commit 5c1caa8.Assembleris now optional to buildFEOperatorobjects. Since commit b1bf517.- Binary operations between
FunctionandFEFunction. Since commit a7f22f5. - Extended constructions of
CLagrangianFESpaceandDLagrangianFESpace.diritagsanddirimasksare now optional.diritagscan now be also a vector ofString. Since commit 776b402. - Added
div,curl, andtraceoperators. Since commit 5a0f322. - Macro
@lawto facilitate the definition of constitutive laws. Since commit 30b67f2. - Definition of linear forms
b(v) = inner(v, f)directly from a functionf. Since commit bb42847 - Serialization and de-serialization of
DiscreteModelobjects into and fromjsonformat. Since PR #76. - Support for boundary integration (e.g., Neumann BCs) for multi-field computations. Since PR #75.
- Signature of
LagrangianRefFEconstructor. Since commit 529c764.
- Bug in
LinearFETermfor multi-field computations. Fixed via commit 2b957d1. - Bug in
MultiCellArrayconstructor. Fixed via commit bbc3b1c. - Bug in binary operations between FEFunction and FEBasis. Fixed via commit aa49689.
CurlGradMonomialBasisspanning the polynomial space needed for RT elements on n-cubes.CLagrangianFESpaceandDLagrangianFESpacetypes providing an efficient implementation for continuous and discontinuous Lagrangian FE spaces respectively. In contrast toConfirmingFESpace, the new types allow to select which are the components that are actually prescribed on the Dirichlet boundary. Since PR #64.simplexifyfunction to convertGridandDiscreteModelobjects made of n-cubes to the corresponding counterparts made of n-simplices. Since PR #62.- Duffy transformation based integration for n-simplices of arbitrary dimension. Since PR #61.
NormalVectorto construct the outward normal vector to a givenBoundaryTriangulation. Since PR #60.- Support for tensor-valued FE computations. Since PR #57.
- Support for integration on the skeleton of the mesh. This includes
SkeletonTriangulation, an integration mesh for the skeleton,restrictfunction is extended to restrict to the skeleton,jumpfunction to compute jumps ofCellFieldsandCellBasisrestricted to the skeleton, extension ofFETermsto allow integration on the skeleton. See PR #47 - Support for Robin boundary conditions. Since commit 946054a
- Support for Neumann boundary conditions. Since commit 4dcd16f
FETermandAffineFETermabstract types and several concrete implementations. They allow to deal with problems whose weak form has terms integrated over different geometrical entities.NonlinearFEOperatorandLinearFEOperatorcan be constructed using several terms. Since commit 0f99234- Extended
AssemblerandMultiAssemblerto deal with several terms. See issue #42 and PR #43. IdentityCellNumber, an indexable cell number that simply returns the given index. Also efficient implementation ofreindexfor this type (i.e. do nothing). Available since commit b6b4c32- Function
restrictfor restrictingCellFieldandCellBasisobjects to surfaces. Available since commit e981f3c BoundaryTriangulationan integration mesh used to integrateCellFieldandCellBasisobjects restricted on a surface. Available since commit e981f3cNonIterableCellMap, a cell map that has iteration intentionally disabled. Available since commit 956a537.CompressedCellValue,CompressedCellArray, andCompressedCellMap, as well as efficient versions ofapply,evaluate, andreindexfor these types. See PR #41 for more details.NEWS.mdfile (a changelog file)
- Domains are now in [0,1] instead of [-1,1]. Quadratures and nodes arrays modified accordingly. Since commit 268dfe1.
- Changed the signature of
assemble,apply_constraints,apply_constraints_rows, andapply_constraints_colsto support FE assembly of several terms, which are integrated in different domains. The old API ofassebleis still functional, but not for theapply_constraintset al. Since PR #43. Further changed in commit a335aed.
- Bug in generation of the cellwise local to global DOF map for high order interpolations. Fixed via PR #56.
- Bug in numerical integration. There was a bug for computations where the number of cell DOFs was different from the number of integration points. Fixed via commit 0b3d4bf
A changelog is not maintained for this version.
This version introduces the core finite element machinery for linear and non-linear problems, single field and multi-field problems with terms integrated over the interior of the computational domain.
A changelog is not maintained for this version.
This version is non functional. It is just a tag for registering the package.