5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS4_CUBE2D_LOCALBASIS_HH 
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS4_CUBE2D_LOCALBASIS_HH 
   14#include "../../common/localbasis.hh" 
   27  template<
class D, 
class R>
 
   42      sign0 = (s[0]) ? -1.0 : 1.0;
 
   43      sign1 = (s[1]) ? -1.0 : 1.0;
 
   44      sign2 = (s[2]) ? -1.0 : 1.0;
 
   45      sign3 = (s[3]) ? -1.0 : 1.0;
 
   61                                  std::vector<typename Traits::RangeType>& out)
 const 
   65      auto const& x = in[0], y = in[1];
 
   67      const auto l1_x = 2*x - 1;
 
   68      const auto l2_x = x*(6*x - 6) + 1;
 
   69      const auto l3_x = x*(x*(20*x - 30) + 12) - 1;
 
   70      const auto l4_x = x*(x*(x*(70*x - 140) + 90) - 20) + 1;
 
   71      const auto l5_x = x*(x*(x*(x*(252*x - 630) + 560) - 210) + 30) - 1;
 
   72      const auto l1_y = 2*y - 1;
 
   73      const auto l2_y = y*(6*y - 6) + 1;
 
   74      const auto l3_y = y*(y*(20*y - 30) + 12) - 1;
 
   75      const auto l4_y = y*(y*(y*(70*y - 140) + 90) - 20) + 1;
 
   76      const auto l5_y = y*(y*(y*(y*(252*y - 630) + 560) - 210) + 30) - 1;
 
   78      out[0][0]=sign0*(0.5*(-l4_x)+0.5*l5_x);
 
   80      out[1][0]=-(1.5)*l4_x*l1_y+1.5*l5_x*l1_y;
 
   82      out[2][0]=sign0*(-(2.5)*l4_x*l2_y+2.5*l5_x*l2_y);
 
   84      out[3][0]=-(3.5)*l4_x*l3_y+3.5*l5_x*l3_y;
 
   86      out[4][0]=sign0*(-(4.5)*l4_x*l4_y+4.5*l5_x*l4_y);
 
   89      out[5][0]=sign1*(0.5*l4_x+0.5*l5_x);
 
   91      out[6][0]=-(1.5)*l4_x*l1_y-1.5*l5_x*l1_y;
 
   93      out[7][0]=sign1*(2.5*l4_x*l2_y+2.5*l5_x*l2_y);
 
   95      out[8][0]=-(3.5)*l4_x*l3_y-3.5*l5_x*l3_y;
 
   97      out[9][0]=sign1*(4.5*l4_x*l4_y+4.5*l5_x*l4_y);
 
  101      out[10][1]=sign2*(0.5*(-l4_y)+0.5*l5_y);
 
  103      out[11][1]=1.5*l1_x*l4_y-1.5*l1_x*l5_y;
 
  105      out[12][1]=sign2*(-(2.5)*l2_x*l4_y+2.5*l2_x*l5_y);
 
  107      out[13][1]=3.5*l3_x*l4_y-3.5*l3_x*l5_y;
 
  109      out[14][1]=sign2*(-(4.5)*l4_x*l4_y+4.5*l4_x*l5_y);
 
  112      out[15][1]=sign3*(0.5*l4_y+0.5*l5_y);
 
  114      out[16][1]=1.5*l1_x*l4_y+1.5*l1_x*l5_y;
 
  116      out[17][1]=sign3*(2.5*l2_x*l4_y+2.5*l2_x*l5_y);
 
  118      out[18][1]=3.5*l3_x*l4_y+3.5*l3_x*l5_y;
 
  120      out[19][1]=sign3*(4.5*l4_x*l4_y+4.5*l4_x*l5_y);
 
  124      out[21][0]=3.0*l1_y-3.0*l4_x*l1_y;
 
  126      out[22][0]=5.0*l2_y-5.0*l4_x*l2_y;
 
  128      out[23][0]=7.0*l3_y-7.0*l4_x*l3_y;
 
  130      out[24][0]=9.0*l4_y-9.0*l4_x*l4_y;
 
  132      out[25][0]=3.0*l1_x-3.0*l5_x;
 
  134      out[26][0]=9.0*l1_x*l1_y-9.0*l5_x*l1_y;
 
  136      out[27][0]=15.0*l1_x*l2_y-15.0*l5_x*l2_y;
 
  138      out[28][0]=21.0*l1_x*l3_y-21.0*l5_x*l3_y;
 
  140      out[29][0]=27.0*l1_x*l4_y-27.0*l5_x*l4_y;
 
  142      out[30][0]=5.0*l2_x-5.0*l4_x;
 
  144      out[31][0]=15.0*l2_x*l1_y-15.0*l4_x*l1_y;
 
  146      out[32][0]=25.0*l2_x*l2_y-25.0*l4_x*l2_y;
 
  148      out[33][0]=35.0*l2_x*l3_y-35.0*l4_x*l3_y;
 
  150      out[34][0]=45.0*l2_x*l4_y-45.0*l4_x*l4_y;
 
  152      out[35][0]=7.0*l3_x-7.0*l5_x;
 
  154      out[36][0]=21.0*l3_x*l1_y-21.0*l5_x*l1_y;
 
  156      out[37][0]=35.0*l3_x*l2_y-35.0*l5_x*l2_y;
 
  158      out[38][0]=49.0*l3_x*l3_y-49.0*l5_x*l3_y;
 
  160      out[39][0]=63.0*l3_x*l4_y-63.0*l5_x*l4_y;
 
  165      out[41][1]=3.0*l1_y-3.0*l5_y;
 
  167      out[42][1]=5.0*l2_y-5.0*l4_y;
 
  169      out[43][1]=7.0*l3_y-7.0*l5_y;
 
  171      out[44][1]=3.0*l1_x-3.0*l1_x*l4_y;
 
  173      out[45][1]=9.0*l1_x*l1_y-9.0*l1_x*l5_y;
 
  175      out[46][1]=15.0*l1_x*l2_y-15.0*l1_x*l4_y;
 
  177      out[47][1]=21.0*l1_x*l3_y-21.0*l1_x*l5_y;
 
  179      out[48][1]=5.0*l2_x-5.0*l2_x*l4_y;
 
  181      out[49][1]=15.0*l2_x*l1_y-15.0*l2_x*l5_y;
 
  183      out[50][1]=25.0*l2_x*l2_y-25.0*l2_x*l4_y;
 
  185      out[51][1]=35.0*l2_x*l3_y-35.0*l2_x*l5_y;
 
  187      out[52][1]=7.0*l3_x-7.0*l3_x*l4_y;
 
  189      out[53][1]=21.0*l3_x*l1_y-21.0*l3_x*l5_y;
 
  191      out[54][1]=35.0*l3_x*l2_y-35.0*l3_x*l4_y;
 
  193      out[55][1]=49.0*l3_x*l3_y-49.0*l3_x*l5_y;
 
  195      out[56][1]=9.0*l4_x-9.0*l4_x*l4_y;
 
  197      out[57][1]=27.0*l4_x*l1_y-27.0*l4_x*l5_y;
 
  199      out[58][1]=45.0*l4_x*l2_y-45.0*l4_x*l4_y;
 
  201      out[59][1]=63.0*l4_x*l3_y-63.0*l4_x*l5_y;
 
  211                                  std::vector<typename Traits::JacobianType>& out)
 const 
  214      auto const& x = in[0], y = in[1];
 
  216      const auto l1_x = 2*x - 1;
 
  217      const auto l2_x = x*(6*x - 6) + 1;
 
  218      const auto l3_x = x*(x*(20*x - 30) + 12) - 1;
 
  219      const auto l4_x = x*(x*(x*(70*x - 140) + 90) - 20) + 1;
 
  220      const auto l5_x = x*(x*(x*(x*(252*x - 630) + 560) - 210) + 30) - 1;
 
  221      const auto l1_y = 2*y - 1;
 
  222      const auto l2_y = y*(6*y - 6) + 1;
 
  223      const auto l3_y = y*(y*(20*y - 30) + 12) - 1;
 
  224      const auto l4_y = y*(y*(y*(70*y - 140) + 90) - 20) + 1;
 
  225      const auto l5_y = y*(y*(y*(y*(252*y - 630) + 560) - 210) + 30) - 1;
 
  227      const auto dxl1_x = 2.0;
 
  228      const auto dxl2_x = 12*x - 6;
 
  229      const auto dxl3_x = x*(60*x - 60) + 12;
 
  230      const auto dxl4_x = x*(x*(280*x - 420) + 180) - 20;
 
  231      const auto dxl5_x = x*(x*(x*(1260*x - 2520) + 1680) - 420) + 30;
 
  232      const auto dyl1_y = 2.0;
 
  233      const auto dyl2_y = 12*y - 6;
 
  234      const auto dyl3_y = y*(60*y - 60) + 12;
 
  235      const auto dyl4_y = y*(y*(280*y - 420) + 180) - 20;
 
  236      const auto dyl5_y = y*(y*(y*(1260*y - 2520) + 1680) - 420) + 30;
 
  239      out[0][0][0]=sign0*(0.5*(-dxl4_x)+0.5*dxl5_x);
 
  241      out[1][0][0]=-(1.5)*dxl4_x*l1_y+1.5*dxl5_x*l1_y;
 
  243      out[2][0][0]=sign0*(-(2.5)*dxl4_x*l2_y+2.5*dxl5_x*l2_y);
 
  245      out[3][0][0]=-(3.5)*dxl4_x*l3_y+3.5*dxl5_x*l3_y;
 
  247      out[4][0][0]=sign0*(-(4.5)*dxl4_x*l4_y+4.5*dxl5_x*l4_y);
 
  250      out[5][0][0]=sign1*(0.5*dxl4_x+0.5*dxl5_x);
 
  252      out[6][0][0]=-(1.5)*dxl4_x*l1_y-1.5*dxl5_x*l1_y;
 
  254      out[7][0][0]=sign1*(2.5*dxl4_x*l2_y+2.5*dxl5_x*l2_y);
 
  256      out[8][0][0]=-(3.5)*dxl4_x*l3_y-3.5*dxl5_x*l3_y;
 
  258      out[9][0][0]=sign1*(4.5*dxl4_x*l4_y+4.5*dxl5_x*l4_y);
 
  264      out[11][1][0]=1.5*dxl1_x*l4_y-1.5*dxl1_x*l5_y;
 
  266      out[12][1][0]=sign2*(-(2.5)*dxl2_x*l4_y+2.5*dxl2_x*l5_y);
 
  268      out[13][1][0]=3.5*dxl3_x*l4_y-3.5*dxl3_x*l5_y;
 
  270      out[14][1][0]=sign2*(-(4.5)*dxl4_x*l4_y+4.5*dxl4_x*l5_y);
 
  275      out[16][1][0]=1.5*dxl1_x*l4_y+1.5*dxl1_x*l5_y;
 
  277      out[17][1][0]=sign3*(2.5*dxl2_x*l4_y+2.5*dxl2_x*l5_y);
 
  279      out[18][1][0]=3.5*dxl3_x*l4_y+3.5*dxl3_x*l5_y;
 
  281      out[19][1][0]=sign3*(4.5*dxl4_x*l4_y+4.5*dxl4_x*l5_y);
 
  283      out[20][0][0]=-dxl4_x;
 
  285      out[21][0][0]=-3.0*dxl4_x*l1_y;
 
  287      out[22][0][0]=-5.0*dxl4_x*l2_y;
 
  289      out[23][0][0]=-7.0*dxl4_x*l3_y;
 
  291      out[24][0][0]=-9.0*dxl4_x*l4_y;
 
  293      out[25][0][0]=3.0*dxl1_x-3.0*dxl5_x;
 
  295      out[26][0][0]=9.0*dxl1_x*l1_y-9.0*dxl5_x*l1_y;
 
  297      out[27][0][0]=15.0*dxl1_x*l2_y-15.0*dxl5_x*l2_y;
 
  299      out[28][0][0]=21.0*dxl1_x*l3_y-21.0*dxl5_x*l3_y;
 
  301      out[29][0][0]=27.0*dxl1_x*l4_y-27.0*dxl5_x*l4_y;
 
  303      out[30][0][0]=5.0*dxl2_x-5.0*dxl4_x;
 
  305      out[31][0][0]=15.0*dxl2_x*l1_y-15.0*dxl4_x*l1_y;
 
  307      out[32][0][0]=25.0*dxl2_x*l2_y-25.0*dxl4_x*l2_y;
 
  309      out[33][0][0]=35.0*dxl2_x*l3_y-35.0*dxl4_x*l3_y;
 
  311      out[34][0][0]=45.0*dxl2_x*l4_y-45.0*dxl4_x*l4_y;
 
  313      out[35][0][0]=7.0*dxl3_x-7.0*dxl5_x;
 
  315      out[36][0][0]=21.0*dxl3_x*l1_y-21.0*dxl5_x*l1_y;
 
  317      out[37][0][0]=35.0*dxl3_x*l2_y-35.0*dxl5_x*l2_y;
 
  319      out[38][0][0]=49.0*dxl3_x*l3_y-49.0*dxl5_x*l3_y;
 
  321      out[39][0][0]=63.0*dxl3_x*l4_y-63.0*dxl5_x*l4_y;
 
  332      out[44][1][0]=3.0*dxl1_x-3.0*dxl1_x*l4_y;
 
  334      out[45][1][0]=9.0*dxl1_x*l1_y-9.0*dxl1_x*l5_y;
 
  336      out[46][1][0]=15.0*dxl1_x*l2_y-15.0*dxl1_x*l4_y;
 
  338      out[47][1][0]=21.0*dxl1_x*l3_y-21.0*dxl1_x*l5_y;
 
  340      out[48][1][0]=5.0*dxl2_x-5.0*dxl2_x*l4_y;
 
  342      out[49][1][0]=15.0*dxl2_x*l1_y-15.0*dxl2_x*l5_y;
 
  344      out[50][1][0]=25.0*dxl2_x*l2_y-25.0*dxl2_x*l4_y;
 
  346      out[51][1][0]=35.0*dxl2_x*l3_y-35.0*dxl2_x*l5_y;
 
  348      out[52][1][0]=7.0*dxl3_x-7.0*dxl3_x*l4_y;
 
  350      out[53][1][0]=21.0*dxl3_x*l1_y-21.0*dxl3_x*l5_y;
 
  352      out[54][1][0]=35.0*dxl3_x*l2_y-35.0*dxl3_x*l4_y;
 
  354      out[55][1][0]=49.0*dxl3_x*l3_y-49.0*dxl3_x*l5_y;
 
  356      out[56][1][0]=9.0*dxl4_x-9.0*dxl4_x*l4_y;
 
  358      out[57][1][0]=27.0*dxl4_x*l1_y-27.0*dxl4_x*l5_y;
 
  360      out[58][1][0]=45.0*dxl4_x*l2_y-45.0*dxl4_x*l4_y;
 
  362      out[59][1][0]=63.0*dxl4_x*l3_y-63.0*dxl4_x*l5_y;
 
  367      out[1][0][1]=-(1.5)*l4_x*dyl1_y+1.5*l5_x*dyl1_y;
 
  369      out[2][0][1]=sign0*(-(2.5)*l4_x*dyl2_y+2.5*l5_x*dyl2_y);
 
  371      out[3][0][1]=-(3.5)*l4_x*dyl3_y+3.5*l5_x*dyl3_y;
 
  373      out[4][0][1]=sign0*(-(4.5)*l4_x*dyl4_y+4.5*l5_x*dyl4_y);
 
  378      out[6][0][1]=-(1.5)*l4_x*dyl1_y-1.5*l5_x*dyl1_y;
 
  380      out[7][0][1]=sign1*(2.5*l4_x*dyl2_y+2.5*l5_x*dyl2_y);
 
  382      out[8][0][1]=-(3.5)*l4_x*dyl3_y-3.5*l5_x*dyl3_y;
 
  384      out[9][0][1]=sign1*(4.5*l4_x*dyl4_y+4.5*l5_x*dyl4_y);
 
  388      out[10][1][1]=sign2*(0.5*(-dyl4_y)+0.5*dyl5_y);
 
  390      out[11][1][1]=1.5*l1_x*dyl4_y-1.5*l1_x*dyl5_y;
 
  392      out[12][1][1]=sign2*(-(2.5)*l2_x*dyl4_y+2.5*l2_x*dyl5_y);
 
  394      out[13][1][1]=3.5*l3_x*dyl4_y-3.5*l3_x*dyl5_y;
 
  396      out[14][1][1]=sign2*(-(4.5)*l4_x*dyl4_y+4.5*l4_x*dyl5_y);
 
  399      out[15][1][1]=sign3*(0.5*dyl4_y+0.5*dyl5_y);
 
  401      out[16][1][1]=1.5*l1_x*dyl4_y+1.5*l1_x*dyl5_y;
 
  403      out[17][1][1]=sign3*(2.5*l2_x*dyl4_y+2.5*l2_x*dyl5_y);
 
  405      out[18][1][1]=3.5*l3_x*dyl4_y+3.5*l3_x*dyl5_y;
 
  407      out[19][1][1]=sign3*(4.5*l4_x*dyl4_y+4.5*l4_x*dyl5_y);
 
  411      out[21][0][1]=3.0*dyl1_y-3.0*l4_x*dyl1_y;
 
  413      out[22][0][1]=5.0*dyl2_y-5.0*l4_x*dyl2_y;
 
  415      out[23][0][1]=7.0*dyl3_y-7.0*l4_x*dyl3_y;
 
  417      out[24][0][1]=9.0*dyl4_y-9.0*l4_x*dyl4_y;
 
  421      out[26][0][1]=9.0*l1_x*dyl1_y-9.0*l5_x*dyl1_y;
 
  423      out[27][0][1]=15.0*l1_x*dyl2_y-15.0*l5_x*dyl2_y;
 
  425      out[28][0][1]=21.0*l1_x*dyl3_y-21.0*l5_x*dyl3_y;
 
  427      out[29][0][1]=27.0*l1_x*dyl4_y-27.0*l5_x*dyl4_y;
 
  431      out[31][0][1]=15.0*l2_x*dyl1_y-15.0*l4_x*dyl1_y;
 
  433      out[32][0][1]=25.0*l2_x*dyl2_y-25.0*l4_x*dyl2_y;
 
  435      out[33][0][1]=35.0*l2_x*dyl3_y-35.0*l4_x*dyl3_y;
 
  437      out[34][0][1]=45.0*l2_x*dyl4_y-45.0*l4_x*dyl4_y;
 
  441      out[36][0][1]=21.0*l3_x*dyl1_y-21.0*l5_x*dyl1_y;
 
  443      out[37][0][1]=35.0*l3_x*dyl2_y-35.0*l5_x*dyl2_y;
 
  445      out[38][0][1]=49.0*l3_x*dyl3_y-49.0*l5_x*dyl3_y;
 
  447      out[39][0][1]=63.0*l3_x*dyl4_y-63.0*l5_x*dyl4_y;
 
  450      out[40][1][1]=-dyl4_y;
 
  452      out[41][1][1]=3.0*dyl1_y-3.0*dyl5_y;
 
  454      out[42][1][1]=5.0*dyl2_y-5.0*dyl4_y;
 
  456      out[43][1][1]=7.0*dyl3_y-7.0*dyl5_y;
 
  458      out[44][1][1]=-3.0*l1_x*dyl4_y;
 
  460      out[45][1][1]=9.0*l1_x*dyl1_y-9.0*l1_x*dyl5_y;
 
  462      out[46][1][1]=15.0*l1_x*dyl2_y-15.0*l1_x*dyl4_y;
 
  464      out[47][1][1]=21.0*l1_x*dyl3_y-21.0*l1_x*dyl5_y;
 
  466      out[48][1][1]=-5.0*l2_x*dyl4_y;
 
  468      out[49][1][1]=15.0*l2_x*dyl1_y-15.0*l2_x*dyl5_y;
 
  470      out[50][1][1]=25.0*l2_x*dyl2_y-25.0*l2_x*dyl4_y;
 
  472      out[51][1][1]=35.0*l2_x*dyl3_y-35.0*l2_x*dyl5_y;
 
  474      out[52][1][1]=-7.0*l3_x*dyl4_y;
 
  476      out[53][1][1]=21.0*l3_x*dyl1_y-21.0*l3_x*dyl5_y;
 
  478      out[54][1][1]=35.0*l3_x*dyl2_y-35.0*l3_x*dyl4_y;
 
  480      out[55][1][1]=49.0*l3_x*dyl3_y-49.0*l3_x*dyl5_y;
 
  482      out[56][1][1]=-9.0*l4_x*dyl4_y;
 
  484      out[57][1][1]=27.0*l4_x*dyl1_y-27.0*l4_x*dyl5_y;
 
  486      out[58][1][1]=45.0*l4_x*dyl2_y-45.0*l4_x*dyl4_y;
 
  488      out[59][1][1]=63.0*l4_x*dyl3_y-63.0*l4_x*dyl5_y;
 
  494                  std::vector<typename Traits::RangeType>& out) 
