Matthias Maier [Thu, 27 Aug 2015 22:23:21 +0000 (17:23 -0500)]
CMake: Refactor DEAL_II_HAVE_FP_EXCEPTIONS
- this is a language feature, not a platform feature, so move it to
check_01_cxx_features.cmake
- A test that _runs_ code *_must_* be guarded with
DEAL_II_ALLOW_PLATFORM_INTROSPECTION
- Demote DEAL_II_HAVE_FP_EXCEPTIONS to an ordinary variable. Naming
convetion: Variables starting with "DEAL_II_HAVE" must be ordinary
variables, or internal, cached variables.
Note: It is not necessary to promote DEAL_II_HAVE_FP_EXCEPTIONS to cache
in order to override it with -DDEAL_II_HAVE_FP_EXCEPTIONS...
Implementation of general cell halo layer function inside GridTools.
Added filtered iterators that work on material id and active FE index, with the
option of only extracting locally owned cells.
Introduced a GridTools function to extract the halo layer that is composed
of a subset of ghost cells (triangulation type dependent).
Multiple tests to check for output based on a general predicate and the
implemented IteratorFilters.
The output of GridTools::compute_ghost_cell_halo_layer is tested against
a distributed triangulation, ensuring that we return all of the ghost cells
on each processor.
Move a bunch of internal functions into anonymous namespaces.
Like the MappingQ1 class, MappingFEField had a bunch of internal functions
that might as well live inside the .cc file only in an anonymous namespace.
Do so.
Move a bunch of internal functions into anonymous namespaces.
The MappingQ1 class had a bunch of internal functions that were part of the class
declaration but are in fact only ever used internally and do not need a whole
lot of information from the class itself. Move these functions into an anonymous
namespace in the .cc file so as to keep the external interface of the class
as small as possible.
Make the Mapping and FE output objects members of FEValues.
Historically, the fields in the internal::FEValues::MappingRelatedData and
internal::FEValues::FiniteElementRelatedData classes were part of the (now
removed) base class FEValuesData. These two classes neatly split the fields of
this base class into separate categories, but they continued to enter the
FEValuesBase class via protected inheritance. This is not only slightly awkward,
but also not the easiest approach to understand if you start looking at stuff.
This patch is in essence incredibly boring: instead of having two protected
base classes, it introduces two protected member variables. The remainder
of the patch is then simply an exercise in making sure every use of the
henceforth member variables now accessese the members of the two new
class-type member variables. The only interesting aspect (and that's where
everything becomes much clearer with this design) is that when we call
Mapping::fill_fe_values() or the same function in FiniteElement, we no
longer need to implicitly cast down '*this' to the base class reference,
but can instead just use the new member variable.
Other than that the only noteworthy part of the patch is the introduction
of memory_consumption() functions for the two classes previously split out
from FEValuesData.
This commit removes the first_vector_components parameter from
GridTools::collect_periodic_faces(), as well as, the
first_vector_components data field from the struct
GridTools::PeriodicFacePair. The parameter is no added to all varianst of
DoFTools::make_periodicity_constraints instead.
This is an incompatible change made for consistency: A PeriodicFacePair
should not store first_vector_components and with that information about
the underlying finite element space.
Bug fix in GridIn::read_abaqus(): Stride size is sometimes not
explicitly defined for ELSETS. Choose a default value if this is the
case. Fixes issue #1409
As discussed in #496, normal vectors are currently returned by FEValues
as Point<spacedim> objects, but since they are differential vectors, the
correct data type should be Tensor<1,dim>. This patch implements the solution
discussed in #496 by
* changing the return type of FEValues::normal_vector()
* deprecating FEValues::get_normal_vectors()
* introducing FEValues::get_all_normal_vectors() that returns a vector
of tensors.
The old get_normal_vectors() function was deprecated. In order to
make it work, I also had to change the return type from a reference
to a straight array. This array may be bound to a reference in
many places in user codes, but the style we have used everywhere
is to make these reference variables very localized in scope and
so I don't foresee any problems.
David Wells [Thu, 13 Aug 2015 03:05:30 +0000 (23:05 -0400)]
Remove apple gcc-3.3 compatability.
The last release of the 3.3 branch was in 2005, and this bug was fixed
in gcc4.0 (released in 2007).
A historical note: the mentioned bug was reported by deal.II developers
in 2005. See
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=24331
for further discussion (from Kayser-Herold and Bangerth).