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
_add_distributed_constraintin the case where the underlyingFESpacehas multiple (different) reffes. Since PR#201.
- Added support for Gridap 0.20.0. Since PR#200.
- BUG fix in
_generate_sign_flips(...)private helper function for Nedelec elements. Since PR#199.
- An Hcurl projection test case. Since PR#199.
- Split tests to reduce CI time, removed sysimage compilation. Since PR#197.
- Fixed
is_slave == false(comparison instead of assignment) inDivConformingFESpaces, and simplified the boundary-facet branch by removing the now-redundantif/else. Since PR#196. - Fixed
BlockPMatrix{V}(::UndefInitializer, rows, cols)constructor dropping thecolsargument, causing aMethodErrorat runtime. Since PR#194. - Fixed
local_views(::BlockPMatrix, rows, cols)indexing 1D block-range vectors with a 2DCartesianIndex, causingBoundsErrorfor any multi-field problem with ≥2 fields. Since PR#194. - Fixed
mul!(y::BlockPVector, A::BlockPMatrix, x::BlockPVector, α, β)computingα*β*(A*x)instead ofα*(A*x) + β*y; the 3-argmul!was also updated to correctly zeroybefore accumulating. Since PR#194. - Replaced fragile closure side-effect in
DistributedVisualizationData.filebasewithgetany(map(...))for correct and idiomatic behaviour in both debug and MPI modes. Since PR#195. - Changes required to generalize Nedelec Hexahedral elements for meshes beyond Cartesian Meshes. Since PR#198.
- Added further support for polytopal methods and meshes. Since PR#192.
- Added new methods to ensure consistent orientation of faces across processors. Since PR#192.
- Added a new function
restrict_gidsto create a subsets of gids. Since PR#192. - New overloads for the
TrialFESpaceconstructor where the data to be imposed is passed as aDistributedCellField. Since PR#185. - Added missing
FESpaceconstructors for distributed triangulations specialized for the RT FEs case. Since PR#188 - Added optional argument
isconsistentto interpolate functions. Since PR#190.
- Added support for multiple ghost layers on cartesian models. Since PR#182.
- Added new way of doing AD for MultiField, where partials are computed separately for each field then merged together. Since PR#176.
- Fixed issue #177 and #170. Since PR#180.
- Fixed issue where calling
Boundary(with_ghost, dmodel)would return the local processor boundaries (which include the faces at the interface between processors) instead of returning the local part of the global boundary. Since PR#180.
- Added a new framework for redistributing dofs, which is more efficient and flexible than the previous one. Since PR#179.
- Fixed bug when redistributing periodic cartesian models. Since PR#179.
- Added support for Gridap v0.19, with distributed counterparts for the new feaures introduced. This includes support for polytopal meshes, polytopal methods and patch assembly. Since PR#175.
- Added
MacroDiscreteModel, which gives a global numbering and classification of the interfaces between processors. Since PR#175.
- Extended support for automatic differentiation to multi-field spaces and skeleton triangulations. Since PR#169.
- Added support for automatic differentiation with ForwardDiff. Since PR#167.
- Added ConstantFESpaces. Since PR#166.
- Fixed bug in
num_cellsin the case where aDistributedTriangulationcontained ghost cells. Since PR#160. - Fixed bug in writevtk when dealing with empty processors. Since PR#158.
- Added kwargs for VTK encoding options. Since PR#156.
- Reimplemented distributed ZeroMeanFESpaces. Since PR#155.
- Fixed distributed interpolators for Vector-Valued FESpaces. Since PR#152.
-
Added distributed refinement of unstructured meshes. Since PR#149.
-
Added keyword arguments in the signature of the constructor of
DistributedMeasure. Since PR#150. -
Added DiracDelta in distributed setting. Since PR#133.
- Added uniform anisotropic refinement of distributed cartesian meshes. Since PR#148.
- Fixed bug in block-assembly whenever owners of touched dofs were not present in the local portion of the FESpace. Since PR#147.
DistributedCellFieldnow inherits fromCellField. To accomodate the necessary API, we now save a pointer to theDistributedTriangulationwhere it is defined. This also requiresDistributedSingleFieldFESpaceto save the triangulation. Since PR#141.- All the distributed
Multifieldcellfield types are now represented by aDistributedMultiFieldCellField. BothDistributedMultiFieldFEFunctionandDistributedMultiFieldFEBasisstructs have been removed and replaced with constant aliases, which makes it more consistent with single-field types. Since PR#141. - Major refactor of ODE module. Implementation has been significantly simplified, while increasing the capability of the API. All
TransientDistributedObjectsstructs have been removed, and replaced byDistributedTransientObjects = DistributedObjects{TransientObject}. Full support for EX/IM/IMEX methods. See Gridap's release for details. Since PR#141.
- Added redistribution for MultiFieldFESpaces. Since PR #140.
- Added missing methods
allocate_in_rangeandallocate_in_domainfor distributed types. Since PR #139.
- Exporting
redistributefunction. Since PR 136.
- Added missing methods for
DistributedTransientFESpaces. Since PR 135.
- Added support for distributed block-assembly. Since PR 124.
- Add possibility to use
OwnAndGhostVectoras vector partition forFESpacedofs. Since PR 124. - Implement
BlockPArray <: AbstractBlockArray, a new type that behaves as aBlockArray{PArray}and which fulfills the APIs of bothPArrayandAbstractBlockArray. This new type will be used to implement distributed block-assembly. Since PR 124. DistributedMultiFieldFESpace{<:BlockMultiFieldStyle}now has aBlockPRangeas gids andBlockPVectoras vector type. This is necessary to create consistency between fespace and system vectors, which in turn avoids memory allocations/copies when transferring between FESpace and linear system layouts. Since PR 124.
- Merged functionalities of
consistent_local_viewsandchange_ghost.consistent_local_viewshas been removed.change_ghostnow has two keywargsis_consistentandmake_consistentthat take into consideration all possible use cases.change_ghosthas also been optimized to avoid unnecessary allocations if possible. Since PR 124.
- Added missing _get_cell_dof_ids_inner_space() method overload. Since PR130.
- Added missing remove_ghost_cells() overload for AdaptiveTriangulation. Since PR131.
- Updated compat for FillArrays to v1. Since PR127.
- Porting the whole library to PartitionedArrays v0.3.x. Since PR 114
- Tools for redistributing FE functions among meshes; added mock tests for
RedistributeGlue. Since PR 114. This functionality was already somewhere else in the Gridap ecosystem of packages (in GridapSolvers.jl in particular). - A variant of the PArrays
assemble_coo!function namedassemble_coo_with_column_owner!which also exchanges processor column owners of the entries. This variant is required to circumvent the current limitation of GridapDistributed.jl assembly for the case in which the following is not fullfilled: "each processor can determine locally with a single layer of ghost cells the global indices and associated processor owners of the rows that it touches after assembly of integration terms posed on locally-owned entities." Since PR 115.
- Added missing parameter to
allocate_jacobian, needed after Gridap v0.17.18. Since PR 126.
- Reverted some changes introduced in PR 98. Eliminated
DistributedGridapType. Functionslocal_viewsandget_partsnow take argument of typeAny. Since PR 117.
- Fixed bug where operating three or more
DistributedCellFieldswould fail. Since PR 110
- Added
DistributedCellDof, a distributed wrapper forGridap.CellDof. This new wrapper acts onDistributedCellFieldin the same wayGridap.CellDofacts onCellField. Addedget_fe_dof_basisfunction, which extracts aDistributedCellDoffrom aDistributedFESpace. Since PR #97. - Added
gather_free_and_dirichlet_values!andgather_free_values!wrapper functions. Since PR #97. - Added compatibility with MPI v0.20 and PartitionedArrays v0.2.13. Since PR #104.
DistributedDiscreteModelis now an abstract class. The concrete implementation is now given byGenericDistributedDiscreteModel. Since PR #98.- New abstract type
DistributedGridapType. All distributed structures now inherit from it. Implements two new API methodslocal_viewsandget_parts. Since PR #98. - Added support for adaptivity. Created
DistributedAdaptedDiscreteModel. Since PR #98. - Added
RedistributeGlue, which allows to redistribute model data between different communicators. Since PR #98.
- Support for parallel ODE solvers (GridapDistributed+GridapODEs). Since PR #81
- Support for parallel interface (surface) coupled problems. Since PR #84
- Added the missing zero_dirichlet_values used in Multifield.jl. Since PR #87
- Model now handles gids of all faces (not only cells) and support for FESpaces on lower-dim trians. Since PR #86
- Minor bug in the definition of the jacobian of the PLaplacian problem. Since PR #88
- Support for periodic boundary conditions for
CartesianDiscreteModel. Since PR #79 - Skeleton documentation and some content. Since PR #77
- Added
interpolate_everywhereandinterpolate_dirichletfunctions. Since PR #74 - Added
createpvdandsavepvdfunctions to save collections of VTK files. Since PR #71
- Visualization of functions and numbers. Since PR #78
- Bug-fix in global dof numbering. Since PR #66
- RT FEs in parallel. Since PR #64
- Added new overload for
SparseMatrixAssemblerto let one select the local matrix and vector types. Since PR #63
- Added
num_cellsmethod toDistributedDiscreteModel. Since PR #62
This version introduces fully-parallel distributed memory data structures for all the steps required in a finite element simulation (geometry handling, fe space setup, linear system assembly) except for the linear solver kernel, which is just a sparse LU solver applied to the global system gathered on a master task (and thus obviously not scalable, but very useful for debug and testing purposes). Parallel solvers are available in the GridapPETSc.jl package. The distributed data structures in GridapDistributed.jl mirror their counterparts in the Gridap.jl software architecture and implement most of their abstract interfaces. This version of GridapDistributed.jl relies on PartitionedArrays.jl (https://github.com/fverdugo/PartitionedArrays.jl) as distributed linear algebra backend (global distributed sparse matrices and vectors).
More details can also be found in #39
A changelog is not maintained for this version.
This version although functional, is fully deprecated.