3 #ifndef DUNE_PDELAB_COMMON_JACOBIANTOCURL_HH 4 #define DUNE_PDELAB_COMMON_JACOBIANTOCURL_HH 8 #include <dune/common/fvector.hh> 25 template<
typename Jacobian, std::size_t dimR = Jacobian::rows,
26 std::size_t dimD = Jacobian::cols>
55 template<
typename Jacobian>
58 ( Jacobian::rows == 1 && Jacobian::cols == 2,
"This specialization " 59 "works only for dimRange == 1 and dimDomain == 2");
62 typedef typename Jacobian::block_type
CurlField;
63 static const std::size_t dimCurl = 2;
64 typedef FieldVector<CurlField, dimCurl>
Curl;
66 void operator()(
const Jacobian& jacobian, Curl& curl)
const {
67 curl[0] = jacobian[0][1];
68 curl[1] = -jacobian[0][0];
96 template<
typename Jacobian>
99 ( Jacobian::rows == 2 && Jacobian::cols == 2,
"This specialization " 100 "works only for dimRange == 2 and dimDomain == 2");
103 typedef typename Jacobian::block_type
CurlField;
104 static const std::size_t dimCurl = 1;
105 typedef FieldVector<CurlField, dimCurl>
Curl;
107 void operator()(
const Jacobian& jacobian, Curl& curl)
const {
108 curl[0] = jacobian[1][0]-jacobian[0][1];
131 template<
typename Jacobian>
134 ( Jacobian::rows == 3 && Jacobian::cols == 3,
"This specialization " 135 "works only for dimRange == 3 and dimDomain == 3");
138 typedef typename Jacobian::block_type
CurlField;
139 static const std::size_t dimCurl = 3;
140 typedef FieldVector<CurlField, dimCurl>
Curl;
143 for(std::size_t alpha = 0; alpha < 3; ++alpha) {
144 std::size_t beta = (alpha+1)%3;
145 std::size_t gamma = (alpha+2)%3;
146 curl[alpha] = jacobian[gamma][beta]-jacobian[beta][gamma];
154 #endif // DUNE_PDELAB_COMMON_JACOBIANTOCURL_HH Jacobian::block_type CurlField
Definition: jacobiantocurl.hh:59
extract the curl of a function from the jacobian of that function
Definition: jacobiantocurl.hh:27
void operator()(const Jacobian &jacobian, Curl &curl) const
Definition: jacobiantocurl.hh:107
Definition: adaptivity.hh:27
void operator()(const Jacobian &jacobian, Curl &curl) const
Definition: jacobiantocurl.hh:142
FieldVector< CurlField, dimCurl > Curl
Definition: jacobiantocurl.hh:64
Jacobian::block_type CurlField
Definition: jacobiantocurl.hh:100
void operator()(const Jacobian &jacobian, Curl &curl) const
Definition: jacobiantocurl.hh:66
FieldVector< CurlField, dimCurl > Curl
Definition: jacobiantocurl.hh:140
FieldVector< CurlField, dimCurl > Curl
Definition: jacobiantocurl.hh:105
Jacobian::block_type CurlField
Definition: jacobiantocurl.hh:135