6 template <
class Gr
idPart>
7 typename CacheProvider<GridPart, 1>::MapperIteratorType
8 CacheProvider<GridPart, 1>::createMapper(
const QuadratureType& quad,
9 GeometryType elementGeometry,
11 MapperContainerType& mappers )
14 if( ! Fem :: MPIManager :: singleThreadMode() )
16 DUNE_THROW(SingleThreadModeError,
"CacheProvider::createMapper: only call in single thread mode!");
19 typedef TwistProvider<ct,
dim-codim> TwistProviderType;
20 typedef typename TwistProviderType::TwistStorageType TwistStorageType;
22 const TwistStorageType& twistMappers =
23 TwistProviderType::getTwistStorage(quad);
24 const auto pointMappers =
25 PointProvider<ct, dim, codim>::getMappers(quad,
26 twistMappers.getPoints(),
29 const int numFaces = pointMappers.first.size();
30 const int maxTwist = twistMappers.maxTwist();
31 const int minTwist = twistMappers.minTwist();
33 QuadratureKeyType key ( elementGeometry, quad.id() );
35 MapperContainerType& mappers_ = mappers;
37 MapperIteratorType it = mappers_.insert
39 CacheStorageType(numFaces, maxTwist))).first;
41 for (
int face = 0; face < numFaces; ++face)
43 for (
int twist = minTwist; twist < maxTwist; ++twist)
45 it->second.addMapper(pointMappers.first[face],
46 pointMappers.second[face],
47 twistMappers.getMapper(twist),
57 template <
class Gr
idPart>
58 typename CacheProvider<GridPart, 1>::MapperIteratorType
59 CacheProvider<GridPart, 1>::createMapper(
const QuadratureType& quad,
60 GeometryType elementGeometry,
62 MapperContainerType& mappers )
65 if( ! Fem :: MPIManager :: singleThreadMode() )
67 DUNE_THROW(SingleThreadModeError,
"CacheProvider::createMapper: only call in single thread mode!");
70 const auto pointMappers =
71 PointProvider<ct, dim, codim>::getMappers(quad, elementGeometry);
73 const int numFaces = pointMappers.first.size();
75 QuadratureKeyType key ( elementGeometry, quad.id() );
77 MapperContainerType& mappers_ = mappers;
80 = mappers_.insert(
std::make_pair(key, CacheStorageType(numFaces))).first;
82 for (
int face = 0; face < numFaces; ++face)
83 it->second.addMapper(pointMappers.first[face],
84 pointMappers.second[face],
#define DUNE_THROW(E,...)