- Make
YaspGrid
compatible with MSVC's implementation of the C++ Standard Library.
-
Gmsh reader learned to read and export gmsh physical entity names.
-
Removed the deprecated method
geomTypes()
from all the grid (indexset) implementations since they have not been used nor supported by the grid interface for ages. Usetypes()
instead. Note thattypes()
returns an object of typeIndexSet::Types
, which might not bestd::vector<GeometryType>
. Also, the object is returned by value instead of by reference. -
Provide
communicate()
method inOneDGrid
andIdentityGrid
-
Change the
IndexSet::Types
type ofOndDGrid
andYaspGrid
tostd::array<GeometryType,1>
. -
Grid concepts are here! A
Grid
can now be inspected and also its components checked for valid interfaces at compilation time using c++20 concepts. Note that, this feature is still in development and might be subject to changes. -
A new parameter 'bisectioncompatibility' for DGF block GridParameter was added.
-
MultipleCodimMultipleGeomTypeMapper
is assignable. -
The method
UGGridGeometry::integrationElement
has been simplified, and is faster now. -
The method
UGGridGeometry::affine
has been reimplemented, and is much faster now. -
For simplices,
UGGridGeometry
now caches the values ofjacobianTransposed
,jacobianInverseTransposed
, etc. This may speed up the code when these methods are called many times per element.
-
Improve pickling support (GridViews and some GridFunction objects can now be pickled).
-
Add a prototype reader for Paraview directly based on the Python bindings. This is added to the tutorial and only demonstrates how a reader could be implemented. GridViews and GridFunctions can be pickled and then read into Paraview without going through vtu. As an example manipulation the subsampling level can be adjusted directly in Paraview so that higher order functions can be visualized.
-
Deprecated
CommDataHandleIF::fixedsize()
has been removed. UsefixedSize()
with capital S instead. -
Remove deprecated
CollectiveCommunication
, useCommunication
instead. -
Deprecated
update()
member function of mappers have been removed. Use the member functionupdate(gridView)
with a grid view argument when updating the mapper after the grid or grid view changes. The interface change reflects that grid view has value semantics. -
The deprecated convenience classes
LeafSingleCodimSingleGeomTypeMapper
,LevelSingleCodimSingleGeomTypeMapper
,LeafMultipleCodimMultipleGeomTypeMapper
,LevelMultipleCodimMultipleGeomTypeMapper
have been removed since they don't comply with the new mapper interface. Just useSingleCodimSingleGeomTypeMapper
andMultipleCodimMultipleGeomTypeMapper
. -
Remove Yasp's deprecated
YLoadBalance
interface. UseYasp::Partitioning
instead. -
Remove deprecated
GmshReader
's default constructor. Either use other constructors or use static methods without constructing an object. -
Remove deprecated CMake module
UseUG.cmake
.
-
UGGrid is now thread safe on the grid view.
-
The
Geometry
interface was extended by methodsjacobian(local)
andjacobianInverse(local)
and corresponding typedefsJacobian
andJacobianInverse
. All grid implementations need to provide the new interface. For transition, the methods and typedefs are default-implemented in theDune::Geometry
interface class which is used for all grid geometries. -
The
Geometry::integrationElement
now needs to return the typeVolume
instead ofctype
. Note that this may be different fromctype
if the grid supports typed dimensions. In such a case,ctype
is a length, and not appropriate for a volume quantity. -
The
FindAlberta.cmake
module only searches for world dimension libraries up to dim 3. This can be increased by setting the CMake variableALBERTA_MAX_WORLD_DIM
-
A method
GridView::isConforming()
was added indicating whether a given grid view is representing a conforming grid. For some grid implementations this could vary from the compile time staticGridView::conforming
depending on run time parameters. -
The Python bindings now support tensorproduct coordinates of
YaspGrid
-
Support for PSurface has been removed.
-
Support for AmiraMesh has been removed.
-
Following the deprecation of
CollectiveCommunication
in dune-common, grids define the typeCommunication
. The typeCollectiveCommunication
is deprecated and will be removed after Dune 2.9. -
The CMake function
add_dune_ug_flags
is deprecated. It should not be used since all flags are already set automatically. Also the package flags for the UG grid are not registered any more. -
The
dune-uggrid
module does not set the preprocessor flagHAVE_UG
anymore. UseHAVE_DUNE_UGGRID
instead. -
The
YLoadBalance
interface is deprecated, as well the implementations. Users should switch toYasp::Partitioning
.
-
Specialization of
StructuredGridFactory
forAlbertaGrid
is added to address the special numbering requirements of that grid. -
Return type of
GridFactory::createGrid()
changed tostd::unique_ptr
. While still the replacement typeToUniquePtr
from dune-common works, it is marked deprecated and the std implementation should be used directly now. -
UGGrid
removes support for_2
and_3
macros. -
SingleCodimSingleGeomTypeMapper
andMultipleCodimMultipleGeomTypeMapper
now have anupdate(gridView)
method to update the storedGridView
and recalculate the indices after mesh adaptation. -
The
update()
member function of mappers is deprecated. Use the new member functionupdate(gridView)
with a grid view argument when updating the mapper after the grid or grid view changes. The interface change reflects that grid view has value semantics. -
The "convenience" classes
LeafSingleCodimSingleGeomTypeMapper
,LevelSingleCodimSingleGeomTypeMapper
,LeafMultipleCodimMultipleGeomTypeMapper
,LevelMultipleCodimMultipleGeomTypeMapper
have been deprecated since they don't comply with the new mapper interface. Just useSingleCodimSingleGeomTypeMapper
andMultipleCodimMultipleGeomTypeMapper
. -
IdSet
now exports griddimension
andCodim<cd>::Entity
. -
UGGrid
index sets can now compute the indices of vertices of edges. -
UGGrid
: Fixed a bug in the numbering of prism edges. -
Various bugs have been fixed in the
UGGrid
subdomain communication implementation. -
YaspGrid
now supports class template argument deduction (https://en.cppreference.com/w/cpp/language/class_template_argument_deduction) if you have a C++17-CTAD-compatible compiler (gcc >= 8, clang 5) -
Python bindings have been moved from the
dune-python
module which is now obsolete. To activate Python bindings the CMake flagDUNE_ENABLE_PYTHONBINDINGS
needs to be turned on (default is off). Furthermore, flags for either shared library or position independent code needs to be used. -
Properly implement the
canCommunicate
capability forUGGrid
andIdentityGrid
. -
The return type of the
IndexSet::size
methods isn'tIndexType
anymore. In general the return type should be an unsigned integral type. The actual type is implementation specific. All implementations indune-grid
now returnstd::size_t
, following our approach to make all size information be unsigned. -
The grid capability
hasEntityIterator
now defaults to whatever the capabilityhasEntity
specifies. Most grid manager implementers now only need to implement/specializehasEntity
. -
Add a new range generator
subEntities
that allows to iterate over the sub-entities of a specified codimension for a given element (codim-0 entity)for (const auto& vertex : subEntities(element, Codim<dim>)) std::cout << vertex.geometry().corner(0) << "\n";
The returned range is sized, i.e.
subEntities(element, Codim<dim>).size()
returns the number of vertices in the element and is equivalent toreferenceElement(element).size(dim)
.
-
Remove
Intersection
's deprecated enumsdimension
andcodimension
. Instead use grid's dimension and 1. -
Remove deprecated
Grid::getRealImplementation
. Use theimpl()
member function of the facade classes directly instead. -
Remove GeometryGrid's deprecated constructors accepting raw pointers.
-
Remove deprecated
AlbertaGrid::getRealIntersection
. Use theimpl()
member function of the intersection class directly instead. -
Remove deprecated
AlbertaGrid::readGridXdr
andAlbertaGrid::writeGridXdr
. Instead useAlbertaGrid::readGrid
andAlbertaGrid::writeGrid
. -
Remove deprecated header
dune/common/universalmapper.hh
. -
Support for PSurface is deprecated and will be removed after Dune 2.8.
-
Support for AmiraMesh is deprecated and will be removed after Dune 2.8.
-
The
YaspGrid
class has a new constructor that takes aCoordinates
object as its first argument. This object can be of typeEquidistantCoordinates
,EquidistantOffsetCoordinates
, orTensorProductCoordinates
, and encapsulates the domain and element sizes. Previously, this data was given directly to different constructors ofYaspGrid
, and the constructor had to match theCoordinates
object used as the second template argument of theYaspGrid
class. The new constructor subsumes the previous three, and makes sure by design that the correct information is passed atYaspGrid
construction. -
The
GridFactory
exports the typeCommunication
and corresponding objectcomm()
that is used to create the grid. In theGridFactoryInterface
, this defaults to the Communication induced by the process-local communicatorMPIHelper::getLocalCommunicator()
, whileUGGrid
's factory returns the Communication of the grid. This can be used to steer the grid creation process, seedune/grid/io/file/gmshreader.hh
for an example. -
The number type used by a
BoundarySegment
is not hard-wired todouble
anymore. -
The
Grid::getRealImplementation
member function has been deprecated. Use theimpl()
member function of the facade classes directly instead. -
The
AlbertaGrid::getRealIntersection
member function has been deprecated. Use theimpl()
member function of the intersection class directly instead. -
The return type of all file reader methods that return a grid has been changed from a plain C pointer to the custom pointer class
ToUniquePtr<Grid>
(from thedune-common
module). Values of this pointer class cast to C pointers (but with a deprecation warning), tostd::unique_ptr
, and tostd::shared_ptr
. This marks the beginning of a transition period. In the long run, the methods are planned to return objects of typestd::unique_ptr
, to make it obvious that the calling code receives the ownership of the grid object. For the time being the calling code can still store the return value in a C pointer, but that possibility will go away. -
Likewise, the return type of the
GridFactory::createGrid
method has been changed from a plain C pointer to the custom pointer classToUniquePtr<Grid>
. In the long run, the method is planned to return objects of typestd::unique_ptr
, to make it obvious that the calling code receives the ownership of the grid object. For the time being the calling code can still store the return value in a C pointer, but that possibility will go away. While this procedure allows full backward compatibility for code that callsGridFactory::createGrid
, implementors or third-party grid implementations will need to update their implementations ofGridFactory::createGrid
. -
The
VTKWriter
s now support custom output data precision for functions (via the providedFieldInfo
),VTKFunction
s (via a new virtual interface methodprecision()
), and coordinates (via an argument to the writer's constructor) that can be chosen at runtime. Any field can now choose between VTK'sFloat32
,Float64
,Int32
,UInt8
, andUInt32
, represented asDune::VTK::Precision::float32
/float64
/int32
/uint8
/uint32
, theDataArrayWriter
selects the correct type at runtime. The default for functions and coordinate isFloat32
as before. -
The
VTKWriter
now supports writing functions that can only be evaluated globally, i.e., functions that are not defined with respect to the grid. Such functions will be sampled on the grid vertices (addVertexData
) or grid element centers (addCellData
). -
The Capability
hasBackupRestoreFacilities<GeometryGrid<HG, CoordFunction>>
now returnsfalse
in case theCoordFunction
is not default-constructible. -
The
Geometry
interface now provides the typeVolume
for the return value of the method of the same name. Note that this may be different fromctype
if you care about dimensions. In that casectype
is a length, and not appropriate for a quantity that is a volume. -
The
VTKWriter
writer now truncates subnormal floating point values to 0 when writing ASCII files (DUNE::VTK::ascii
). This avoids Paraview crashes on macOS. For this reasons, most VTK files written by DUNE 2.7 will differ from the same file written in DUNE 2.6. If you are using VTK files for testing results, make sure to use fuzzy float comparisons! -
The
VTKSequenceWriter
now exposes the functionclear()
of the associatedVTKWriter
-
The
VTKSequenceWriter
allows to get and set the time steps storage, which enables serialization of a sequence writer. The feature can be used to restart a sequence. -
UG 3.x is no longer supported. Use dune-uggrid instead.
-
The deprecated
EntityPointer
has been removed completely andEntityIterator
no longer inherits from it. As a consequence, the dimensionEntityIterator::dimension
,EntityIterator::codimension
, andEntityIterator::mydimension
are gone. -
Experimental grid extensions are now always enabled:
See core/dune-grid!155
- The method
impl
and the typeImplementation
on the facade classes are always public (and documented), now. Warning: Implementation details may change without prior notification. - The method experimental grid extension
boundaryId
has been removed from the intersection interface. Some grid will continue providing it on their implementation, i.e., it may still be accessible throughintersection.impl().boundaryId()
- The DGF block
general
is now always available and the DGFWriter will always write a boundary id and can write user-defined boundary data, now.
- The method
-
MultipleCodimMultipleGeomTypeMapper
: TheLayout
template parameter has been deprecated in favor of a function object that indicates which geometry types to include in the mapping. The layout function object is passed in the constructor, so instead ofMultipleCodimMultipleGeomTypeMapper<GV, MCMGElementLayout> mapper1(gv); MultipleCodimMultipleGeomTypeMapper<GV, MCMGVertexLayout> mapper2(gv);
please write
MultipleCodimMultipleGeomTypeMapper<GV> mapper1(gv, mcmgElementLayout()); MultipleCodimMultipleGeomTypeMapper<GV> mapper2(gv, mcmgVertexLayout());
See the doxygen documentation for custom layouts and core/dune-grid!177
-
The
MCMGMapper
can now be used to attach multiple dofs to each entity:See core/dune-grid!215
- the Layout is passed into the constructor and
returns the number of dofs to attach to the given geometry type
Note: the layout can still return a
MCMGLayout layout = [](GeometryType gt, int griddim) { return gt.dim() == griddim? 2:0; }; MCMGMapper mapper(grid,layout);
bool
withtrue
leading to a single dof being attached. - The new method
MCMGMapper::indices(entity)
returns an iterable range (instance ofIntegralRange<Index>
) with the indices of dofs attached to the given entity:for (const auto& i : mapper.indices(entity) ) dof = vector[i];
- the Layout is passed into the constructor and
returns the number of dofs to attach to the given geometry type
-
Two new method were added to the MCMGMapper:
size_type size(GeometryType)
andconst std::vector< GeometryType >& types (int codim)
returning the number of dofs attached to the geometry type and a vector with all geometry types on which dofs are attached, respectively.See core/dune-grid!215
-
The
StructuredGridFactory
now returns aunique_ptr
instead of ashared_ptr
. Code that relies on ashared_ptr
needs to explicitly assign the return value to ashared_ptr
variable.See core/dune-grid!212
-
SubsamplingVTKWriter
now supports arbitrary refinements, not just powers of two. The old constructor taking a parameterint levels
has been deprecated, you should now pass a parameterRefinementIntervals intervals
instead. There are convenience functionsrefinementIntervals(int intervals)
andrefinementLevels(int levels)
to construct parameters of typeRefinementIntervals
in dune-geometry.See core/dune-grid!193
-
UGGrid
now supports transferring element data during load balancing.See core/dune-grid!172
-
A convenience method
referenceElement( entity )
was added.See core/dune-grid!349