const       
  497      if (totalOrder == 0) {
 
  499      } 
else if (totalOrder == 1) {
 
  501        auto const direction = std::distance(
order.begin(), std::find(
order.begin(), 
order.end(), 1));
 
  502        auto const& x = in[0], y = in[1];
 
  505        auto l2_x = x*(6*x - 6) + 1;
 
  506        auto l3_x = x*(x*(20*x - 30) + 12) - 1;
 
  507        auto l4_x = x*(x*(x*(70*x - 140) + 90) - 20) + 1;
 
  508        auto l5_x = x*(x*(x*(x*(252*x - 630) + 560) - 210) + 30) - 1;
 
  510        auto l2_y = y*(6*y - 6) + 1;
 
  511        auto l3_y = y*(y*(20*y - 30) + 12) - 1;
 
  512        auto l4_y = y*(y*(y*(70*y - 140) + 90) - 20) + 1;
 
  513        auto l5_y = y*(y*(y*(y*(252*y - 630) + 560) - 210) + 30) - 1;
 
  515        if (direction == 0) {
 
  517          auto dxl2_x = 12*x - 6;
 
  518          auto dxl3_x = x*(60*x - 60) + 12;
 
  519          auto dxl4_x = x*(x*(280*x - 420) + 180) - 20;
 
  520          auto dxl5_x = x*(x*(x*(1260*x - 2520) + 1680) - 420) + 30;
 
  522          out[0][0]=sign0*(0.5*(-dxl4_x)+0.5*dxl5_x);
 
  524          out[1][0]=-(1.5)*dxl4_x*l1_y+1.5*dxl5_x*l1_y;
 
  526          out[2][0]=sign0*(-(2.5)*dxl4_x*l2_y+2.5*dxl5_x*l2_y);
 
  528          out[3][0]=-(3.5)*dxl4_x*l3_y+3.5*dxl5_x*l3_y;
 
  530          out[4][0]=sign0*(-(4.5)*dxl4_x*l4_y+4.5*dxl5_x*l4_y);
 
  533          out[5][0]=sign1*(0.5*dxl4_x+0.5*dxl5_x);
 
  535          out[6][0]=-(1.5)*dxl4_x*l1_y-1.5*dxl5_x*l1_y;
 
  537          out[7][0]=sign1*(2.5*dxl4_x*l2_y+2.5*dxl5_x*l2_y);
 
  539          out[8][0]=-(3.5)*dxl4_x*l3_y-3.5*dxl5_x*l3_y;
 
  541          out[9][0]=sign1*(4.5*dxl4_x*l4_y+4.5*dxl5_x*l4_y);
 
  547          out[11][1]=1.5*dxl1_x*l4_y-1.5*dxl1_x*l5_y;
 
  549          out[12][1]=sign2*(-(2.5)*dxl2_x*l4_y+2.5*dxl2_x*l5_y);
 
  551          out[13][1]=3.5*dxl3_x*l4_y-3.5*dxl3_x*l5_y;
 
  553          out[14][1]=sign2*(-(4.5)*dxl4_x*l4_y+4.5*dxl4_x*l5_y);
 
  558          out[16][1]=1.5*dxl1_x*l4_y+1.5*dxl1_x*l5_y;
 
  560          out[17][1]=sign3*(2.5*dxl2_x*l4_y+2.5*dxl2_x*l5_y);
 
  562          out[18][1]=3.5*dxl3_x*l4_y+3.5*dxl3_x*l5_y;
 
  564          out[19][1]=sign3*(4.5*dxl4_x*l4_y+4.5*dxl4_x*l5_y);
 
  568          out[21][0]=-3.0*dxl4_x*l1_y;
 
  570          out[22][0]=-5.0*dxl4_x*l2_y;
 
  572          out[23][0]=-7.0*dxl4_x*l3_y;
 
  574          out[24][0]=-9.0*dxl4_x*l4_y;
 
  576          out[25][0]=3.0*dxl1_x-3.0*dxl5_x;
 
  578          out[26][0]=9.0*dxl1_x*l1_y-9.0*dxl5_x*l1_y;
 
  580          out[27][0]=15.0*dxl1_x*l2_y-15.0*dxl5_x*l2_y;
 
  582          out[28][0]=21.0*dxl1_x*l3_y-21.0*dxl5_x*l3_y;
 
  584          out[29][0]=27.0*dxl1_x*l4_y-27.0*dxl5_x*l4_y;
 
  586          out[30][0]=5.0*dxl2_x-5.0*dxl4_x;
 
  588          out[31][0]=15.0*dxl2_x*l1_y-15.0*dxl4_x*l1_y;
 
  590          out[32][0]=25.0*dxl2_x*l2_y-25.0*dxl4_x*l2_y;
 
  592          out[33][0]=35.0*dxl2_x*l3_y-35.0*dxl4_x*l3_y;
 
  594          out[34][0]=45.0*dxl2_x*l4_y-45.0*dxl4_x*l4_y;
 
  596          out[35][0]=7.0*dxl3_x-7.0*dxl5_x;
 
  598          out[36][0]=21.0*dxl3_x*l1_y-21.0*dxl5_x*l1_y;
 
  600          out[37][0]=35.0*dxl3_x*l2_y-35.0*dxl5_x*l2_y;
 
  602          out[38][0]=49.0*dxl3_x*l3_y-49.0*dxl5_x*l3_y;
 
  604          out[39][0]=63.0*dxl3_x*l4_y-63.0*dxl5_x*l4_y;
 
  615          out[44][1]=3.0*dxl1_x-3.0*dxl1_x*l4_y;
 
  617          out[45][1]=9.0*dxl1_x*l1_y-9.0*dxl1_x*l5_y;
 
  619          out[46][1]=15.0*dxl1_x*l2_y-15.0*dxl1_x*l4_y;
 
  621          out[47][1]=21.0*dxl1_x*l3_y-21.0*dxl1_x*l5_y;
 
  623          out[48][1]=5.0*dxl2_x-5.0*dxl2_x*l4_y;
 
  625          out[49][1]=15.0*dxl2_x*l1_y-15.0*dxl2_x*l5_y;
 
  627          out[50][1]=25.0*dxl2_x*l2_y-25.0*dxl2_x*l4_y;
 
  629          out[51][1]=35.0*dxl2_x*l3_y-35.0*dxl2_x*l5_y;
 
  631          out[52][1]=7.0*dxl3_x-7.0*dxl3_x*l4_y;
 
  633          out[53][1]=21.0*dxl3_x*l1_y-21.0*dxl3_x*l5_y;
 
  635          out[54][1]=35.0*dxl3_x*l2_y-35.0*dxl3_x*l4_y;
 
  637          out[55][1]=49.0*dxl3_x*l3_y-49.0*dxl3_x*l5_y;
 
  639          out[56][1]=9.0*dxl4_x-9.0*dxl4_x*l4_y;
 
  641          out[57][1]=27.0*dxl4_x*l1_y-27.0*dxl4_x*l5_y;
 
  643          out[58][1]=45.0*dxl4_x*l2_y-45.0*dxl4_x*l4_y;
 
  645          out[59][1]=63.0*dxl4_x*l3_y-63.0*dxl4_x*l5_y;
 
  647        } 
else if (direction == 1) {
 
  649          auto dyl2_y = 12*y - 6;
 
  650          auto dyl3_y = y*(60*y - 60) + 12;
 
  651          auto dyl4_y = y*(y*(280*y - 420) + 180) - 20;
 
  652          auto dyl5_y = y*(y*(y*(1260*y - 2520) + 1680) - 420) + 30;
 
  656          out[1][0]=-(1.5)*l4_x*dyl1_y+1.5*l5_x*dyl1_y;
 
  658          out[2][0]=sign0*(-(2.5)*l4_x*dyl2_y+2.5*l5_x*dyl2_y);
 
  660          out[3][0]=-(3.5)*l4_x*dyl3_y+3.5*l5_x*dyl3_y;
 
  662          out[4][0]=sign0*(-(4.5)*l4_x*dyl4_y+4.5*l5_x*dyl4_y);
 
  667          out[6][0]=-(1.5)*l4_x*dyl1_y-1.5*l5_x*dyl1_y;
 
  669          out[7][0]=sign1*(2.5*l4_x*dyl2_y+2.5*l5_x*dyl2_y);
 
  671          out[8][0]=-(3.5)*l4_x*dyl3_y-3.5*l5_x*dyl3_y;
 
  673          out[9][0]=sign1*(4.5*l4_x*dyl4_y+4.5*l5_x*dyl4_y);
 
  677          out[10][1]=sign2*(0.5*(-dyl4_y)+0.5*dyl5_y);
 
  679          out[11][1]=1.5*l1_x*dyl4_y-1.5*l1_x*dyl5_y;
 
  681          out[12][1]=sign2*(-(2.5)*l2_x*dyl4_y+2.5*l2_x*dyl5_y);
 
  683          out[13][1]=3.5*l3_x*dyl4_y-3.5*l3_x*dyl5_y;
 
  685          out[14][1]=sign2*(-(4.5)*l4_x*dyl4_y+4.5*l4_x*dyl5_y);
 
  688          out[15][1]=sign3*(0.5*dyl4_y+0.5*dyl5_y);
 
  690          out[16][1]=1.5*l1_x*dyl4_y+1.5*l1_x*dyl5_y;
 
  692          out[17][1]=sign3*(2.5*l2_x*dyl4_y+2.5*l2_x*dyl5_y);
 
  694          out[18][1]=3.5*l3_x*dyl4_y+3.5*l3_x*dyl5_y;
 
  696          out[19][1]=sign3*(4.5*l4_x*dyl4_y+4.5*l4_x*dyl5_y);
 
  700          out[21][0]=3.0*dyl1_y-3.0*l4_x*dyl1_y;
 
  702          out[22][0]=5.0*dyl2_y-5.0*l4_x*dyl2_y;
 
  704          out[23][0]=7.0*dyl3_y-7.0*l4_x*dyl3_y;
 
  706          out[24][0]=9.0*dyl4_y-9.0*l4_x*dyl4_y;
 
  710          out[26][0]=9.0*l1_x*dyl1_y-9.0*l5_x*dyl1_y;
 
  712          out[27][0]=15.0*l1_x*dyl2_y-15.0*l5_x*dyl2_y;
 
  714          out[28][0]=21.0*l1_x*dyl3_y-21.0*l5_x*dyl3_y;
 
  716          out[29][0]=27.0*l1_x*dyl4_y-27.0*l5_x*dyl4_y;
 
  720          out[31][0]=15.0*l2_x*dyl1_y-15.0*l4_x*dyl1_y;
 
  722          out[32][0]=25.0*l2_x*dyl2_y-25.0*l4_x*dyl2_y;
 
  724          out[33][0]=35.0*l2_x*dyl3_y-35.0*l4_x*dyl3_y;
 
  726          out[34][0]=45.0*l2_x*dyl4_y-45.0*l4_x*dyl4_y;
 
  730          out[36][0]=21.0*l3_x*dyl1_y-21.0*l5_x*dyl1_y;
 
  732          out[37][0]=35.0*l3_x*dyl2_y-35.0*l5_x*dyl2_y;
 
  734          out[38][0]=49.0*l3_x*dyl3_y-49.0*l5_x*dyl3_y;
 
  736          out[39][0]=63.0*l3_x*dyl4_y-63.0*l5_x*dyl4_y;
 
  741          out[41][1]=3.0*dyl1_y-3.0*dyl5_y;
 
  743          out[42][1]=5.0*dyl2_y-5.0*dyl4_y;
 
  745          out[43][1]=7.0*dyl3_y-7.0*dyl5_y;
 
  747          out[44][1]=-3.0*l1_x*dyl4_y;
 
  749          out[45][1]=9.0*l1_x*dyl1_y-9.0*l1_x*dyl5_y;
 
  751          out[46][1]=15.0*l1_x*dyl2_y-15.0*l1_x*dyl4_y;
 
  753          out[47][1]=21.0*l1_x*dyl3_y-21.0*l1_x*dyl5_y;
 
  755          out[48][1]=-5.0*l2_x*dyl4_y;
 
  757          out[49][1]=15.0*l2_x*dyl1_y-15.0*l2_x*dyl5_y;
 
  759          out[50][1]=25.0*l2_x*dyl2_y-25.0*l2_x*dyl4_y;
 
  761          out[51][1]=35.0*l2_x*dyl3_y-35.0*l2_x*dyl5_y;
 
  763          out[52][1]=-7.0*l3_x*dyl4_y;
 
  765          out[53][1]=21.0*l3_x*dyl1_y-21.0*l3_x*dyl5_y;
 
  767          out[54][1]=35.0*l3_x*dyl2_y-35.0*l3_x*dyl4_y;
 
  769          out[55][1]=49.0*l3_x*dyl3_y-49.0*l3_x*dyl5_y;
 
  771          out[56][1]=-9.0*l4_x*dyl4_y;
 
  773          out[57][1]=27.0*l4_x*dyl1_y-27.0*l4_x*dyl5_y;
 
  775          out[58][1]=45.0*l4_x*dyl2_y-45.0*l4_x*dyl4_y;
 
  777          out[59][1]=63.0*l4_x*dyl3_y-63.0*l4_x*dyl5_y;
 
  793    R sign0, sign1, sign2, sign3;
 
A dense n x m matrix.
Definition: fmatrix.hh:117
 
vector space out of a tensor product of fields.
Definition: fvector.hh:97
 
Default exception for dummy implementations.
Definition: exceptions.hh:357
 
Second order Raviart-Thomas shape functions on the reference quadrilateral.
Definition: raviartthomas4cube2dlocalbasis.hh:29
 
void partial(const std::array< unsigned int, 2 > &order, const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
Evaluate partial derivatives of all shape functions.
Definition: raviartthomas4cube2dlocalbasis.hh:492
 
void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
Evaluate all shape functions.
Definition: raviartthomas4cube2dlocalbasis.hh:60
 
unsigned int size() const
number of shape functions
Definition: raviartthomas4cube2dlocalbasis.hh:49
 
unsigned int order() const
Polynomial order of the shape functions.
Definition: raviartthomas4cube2dlocalbasis.hh:787
 
void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
Evaluate Jacobian of all shape functions.
Definition: raviartthomas4cube2dlocalbasis.hh:210
 
RT4Cube2DLocalBasis(std::bitset< 4 > s=0)
Make set number s, where 0 <= s < 16.
Definition: raviartthomas4cube2dlocalbasis.hh:40
 
Default exception class for range errors.
Definition: exceptions.hh:348
 
Implements a matrix constructed from a given type representing a field and compile-time given number ...
 
#define DUNE_THROW(E,...)
Definition: exceptions.hh:314
 
constexpr T accumulate(Range &&range, T value, F &&f)
Accumulate values.
Definition: hybridutilities.hh:280
 
Dune namespace.
Definition: alignedallocator.hh:13
 
Type traits for LocalBasisVirtualInterface.
Definition: localbasis.hh:35
 
D DomainType
domain type
Definition: localbasis.hh:43