3 #ifndef DUNE_PDELAB_COMMON_JACOBIANTOCURL_HH
4 #define DUNE_PDELAB_COMMON_JACOBIANTOCURL_HH
8 #include <dune/common/fvector.hh>
9 #include <dune/common/static_assert.hh>
26 template<
typename Jacobian, std::size_t dimR = Jacobian::rows,
27 std::size_t dimD = Jacobian::cols>
56 template<
typename Jacobian>
59 ( Jacobian::rows == 1 && Jacobian::cols == 2,
"This specialization "
60 "works only for dimRange == 1 and dimDomain == 2");
64 static const std::size_t dimCurl = 2;
65 typedef FieldVector<CurlField, dimCurl>
Curl;
68 curl[0] = jacobian[0][1];
69 curl[1] = -jacobian[0][0];
97 template<
typename Jacobian>
100 ( Jacobian::rows == 2 && Jacobian::cols == 2,
"This specialization "
101 "works only for dimRange == 2 and dimDomain == 2");
105 static const std::size_t dimCurl = 1;
106 typedef FieldVector<CurlField, dimCurl>
Curl;
109 curl[0] = jacobian[1][0]-jacobian[0][1];
132 template<
typename Jacobian>
135 ( Jacobian::rows == 3 && Jacobian::cols == 3,
"This specialization "
136 "works only for dimRange == 3 and dimDomain == 3");
140 static const std::size_t dimCurl = 3;
141 typedef FieldVector<CurlField, dimCurl>
Curl;
144 for(std::size_t alpha = 0; alpha < 3; ++alpha) {
145 std::size_t beta = (alpha+1)%3;
146 std::size_t gamma = (alpha+2)%3;
147 curl[alpha] = jacobian[gamma][beta]-jacobian[beta][gamma];
155 #endif // DUNE_PDELAB_COMMON_JACOBIANTOCURL_HH
Jacobian::block_type CurlField
Definition: jacobiantocurl.hh:63
void operator()(const Jacobian &jacobian, Curl &curl) const
Definition: jacobiantocurl.hh:143
void operator()(const Jacobian &jacobian, Curl &curl) const
Definition: jacobiantocurl.hh:67
FieldVector< CurlField, dimCurl > Curl
Definition: jacobiantocurl.hh:141
extract the curl of a function from the jacobian of that function
Definition: jacobiantocurl.hh:28
FieldVector< CurlField, dimCurl > Curl
Definition: jacobiantocurl.hh:106
Jacobian::block_type CurlField
Definition: jacobiantocurl.hh:139
FieldVector< CurlField, dimCurl > Curl
Definition: jacobiantocurl.hh:65
Jacobian::block_type CurlField
Definition: jacobiantocurl.hh:104
void operator()(const Jacobian &jacobian, Curl &curl) const
Definition: jacobiantocurl.hh:108