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 #974, an error when weak form is real but unknown vector is complex. Since PR#1050.
- 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
TensorValues
module: SeeTensorValues.indep_components_names
. Since PR#1040.- Documented all symbols exported by the module
- Improved and added test for some API function of
MultiValue
(generaldiag
of 2nd order tensors, fixedconvert
of 3rd order tensors to SArray, avoid unwanted fallback ofnum_components
onMultiValue
types with undefined dimensions, more autodiff tests, betterdouble_contraction
API (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
gradient
andlaplacian
for second order tensor, anddivergence
for third order tensors. - Added
AbstractSymTensorValue
, an abstract type for second order symmetric tensors, andSymTracelessTensorValue
(aliased toQTensorValue
), a type for traceless symmetric tensors.SymTensorValue
is now subtype ofAbstractSymTensorValue
. - A convergence test for Poisson problem of
QTensorValue
unknown 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
CellConformity
info, within themetadata
field. 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
kwargs
fromrefine
tosimplexify
functions in Adaptivity. Since PR#1015. - Fixed
interpolate
forZeroMeanFESpace
. 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
GeneralPolytope
that represents general polytopes in 2 and 3 dimensions. Since PR#1006.
- Added local preferences for Gridap through
Preferences.jl
. The macro@check
can now be activated/deactivated by using the local preferenceexecution_mode
. Since PR#1014.
- Bugfix in
get_face_dofs
for Nedelec GenericRefFE. Since PR#1005. - Ensure deterministic behavior for matrix assembly involving multiple domains. Since PR#1004.
- Changed the sign of the residual in
TransientLinearFEOperator
to align with the conventions ofAffineFEOperator
. Since PR#996.
- Bugfix in
restrict_to_field
forBlockMultiFieldStyle
. 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
SubVector
in favor of Julia'sview
. Since PR#989.
- Added some missing API methods to
Assemblers
andMultiField
. Since PR#985.
- Fix when evaluating
\circ
operator 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_node
andget_dof_to_comp
forLagrangianDofBasis
. Since PR#964.
- Changed how
allocate_vector
works. Now it only allocates, instead of allocating+initialising to zero. Since PR#963.
- Fixed issue where
FineToCoarseField
would not work for vector-valued fields. Since PR#970. - Fixed issue where
BlockSparseMatrixAssembler
would 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_range
andallocate_in_domain
with support forBlockArrays
and distributed arrays. Since PR#960.
BlockMultiFieldStyle
available forTransientMultiFieldFESpaces
since PR #946.- When creating
DiscreteModelPortions
, some of theFaceLabeling
arrays were being aliased. This caused issues when adding tags to distributed models in debug mode. Since PR #956. - Function
add_entry!
was inconsistent forAbstractMatrix
andAbstractSparseMatrix
. 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 anyAbstractArray
type, includingPVector
. Since PR #940. - Updated Runge-Kutta solver. Since PR #919.
- Reimplemented
DomainStyle
forCellQuadrature
to 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.jl
with appropriate changes tosrc/Adaptivity/EdgeBasedRefinement.jl
. Since PR #901. - When refining
DiscreteModels
, theFaceLabeling
of the resultingAdaptedDiscreteModel
will 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
BlockMultiFieldStyle
andBlockSparseMatrixAssemblers
have been added. Since PR#915.
- The API of
CellQuadrature
has 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_vector
forAdaptedTriangulation
. The methodget_facet_normal
was using default, it's now using the spetialized implementation for the underlying triangulation type. Since PR #884. - Fixed
cell_dof_ids
for 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_domain
betweenAdaptedTriangulations
where 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
RefinementRule
andAdaptivityGlue
, which encode the mapping between the old and new cells in an adapted model. Since PR #838. - Implemented
AdaptedDiscreteModel
andAdaptedTriangulation
, representing respectively a model and triangulation produced by adapting a parent model. This types mostly wrap aroundDiscreteModel
andTriangulation
, with some added features necessary to keep track of the adaptive hierarchy. Since PR #838. - Implemented tools to be able to transfer
CellDatum
s back and forth between parent and child grids. These include changes tochange_domain
(which now takes the sourceTriangulation
as argument) and a new type ofMeasure
calledCompositeMeasure
, which allows the integrationTriangulation
to be different from theTriangulation
of the resultingDomainContribution
. To accommodateCompositeMeasure
,Measure
has been made abstract type and aGenericMeasure
has been created to replace the old type. Since PR #838. - For the fine-to-coarse transfer of
CellField
s, the newFineToCoarseField
has 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 implementedFineToCoarseReferenceFE
andFineToCoarseDofBasis
. 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
unique
for aCompressedArray
. Since PR #838. - Added support for changing domain between adapted triangulations in cases where the target triangulation is a view, a
BoundaryTriangulation
or aSkeletonTriangulation
. Since PR #868.
- Using broadcasting through in
ODESolver
vector 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 allowsTable
to work with complex composite types which don't have an easyzero(T)
function defined. Since PR #838. - Added
get_metadata
to all the instances ofReferenceFE
. This makes the abstract type more consistent, which is necessary for the new typeFineToCoarseReferenceFE
. Since PR #838. ConstantFESpace
is now properly exported. Since PR #872.
- Fixed a bug in function
collect_cell_matrix_and_vector
. Since PR #849
lastindex
forMultiValue
s 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
DiracDelta
at genericPoint
(s) in the domain. Since PR #837 - some key missing
lastindex
andend
tests belonging to PR [#834]. Since PR #837 AbstractVector
support to weights andPoint
s of GenericQuadrature, in particular forFillArray
usage. Since PR #839- Using the above generalization of
GenericQuadrature
, made the weights of quadrature ofDiracDelta
for generic points to be aFill
vector. Since PR #839 - Optional keyword argument
T
to select the floating point precision for the numerical quadrature pipeline involvingMeasure
,CellQuadrature
andQuadrature
functions.T
defaults toFloat64
when 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
MultiField
functional 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.jl
to fix issue #805. Since PR #806
- The behavior of
gradient
for functionals involving operations ofCellFields
insidemean
andjump
terms of Skeleton Integration terms. Since PR #800 - The behavior of
SkeletonCellFieldPair
at the Boundary integration terms. Since PR #800 push_normal
for rectangular Jacobians. Since PR#809- Nedelec FEs with triangles. Since PR #813
Gridap.jacobian
for Skeleton integration terms, in the case of general test basis where dim not same as trial basis. Since PR #815
KeyToValMap
lazy map that dynamically creates aDict
with the outputs of a function over an array of inputs. Since PR #801MappedDiscreteModel
andMappedGrid
, 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
TensorValue
and 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
GridapODEs
toODEs
. 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
CartesianDiscreteModel
s built fromcmin
,cmax
. Since PR #738. - Function
savepvd
. Since PR #736. - Support for passing
nothing
as the first argument of theCartesianDiscreteModel
constructor 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
@inline
statements. 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
FESolver
andLinearFESolver
from user code. Since PR #705.
- Using implementation of
pvtk_grid
provided 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! of
LinearSolvers.jl`. Since PR #692.
- Aliases
Interior
,Boundary
,Skeleton
, andInterface
for theTriangulation
,BoundaryTriangulation
,SkeletonTriangulation
, andInterfaceTriangulation
constructors. Since PR #662. - Function
create_pvtk_file
for exporting results inpvtu
format. Since PR #685.
- Major refactoring in the
Triangulation
interface to properly support the solution of PDEs defined on domains of different dimension. The major change from the user perspective is thatTriangulation
objects 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 useTriangulation
objects 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
Interpolable
allowing to interpolate data from two independent meshes. Since PR #632.
- Deactivating optimizations related with
MemoArray
since 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_basis
andget_cell_shapefuns
for 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_points
to buildCellPoint
from 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
SparseMatrixAssembler
to 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
->value
the 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_shapefuns
byget_fe_basis
. Since PR #579. - Renamed
get_cell_shapefuns_trial
byget_trial_fe_basis
. Since PR #579. - Renamed
get_cell_dof_basis
byget_fe_dof_basis
. Since PR #579. - Removed
conformity
optional 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.Integration
has been deleted and its contents have been merged intoGridap.ReferenceFEs
module. - Types
SparseMatrixCSR
andSymSparseMatrixCSR
have been moved to the registered packageSparseMatricesCSR
. To use them simply addSparseMatricesCSR
into your environment and typeusing SparseMatricesCSR
. Since Since PR #568. - Removed
PushForwardMap
and all code depending upon it. Since PR #579.
- Differential operators
(∇+k)(u)
,(∇+k)⋅u
,(∇+k)×u
,(∇+k)⊗u
, andu⊗(∇+k)
for someu::CellField
andk::VectorValue
. Since PR #597. - Definition of
u.*v
between instances of vector-valuedCellField
objectsu
andv
. Also differential operators∇.*u
and(∇+k).*u
. Since PR #597.
- Bug in
CartesianDiscreteModel
with periodic boundary conditions that shows up in Julia 1.6 but not in Julia 1.5. Since commit da005cf.
get_cell_map
now returns array ofAffineMap
for 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_map
forAffineMap
. Since PR #552. - Method
get_cell_points
forCellDof
. Since PR #551. - Evaluation of
MonomialBasis
objects at a single point. Since PR #550. rand
function forMultiValue
objects. Since PR #530.
- Bug in
return_value
forBroadcasting(∇∇)
. Since PR #554. - Bug in
dot
for 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
RestrictedDiscreteModel
for 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 azero
constructor forThirdOrderTensorValues
to 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
HomogeneousTrialFESpace
from aTrialFESpace
. Since PR #384. - Support for automatic differentiation of residuals and Jacobians in multi-field computations since PR #383.
- New
FilterKernel
since PR #379.
- Bug associated with boundary triangulation in 1D discrete models. Since PR #393.
- New
FilteredCellArray
since PR #372.
Visualization.visualization_data
function 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
jac
fromFETerm(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
space
toLagrangianRefFE
constructor in order to select the type of underlying polynomial space, i.e.,:Q
,:S
, or:P
. Since PR #321.
- The meaning of
inward/outward
has slightly changed forSkeletonCellBasis
objects. Now, by accessing to these properties aReducedSkeletonCellBasis
is 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 ofjump
ormean
). Since PR #317. - Major refactoring in
ReferenceFEs
module. Since PR #319 and #321. In particular:NodalReferenceFE
has been replaced by a new abstract typeLagrangianRefFE
.GenericNodalCartesianRefFE
has been replaced byGenericLagrangianRefFE
.
- Removals associated with the
ReferenceFEs
refactoring in PR #319:- Removed
QDiscRefFE
constructor. Use a standardLagrangianRefFE
andL2Conformity
instead. - Removed
PDiscRefFE
constructor. UseLagrangianRefFE
constructor with the kw-argumentspace=:P
. - Removed
CDLagrangianRefFE
constructor. Use a standardLagrangianRefFE
andCDConformity
instead. - Removed fields
face_own_dofs
andface_own_dof_permutations
fromGenericRefFE
. - 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
SkeletonTriangulation
constructor in order to integrate, where a given interpolation is discontinuous. Since PR #304. - New
ConformingFESpace
constructor. Since PR #293. - Added
QDiscRefFE
constructor forDiscRefFE
. Since PR #293. - New
FESpace
constructor that takes an instance ofReferenceFE
. Since PR #294. - New
FESpace
constructor that takes an instance ofConformity
. Since PR #311. - New
CDLagrangianRefFE
struct, that provides a Lagrangian reference FE with different conformity per direction. Since PR #299. - New
FESpace
method that takes a model and aRefFE
. Since PR #299. - Possibility to have 0 order in
DISC
directions of aCDLagrangianRefFE
. Since PR #308. - Added setindex! method for Reindexed. Since PR #309.
- Changed the interfaces of
ReferenceFE
andNodalReferenceFE
in relation of DOF ownership. Now functionget_face_own_dofs
and related ones are parametrized by aConformity
object. Since PR #311. - The constructors
GenericRefFE
,GenericNodalCartesianRefFE
, andcompute_conforming_cell_dofs
take an extra argument of typeConformity
. Since PR #311. - Renamed
PDiscRefFE
->DiscRefFE
struct keeping the name for constructor. Since PR #293. - One of the
GradConformingFESpace
methods now more generalConformingFESpace
. Since PR #293. DivConformingFESpace
andCurlConformingFESpace
constructors 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. CDLagrangianRefFE
node ordering. Since PR #305.
- Method
solve!(x,ls,op::AffineOperator,cache::Nothing,newmatrix)
. Since PR #288.
- Bug related with
WriteVTK
version 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
ExtendedFESpace
onto 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
cross
function (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.dot
function aka⋅
(\cdot). - The syntax
∇*u
is not allowed anymore. Use∇⋅u
instead. - Gridap re-exports
dot
,⋅
, and other names from LinearAlgebra that are used often in Gridap code. - Function
n_components
is renamed tonum_components
.
- The operator
- The
SingleFieldFESpace
interface 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_values
is now optional. Since PR #279.
- Functions
create_vtk_file
andcreatevtk
. Since PR #273.
- Function
print_op_tree
to visualize lazy operation trees. Since PR #270. - Exported
apply
andreindex
fromGridap
top level. Since PR #270. - Extended support of
CartesianDiscreteModel
to models with periodic boundary conditions. PR #266.
- Optional argument
map
for CartesianDescriptor converted to a key-word argument. Since PR #266.
- Fixed some methods of the
sparsecsr
generic function. Since PR #262. - Fixed BUG in
findnz
function forSparseMatrixCSR
. Since PR #264. - Fixed
restrict(::AbstractArray,::TriangulationPortion)
for portions of triangulations extendingBoundaryTriangulation
. Since PR #267.
- New key-word arguments
zeromean_trian
andzeromean_quad
in theFESpace
constructor. 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
TriangulationPortion
to boundary and skeleton triangulations. Since PR #249. - Added
FESpaceWithLinearConstraints
. Since PR #247. - Added inner constructor to
CartesianDiscreteModel
allowing 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
FESpace
interface 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
Assembler
interface. Important change: Now, assembly-related functions take the data returned by functions likecollect_cell_matrix
as 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-calledAssemblerStrategy
object. 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 combiningZeroMeanFESpace
andExtendedFESpace
. Since PR #234.
- Function
HomogeneousTrialFESpace
. Since PR #226. - Function
lazy_append
in 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
->nonlinear
andNonLinear
->Nonlinear
. Since PR #223. - The
FESpace
interface has slightly changed, mainly the return type of functionsget_cell_basis
andget_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
ExtendedFESpace
objects. Since PR #219. - Bug in jumps of quantities restricted to
InterfaceTriangulation
objects. Since PR #215.
- Support for surface-coupled multi-physics. See
SurfaceCouplingTests.jl
for further details. Since PR #209. - Support for constitutive laws with state / historical variables. See
IsotropicDamageTests.jl
for further details. Since PR #208. - Curl-conforming reference FE
NedelecRefFE
and corresponding FE space constructor since PR #199. - New constructors
AffineFETermFromCellMatVec
andFETermFromCellJacRes
that 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
k
belongs toP_k
orQ_k
depending 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...)
, whereU
is the trial andV
is 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)
, whereu
is a trial function andv
is a test one. For weak Jacobians and residualsjac(u,du,v)
andres(u,v)
, whereu
is the (trial) function in which we evaluate these quantities,du
is the direction in which we evaluate the Jacobian andv
is a test function. Since PR #195 and PR #197. -
The part related with the application of constraints in the
FESpace
interface has changed. Since PR #191.
- Bug in 1d Cartesian grids. Since PR #192.
- New
DirichletFESpace
that 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
NedelecRefFE
constructor that generates Nedelec FEs of arbitrary order in 2D and 3D on hex. Since commit 876ef1e - New keyword argument
map
in 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
map
in the constructor ofCartesianGrid
and a newmap
attribute in this structure, since commit 30cc4bc CartesianGridPoints
has new attributemap
since commit 30cc4bc- Added
SparseMatricesCSR
support toSparseMatrixAssembler
andMultiSparseMatrixAssembler
in PR #118.
- The
RaviartThomasRefFE
has now been replaced byGenericRefFE
, and the constructor for Raviart-Thomas FEs is calledRTRefFE
. Since commit 876ef1e - The default map in the
CartesianModel
constructor is [0,1]^d instead of [-1,1]^d, since commit 30cc4bc CartesianGrid
has attributemap
since commit 30cc4bc
- Incompatibility problem with
TensorValues
version 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
ZeroMeanFESpace
to 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
tags
argument is optional when constructingSkeletonTriangulation
andBoundaryTriangulation
objects from aDiscreteModel
. Since commit e6424a3. - Added
mean
operator for quantities restricted to aSkeletonTriangulation
. Since commit 83798b4. - Extended
NormalVector
toSkeletonTriangulations
. Since commit 5fb8487. - Now,
TrialFESpaces
can 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
FaceLabels
object via the functionadd_tag_from_tags!
and using it to construct FE spaces. Since commit e9dfac4. - Added
BackslashSolver
to facilitate the usage in Gridap of the build-in Julia backslash linear solver. Since commit 8e3a9b7. - Added
NLSolver
to facilitate the usage in Gridap of the non-linear solvers available in the official Julia packageNLsolve
. Introduced in commit e5a933f asJuliaNLSolver
. Renamed toNLSolver
in PR #108.
- The Signature of
solve!
forNumericalSetup
objects. The argument for the system matrix has been removed. The information about the matrix is already in theNumericalSetup
object. 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
order
inCellQuadrature
constructor. Renamed todegree
. Since PR #108.
- Bug in
@law
macro for more than oneFEBasis
arguments. Solved via PR #104. - Bug in
NonlinearFEOperator
constructor with default assembler in multi-field computations. Solved via PR #104. - Bug in
NormalVector
for 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
FEFunction
andNumber
, andFEBasis
andNumber
. Since PR #88. - Added
PDiscRefFE
,DiscFESpace
, andConstrainedFESpace
. Since PR #88. - Now its possible to pass a
CellNumber
or anArray
of numbers into a constitutive law. Useful to identify which is the material of the current Gauss point in multi-material problems. Since commit 62cb2c3. LinearFESolver
is now optional for solving aLinearFEOperator
. Since commit 5c1caa8.Assembler
is now optional to buildFEOperator
objects. Since commit b1bf517.- Binary operations between
Function
andFEFunction
. Since commit a7f22f5. - Extended constructions of
CLagrangianFESpace
andDLagrangianFESpace
.diritags
anddirimasks
are now optional.diritags
can now be also a vector ofString
. Since commit 776b402. - Added
div
,curl
, andtrace
operators. Since commit 5a0f322. - Macro
@law
to 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
DiscreteModel
objects into and fromjson
format. Since PR #76. - Support for boundary integration (e.g., Neumann BCs) for multi-field computations. Since PR #75.
- Signature of
LagrangianRefFE
constructor. Since commit 529c764.
- Bug in
LinearFETerm
for multi-field computations. Fixed via commit 2b957d1. - Bug in
MultiCellArray
constructor. Fixed via commit bbc3b1c. - Bug in binary operations between FEFunction and FEBasis. Fixed via commit aa49689.
CurlGradMonomialBasis
spanning the polynomial space needed for RT elements on n-cubes.CLagrangianFESpace
andDLagrangianFESpace
types 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.simplexify
function to convertGrid
andDiscreteModel
objects 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.
NormalVector
to 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,restrict
function is extended to restrict to the skeleton,jump
function to compute jumps ofCellFields
andCellBasis
restricted to the skeleton, extension ofFETerms
to allow integration on the skeleton. See PR #47 - Support for Robin boundary conditions. Since commit 946054a
- Support for Neumann boundary conditions. Since commit 4dcd16f
FETerm
andAffineFETerm
abstract types and several concrete implementations. They allow to deal with problems whose weak form has terms integrated over different geometrical entities.NonlinearFEOperator
andLinearFEOperator
can be constructed using several terms. Since commit 0f99234- Extended
Assembler
andMultiAssembler
to deal with several terms. See issue #42 and PR #43. IdentityCellNumber
, an indexable cell number that simply returns the given index. Also efficient implementation ofreindex
for this type (i.e. do nothing). Available since commit b6b4c32- Function
restrict
for restrictingCellField
andCellBasis
objects to surfaces. Available since commit e981f3c BoundaryTriangulation
an integration mesh used to integrateCellField
andCellBasis
objects 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
, andreindex
for these types. See PR #41 for more details.NEWS.md
file (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_cols
to support FE assembly of several terms, which are integrated in different domains. The old API ofasseble
is still functional, but not for theapply_constraints
et 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.