1 #ifndef DUNE_ALBERTA_GEOMETRYCACHE_HH
2 #define DUNE_ALBERTA_GEOMETRYCACHE_HH
21 static const unsigned int flagIntegrationElement = (1 << 0);
22 static const unsigned int flagJacobianTransposed = (1 << 1);
23 static const unsigned int flagJacobianInverseTransposed = (1 << 2);
26 typedef FieldMatrix< Real, dimWorld, dim >
Jacobian;
35 if( (flags_ & flagIntegrationElement) == 0 )
38 assert( integrationElement_ > 1e-14 );
39 flags_ |= flagIntegrationElement;
41 return integrationElement_;
46 if( (flags_ & flagJacobianTransposed) == 0 )
50 for(
int i = 0; i < dim; ++i )
54 jacobianTransposed_[ i ][ j ] = y[ j ] - x[ j ];
56 flags_ |= flagJacobianTransposed;
58 return jacobianTransposed_;
63 if( (flags_ & flagJacobianInverseTransposed) == 0 )
66 assert( integrationElement_ > 1e-14 );
67 flags_ |= flagIntegrationElement | flagJacobianInverseTransposed;
69 return jacobianInverseTransposed_;
74 Real integrationElement_;
75 FieldMatrix< Real, dim, dimWorld > jacobianTransposed_;
76 FieldMatrix< Real, dimWorld, dim > jacobianInverseTransposed_;
87 typedef FieldMatrix< Real, dimWorld, dim >
Jacobian;
91 : geometryCache_( geometryCache ),
97 return geometryCache_.integrationElement( elInfo_ );
102 return geometryCache_.jacobianTransposed( elInfo_ );
107 return geometryCache_.jacobianInverseTransposed( elInfo_ );
112 const ALBERTA EL_INFO &elInfo_;
119 #endif // #if HAVE_ALBERTA
121 #endif // #ifndef DUNE_ALBERTA_GEOMETRYCACHE_HH