Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
D
dune-geometry
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Model registry
Operate
Environments
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Core Modules
dune-geometry
Commits
68587644
Commit
68587644
authored
7 years ago
by
Steffen Müthing
Committed by
Andreas Dedner
7 years ago
Browse files
Options
Downloads
Patches
Plain Diff
Add entry about reference element changes
parent
076b2ee4
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
CHANGELOG.md
+60
-0
60 additions, 0 deletions
CHANGELOG.md
with
60 additions
and
0 deletions
CHANGELOG.md
+
60
−
0
View file @
68587644
...
...
@@ -8,3 +8,63 @@
intervals`
. There are convenience functions
`refinementIntervals(int
intervals)`
and
`refinementLevels(int levels)`
to construct parameters of
type
`RefinementIntervals`
.
-
The class and most of its methods are now
`constexpr`
.
-
There are new singletons and factory functions in the namespace
`Dune::GeometryTypes`
. These
are now the official way to obtain a
`GeometryType`
.
-
`GeometryType::BasicType`
and the assorted constructor have been deprecated and will be removed
after the release of DUNE 2.6.
-
The assorted member functions
`GeometryType::make...()`
have been deprecated and will be removed
after the release of DUNE 2.6.
-
The reference element interface has had a substantial overhaul that can break backwards
compatibility in some corner cases.
-
`ReferenceElement`
has value semantics now: You should store instances by value and can freely
copy them around. Doing so is not more expensive than storing a const reference.
-
As a consequence of value semantics,
`ReferenceElement`
is default constructible now. A default
constructed
`ReferenceElement`
may only be assigned another
`ReferenceElement`
; all other
oeprations cause undefined behavior. Moreover, instances are now comparable and hashable to
allow storing them in maps.
-
We have added code that tries to warn you if you are still storing a
`ReferenceElement`
by const
reference; please update all those occurences.
-
The meaning of
`Dune::ReferenceElement`
has changed. It is not a type anymore, but an alias
template that looks up the correct implementation for the given template arguments. For now,
there is only a single implementation, but we expect people to come up with additional
implementations in the future. For this reason, the syntax
`Dune::ReferenceElement<ctype,dim>`
is deprecated and will cause compilation failures in the future. If you still need access to
that type, use
`typename Dune::ReferenceElements<ctype,dim>::ReferenceElement`
instead.
-
You can now directly obtain a reference element for a given geometry using the free function
`referenceElement(geometry)`
. This function should be called without any namespace qualifiers to
enable ADL and you should normally capture the return value of the function using
`auto`
, but if
you need to explicitely access the type, this is also available as
`Dune::ReferenceElement<Geometry>`
.
In short: If you can, use the following idiom to obtain a reference element for a geometry:
```
c++
auto
ref_el
=
referenceElement
(
geometry
);
```
The change to the meaning of
`Dune::ReferenceElement`
can break compilation if you have function
overloads that partially specialize on it, e.g.
```
c++
template
<
typename
ctype
,
int
dim
>
void
f
(
const
Dune
::
ReferenceElement
<
ctype
,
dim
>
ref_el
)
{}
```
Normally, you can just simplify this to the following code that also shows how to extract the
missing template parameters:
```
c++
template
<
typename
RefEl
>
void
f
(
const
RefEl
ref_el
)
{
using
ctype
=
typename
RefEl
::
CoordinateField
;
constexpr
auto
dim
=
RefEl
::
dimension
;
}
```
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment