3 #ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS3_CUBE2D_LOCALBASIS_HH 4 #define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS3_CUBE2D_LOCALBASIS_HH 8 #include <dune/common/fmatrix.hh> 10 #include "../../common/localbasis.hh" 23 template<
class D,
class R>
34 sign0 = sign1 = sign2 = sign3 = 1.0;
44 sign0 = sign1 = sign2 = sign3 = 1.0;
76 std::vector<typename Traits::RangeType>& out)
const 79 double tmp1=-1.0+16.0*in[0]-60.0*pow(in[0],2)+80.0*pow(in[0],3)-35.0*pow(in[0],4);
80 double tmp2=(1.0-16.0*in[0]+60.0*pow(in[0],2)-80.0*pow(in[0],3)+35.0*pow(in[0],4));
81 double tmp3=(-1.0+2.0*in[1]);
82 double tmp4=(1.0-6.0*in[1]+6.0*pow(in[1],2));
83 double tmp5=(-1.0+12.0*in[1]-30.0*pow(in[1],2)+20.0*pow(in[1],3));
84 double tmp6=in[0]*(-4.0+30.0*in[0]-60.0*pow(in[0],2)+35.0*pow(in[0],3));
85 double tmp7=-1.0+16.0*in[1]-60.0*pow(in[1],2)+80.0*pow(in[1],3)-35.0*pow(in[1],4);
86 double tmp8=(1.0-16.0*in[1]+60.0*pow(in[1],2)-80.0*pow(in[1],3)+35.0*pow(in[1],4));
87 double tmp9=(-1.0+2.0*in[0]);
88 double tmp10=(1.0-6.0*in[0]+6.0*pow(in[0],2));
89 double tmp11=(-1.0+12.0*in[0]-30.0*pow(in[0],2)+20.0*pow(in[0],3));
90 double tmp12=in[1]*(-4.0+30.0*in[1]-60.0*pow(in[1],2)+35.0*pow(in[1],3));
91 double tmp13=in[0]*(2.0-9.0*in[0]+14.0*pow(in[0],2)-7.0*pow(in[0],3));
92 double tmp14=in[0]*(-2.0+9.0*in[0]-14.0*pow(in[0],2)+7.0*pow(in[0],3));
93 double tmp15=in[0]*(1.0-3.0*in[0]+2.0*pow(in[0],2));
94 double tmp16=in[0]*(-1.0+6.0*in[0]-10.0*pow(in[0],2)+5.0*pow(in[0],3));
95 double tmp17=in[1]*(2.0-9.0*in[1]+14.0*pow(in[1],2)-7.0*pow(in[1],3));
96 double tmp18=in[1]*(1.0-3.0*in[1]+2.0*pow(in[1],2));
97 double tmp19=in[1]*(-1.0+6.0*in[1]-10.0*pow(in[1],2)+5.0*pow(in[1],3));
98 double tmp20=in[1]*(-2.0+9.0*in[1]-14.0*pow(in[1],2)+7.0*pow(in[1],3));
100 out[0][0]=sign0*tmp1;
102 out[1][0]=(-3.0*tmp2*tmp3);
104 out[2][0]=sign0*(-5.0*tmp2*tmp4);
106 out[3][0]=(-7.0*tmp2*tmp5);
109 out[4][0]=sign1*tmp6;
111 out[5][0]=(-3.0*tmp6*tmp3);
113 out[6][0]=sign1*(5.0*tmp6*tmp4);
115 out[7][0]=(-7.0*tmp6*tmp5);
119 out[8][1]=sign2*tmp7;
121 out[9][1]=3.0*tmp9*tmp8;
123 out[10][1]=sign2*(-5.0*tmp10*tmp8);
125 out[11][1]=7.0*tmp11*tmp8;
128 out[12][1]=sign3*tmp12;
130 out[13][1]=3.0*tmp9*tmp12;
132 out[14][1]=sign3*5.0*tmp10*tmp12;
134 out[15][1]=7.0*tmp11*tmp12;
136 out[16][0]=10.0*tmp13;
138 out[17][0]=-30.0*tmp14*tmp3;
140 out[18][0]=-50.0*tmp14*tmp4;
142 out[19][0]=-70.0*tmp14*tmp5;
144 out[20][0]=-30.0*tmp15;
146 out[21][0]=-90.0*tmp15*tmp3;
148 out[22][0]=-150.0*tmp15*tmp4;
150 out[23][0]=-210.0*tmp15*tmp5;
152 out[24][0]=-70.0*tmp16;
154 out[25][0]=-210.0*tmp16*tmp3;
156 out[26][0]=-350.0*tmp16*tmp4;
158 out[27][0]=-490.0*tmp16*tmp5;
161 out[28][1]=10.0*tmp17;
163 out[29][1]=-30.0*tmp18;
165 out[30][1]=-70.0*tmp19;
167 out[31][1]=-30.0*tmp9*tmp20;
169 out[32][1]=-90.0*tmp9*tmp18;
171 out[33][1]=-210.0*tmp9*tmp19;
173 out[34][1]=-50.0*tmp10*tmp20;
175 out[35][1]=-150.0*tmp10*tmp18;
177 out[36][1]=-350.0*tmp10*tmp19;
179 out[37][1]=-70.0*tmp11*tmp20;
181 out[38][1]=-210.0*tmp11*tmp18;
183 out[39][1]=-490.0*tmp11*tmp19;
193 std::vector<typename Traits::JacobianType>& out)
const 205 R sign0, sign1, sign2, sign3;
209 #endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS3_CUBE2D_LOCALBASIS_HH void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
Evaluate Jacobian of all shape functions.
Definition: raviartthomas3cube2dlocalbasis.hh:192
Second order Raviart-Thomas shape functions on the reference quadrilateral.
Definition: raviartthomas3cube2dlocalbasis.hh:24
Type traits for LocalBasisVirtualInterface.
Definition: localbasis.hh:37
unsigned int order() const
Polynomial order of the shape functions.
Definition: raviartthomas3cube2dlocalbasis.hh:199
unsigned int size() const
number of shape functions
Definition: raviartthomas3cube2dlocalbasis.hh:64
void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
Evaluate all shape functions.
Definition: raviartthomas3cube2dlocalbasis.hh:75
Definition: brezzidouglasmarini1cube2dlocalbasis.hh:14
RT3Cube2DLocalBasis(unsigned int s)
Make set number s, where 0 <= s < 16.
Definition: raviartthomas3cube2dlocalbasis.hh:42
LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 2, Dune::FieldVector< R, 2 >, Dune::FieldMatrix< R, 2, 2 > > Traits
Definition: raviartthomas3cube2dlocalbasis.hh:29
RT3Cube2DLocalBasis()
Standard constructor.
Definition: raviartthomas3cube2dlocalbasis.hh:32
D DomainType
domain type
Definition: localbasis.hh:49