dune-localfunctions
2.2.0
|
00001 #ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1Q3DLOCALBASIS_HH 00002 #define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1Q3DLOCALBASIS_HH 00003 00004 #include <vector> 00005 00006 #include <dune/common/fmatrix.hh> 00007 00008 #include "../../common/localbasis.hh" 00009 00010 namespace Dune 00011 { 00021 template<class D, class R> 00022 class RT1Q3DLocalBasis 00023 { 00024 00025 public: 00026 typedef LocalBasisTraits<D,3,Dune::FieldVector<D,3>,R,3,Dune::FieldVector<R,3>, 00027 Dune::FieldMatrix<R,3,3> > Traits; 00028 00030 RT1Q3DLocalBasis () 00031 { 00032 sign0 = sign1 = sign2 = sign3 = sign4 = sign5 = 1.0; 00033 } 00034 00040 RT1Q3DLocalBasis (unsigned int s) 00041 { 00042 sign0 = sign1 = sign2 = sign3 = sign4 = sign5 = 1.0; 00043 if (s & 1) 00044 { 00045 sign0 = -1.0; 00046 } 00047 if (s & 2) 00048 { 00049 sign1 = -1.0; 00050 } 00051 if (s & 4) 00052 { 00053 sign2 = -1.0; 00054 } 00055 if (s & 8) 00056 { 00057 sign3 = -1.0; 00058 } 00059 if (s & 16) 00060 { 00061 sign4 = -1.0; 00062 } 00063 if (s & 32) 00064 { 00065 sign5 = -1.0; 00066 } 00067 } 00068 00070 unsigned int size () const 00071 { 00072 return 36; 00073 } 00074 00081 inline void evaluateFunction (const typename Traits::DomainType& in, 00082 std::vector<typename Traits::RangeType>& out) const 00083 { 00084 out.resize(36); 00085 00086 out[0][0] = sign0*(-3.0*in[0]*in[0] + 4.0*in[0] - 1.0); 00087 out[0][1] = 0.0; 00088 out[0][2] = 0.0; 00089 00090 out[1][0] = sign1*(-2.0*in[0] + 3.0*in[0]*in[0]); 00091 out[1][1] = 0.0; 00092 out[1][2] = 0.0; 00093 00094 out[2][0] = 0.0; 00095 out[2][1] = sign2*(-3.0*in[1]*in[1] + 4.0*in[1] - 1.0); 00096 out[2][2] = 0.0; 00097 00098 out[3][0] = 0.0; 00099 out[3][1] = sign3*(3.0*in[1]*in[1] - 2.0*in[1]); 00100 out[3][2] = 0.0; 00101 00102 out[4][0] = 0.0; 00103 out[4][1] = 0.0; 00104 out[4][2] = sign4*(-3.0*in[2]*in[2] + 4.0*in[2] - 1.0); 00105 00106 out[5][0] = 0.0; 00107 out[5][1] = 0.0; 00108 out[5][2] = sign5*(3.0*in[2]*in[2] - 2.0*in[2]); 00109 00110 out[6][0] = -18.0*in[0]*in[0]*in[1] + 9.0*in[0]*in[0] + 24.0*in[0]*in[1] - 6.0*in[1] -12.0*in[0] + 3.0; 00111 out[6][1] = 0.0; 00112 out[6][2] = 0.0; 00113 00114 out[7][0] = -18.0*in[0]*in[0]*in[1] + 9.0*in[0]*in[0] + 12.0*in[0]*in[1] - 6.0*in[0]; 00115 out[7][1] = 0.0; 00116 out[7][2] = 0.0; 00117 00118 out[8][0] = 0.0; 00119 out[8][1] = 18.0*in[0]*in[1]*in[1] - 9.0*in[1]*in[1] - 24.0*in[0]*in[1] + 12.0*in[1] + 6.0*in[0] - 3.0; 00120 out[8][2] = 0.0; 00121 00122 out[9][0] = 0.0; 00123 out[9][1] = 6.0*in[1] - 12.0*in[0]*in[1] - 9.0*in[1]*in[1] + 18.0*in[0]*in[1]*in[1]; 00124 out[9][2] = 0.0; 00125 00126 out[10][0] = 0.0; 00127 out[10][1] = 0.0; 00128 out[10][2] = -3.0 + 6.0*in[0] + 12.0*in[2] - 24.0*in[0]*in[2] - 9.0*in[2]*in[2] + 18.0*in[0]*in[2]*in[2]; 00129 00130 out[11][0] = 0.0; 00131 out[11][1] = 0.0; 00132 out[11][2] = 6.0*in[2] - 12.0*in[0]*in[2] - 9.0*in[2]*in[2] + 18.0*in[0]*in[2]*in[2]; 00133 00134 out[12][0] = 3.0 - 12.0*in[0] - 6.0*in[2] + 24.0*in[0]*in[2] + 9.0*in[0]*in[0] - 18.0*in[0]*in[0]*in[2]; 00135 out[12][1] = 0.0; 00136 out[12][2] = 0.0; 00137 00138 out[13][0] = -6.0*in[0] + 12.0*in[0]*in[2] + 9.0*in[0]*in[0] - 18.0*in[0]*in[0]*in[2]; 00139 out[13][1] = 0.0; 00140 out[13][2] = 0.0; 00141 00142 out[14][0] = 0.0; 00143 out[14][1] = 3.0 - 12.0*in[1] - 6.0*in[2] + 24.0*in[1]*in[2] + 9.0*in[1]*in[1] - 18.0*in[1]*in[1]*in[2]; 00144 out[14][2] = 0.0; 00145 00146 out[15][0] = 0.0; 00147 out[15][1] = -6.0*in[1] + 12.0*in[1]*in[2] + 9.0*in[1]*in[1] - 18.0*in[1]*in[1]*in[2]; 00148 out[15][2] = 0.0; 00149 00150 out[16][0] = 0.0; 00151 out[16][1] = 0.0; 00152 out[16][2] = -3.0 + 6.0*in[1] + 12.0*in[2] - 24.0*in[1]*in[2] - 9.0*in[2]*in[2] + 18.0*in[1]*in[2]*in[2]; 00153 00154 out[17][0] = 0.0; 00155 out[17][1] = 0.0; 00156 out[17][2] = 6.0*in[2] - 12.0*in[1]*in[2] - 9.0*in[2]*in[2] + 18.0*in[1]*in[2]*in[2]; 00157 00158 out[18][0] = -9.0 + 36.0*in[0] + 18.0*in[1] + 18.0*in[2] - 72.0*in[0]*in[1] - 72.0*in[0]*in[2] - 36.0*in[1]*in[2] + 144.0*in[0]*in[1]*in[2] - 27.0*in[0]*in[0] + 54.0*in[0]*in[0]*in[1] + 54.0*in[0]*in[0]*in[2] - 108.0*in[0]*in[0]*in[1]*in[2]; 00159 out[18][1] = 0.0; 00160 out[18][2] = 0.0; 00161 00162 out[19][0] = 18.0*in[0] - 36.0*in[0]*in[1] - 36.0*in[0]*in[2] + 72.0*in[0]*in[1]*in[2] - 27.0*in[0]*in[0] + 54.0*in[0]*in[0]*in[1] + 54.0*in[0]*in[0]*in[2] - 108.0*in[0]*in[0]*in[1]*in[2]; 00163 out[19][1] = 0.0; 00164 out[19][2] = 0.0; 00165 00166 out[20][0] = 0.0; 00167 out[20][1] = 9.0 - 18.0*in[0] - 36.0*in[1] - 18.0*in[2] + 72.0*in[0]*in[1] + 36.0*in[0]*in[2] + 72.0*in[1]*in[2] - 144.0*in[0]*in[1]*in[2] + 27.0*in[1]*in[1] - 54.0*in[1]*in[1]*in[0] - 54.0*in[1]*in[1]*in[2] + 108.0*in[0]*in[1]*in[1]*in[2]; 00168 out[20][2] = 0.0; 00169 00170 out[21][0] = 0.0; 00171 out[21][1] = -18.0*in[1] + 36.0*in[0]*in[1] + 36.0*in[1]*in[2] - 72.0*in[0]*in[1]*in[2] + 27.0*in[1]*in[1] - 54.0*in[0]*in[1]*in[1] - 54.0*in[1]*in[1]*in[2] + 108.0*in[0]*in[1]*in[1]*in[2]; 00172 out[21][2] = 0.0; 00173 00174 out[22][0] = 0.0; 00175 out[22][1] = 0.0; 00176 out[22][2] = 9.0 - 18.0*in[0] - 18.0*in[1] - 36.0*in[2] + 36.0*in[0]*in[1] + 72.0*in[0]*in[2] + 72.0*in[1]*in[2] - 144.0*in[0]*in[1]*in[2] + 27.0*in[2]*in[2] - 54.0*in[0]*in[2]*in[2] - 54.0*in[1]*in[2]*in[2] + 108.0*in[0]*in[1]*in[2]*in[2]; 00177 00178 out[23][0] = 0.0; 00179 out[23][1] = 0.0; 00180 out[23][2] = -18.0*in[2] + 36.0*in[0]*in[2] + 36.0*in[1]*in[2] - 72.0*in[0]*in[1]*in[2] + 27.0*in[2]*in[2] - 54.0*in[0]*in[2]*in[2] - 54.0*in[1]*in[2]*in[2] + 108.0*in[0]*in[1]*in[2]*in[2]; 00181 00182 out[24][0] = 96.0*in[0] - 144.0*in[0]*in[1] - 144.0*in[0]*in[2] + 216.0*in[0]*in[1]*in[2] - 96.0*in[0]*in[0] + 144.0*in[0]*in[0]*in[1] + 144.0*in[0]*in[0]*in[2] - 216.0*in[0]*in[0]*in[1]*in[2]; 00183 out[24][1] = 0.0; 00184 out[24][2] = 0.0; 00185 00186 out[25][0] = 0.0; 00187 out[25][1] = 96.0*in[1] - 144.0*in[0]*in[1] - 144.0*in[1]*in[2] + 216.0*in[0]*in[1]*in[2] - 96.0*in[1]*in[1] + 144.0*in[0]*in[1]*in[1] + 144.0*in[1]*in[1]*in[2] - 216.0*in[0]*in[1]*in[1]*in[2]; 00188 out[25][2] = 0.0; 00189 00190 out[26][0] = 0.0; 00191 out[26][1] = 0.0; 00192 out[26][2] = 96.0*in[2] - 144.0*in[0]*in[2] - 144.0*in[1]*in[2] + 216.0*in[0]*in[1]*in[2] - 96.0*in[2]*in[2] + 144.0*in[0]*in[2]*in[2] + 144.0*in[1]*in[2]*in[2] - 216.0*in[0]*in[1]*in[2]*in[2]; 00193 00194 out[27][0] = -144.0*in[0] + 288.0*in[0]*in[1] + 216.0*in[0]*in[2] - 432.0*in[0]*in[1]*in[2] + 144.0*in[0]*in[0] - 288.0*in[0]*in[0]*in[1] - 216.0*in[0]*in[0]*in[2] + 432.0*in[0]*in[0]*in[1]*in[2]; 00195 out[27][1] = 0.0; 00196 out[27][2] = 0.0; 00197 00198 out[28][0] = -144.0*in[0] + 216.0*in[0]*in[1] + 288.0*in[0]*in[2] - 432.0*in[0]*in[1]*in[2] + 144.0*in[0]*in[0] - 216.0*in[0]*in[0]*in[1] - 288.0*in[0]*in[0]*in[2] + 432.0*in[0]*in[0]*in[1]*in[2]; 00199 out[28][1] = 0.0; 00200 out[28][2] = 0.0; 00201 00202 out[29][0] = 0.0; 00203 out[29][1] = -144.0*in[1] + 288.0*in[0]*in[1] + 216.0*in[1]*in[2] - 432.0*in[0]*in[1]*in[2] + 144.0*in[1]*in[1] - 288.0*in[0]*in[1]*in[1] - 216.0*in[1]*in[1]*in[2] + 432.0*in[0]*in[1]*in[1]*in[2]; 00204 out[29][2] = 0.0; 00205 00206 out[30][0] = 0.0; 00207 out[30][1] = -144.0*in[1] + 216.0*in[0]*in[1] + 288.0*in[1]*in[2] - 432.0*in[0]*in[1]*in[2] + 144.0*in[1]*in[1] - 216.0*in[0]*in[1]*in[1] - 288.0*in[1]*in[1]*in[2] + 432.0*in[0]*in[1]*in[1]*in[2]; 00208 out[30][2] = 0.0; 00209 00210 out[31][0] = 0.0; 00211 out[31][1] = 0.0; 00212 out[31][2] =-144.0*in[2] + 288.0*in[0]*in[2] + 216.0*in[1]*in[2] - 432.0*in[0]*in[1]*in[2] + 144.0*in[2]*in[2] - 288.0*in[0]*in[2]*in[2] - 216.0*in[1]*in[2]*in[2] + 432.0*in[0]*in[1]*in[2]*in[2]; 00213 00214 out[32][0] = 0.0; 00215 out[32][1] = 0.0; 00216 out[32][2] = -144.0*in[2] + 216.0*in[0]*in[2] + 288.0*in[1]*in[2] - 432.0*in[0]*in[1]*in[2] + 144.0*in[2]*in[2] - 216.0*in[0]*in[2]*in[2] - 288.0*in[1]*in[2]*in[2] + 432.0*in[0]*in[1]*in[2]*in[2]; 00217 00218 out[33][0] = 216.0*in[0] - 432.0*in[0]*in[1] - 432.0*in[0]*in[2] + 864.0*in[0]*in[1]*in[2] - 216.0*in[0]*in[0] + 432.0*in[0]*in[0]*in[1] + 432.0*in[0]*in[0]*in[2] - 864.0*in[0]*in[0]*in[1]*in[2]; 00219 out[33][1] = 0.0; 00220 out[33][2] = 0.0; 00221 00222 out[34][0] = 0.0; 00223 out[34][1] = 216.0*in[1] - 432.0*in[0]*in[1] - 432.0*in[1]*in[2] + 864.0*in[0]*in[1]*in[2] - 216.0*in[1]*in[1] + 432.0*in[0]*in[1]*in[1] + 432.0*in[1]*in[1]*in[2] - 864.0*in[0]*in[1]*in[1]*in[2]; 00224 out[34][2] = 0.0; 00225 00226 out[35][0] = 0.0; 00227 out[35][1] = 0.0; 00228 out[35][2] = 216.0*in[2] - 432.0*in[0]*in[2] - 432.0*in[1]*in[2] + 864.0*in[0]*in[1]*in[2] - 216.0*in[2]*in[2] + 432.0*in[0]*in[2]*in[2] + 432.0*in[1]*in[2]*in[2] - 864.0*in[0]*in[1]*in[2]*in[2]; 00229 } 00230 00237 inline void evaluateJacobian (const typename Traits::DomainType& in, 00238 std::vector<typename Traits::JacobianType>& out) const 00239 { 00240 out.resize(36); 00241 00242 out[0][0][0] = sign0*(-6.0*in[0] + 4); 00243 out[0][0][1] = 0; 00244 out[0][0][2] = 0; 00245 out[0][1][0] = 0; 00246 out[0][1][1] = 0; 00247 out[0][1][2] = 0; 00248 out[0][2][0] = 0; 00249 out[0][2][1] = 0; 00250 out[0][2][2] = 0; 00251 00252 out[1][0][0] = sign1*(-2 + 6.0*in[0]); 00253 out[1][0][1] = 0; 00254 out[1][0][2] = 0; 00255 out[1][1][0] = 0; 00256 out[1][1][1] = 0; 00257 out[1][1][2] = 0; 00258 out[1][2][0] = 0; 00259 out[1][2][1] = 0; 00260 out[1][2][2] = 0; 00261 00262 out[2][0][0] = 0; 00263 out[2][0][1] = 0; 00264 out[2][0][2] = 0; 00265 out[2][1][0] = 0; 00266 out[2][1][1] = sign2*(-6.0*in[1] + 4); 00267 out[2][1][2] = 0; 00268 out[2][2][0] = 0; 00269 out[2][2][1] = 0; 00270 out[2][2][2] = 0; 00271 00272 out[3][0][0] = 0; 00273 out[3][0][1] = 0; 00274 out[3][0][2] = 0; 00275 out[3][1][0] = 0; 00276 out[3][1][1] = sign3*(6.0*in[1] - 2); 00277 out[3][1][2] = 0; 00278 out[3][2][0] = 0; 00279 out[3][2][1] = 0; 00280 out[3][2][2] = 0; 00281 00282 out[4][0][0] = 0; 00283 out[4][0][1] = 0; 00284 out[4][0][2] = 0; 00285 out[4][1][0] = 0; 00286 out[4][1][1] = 0; 00287 out[4][1][2] = 0; 00288 out[4][2][0] = 0; 00289 out[4][2][1] = 0; 00290 out[4][2][2] = sign4*(-6.0*in[2] + 4); 00291 00292 out[5][0][0] = 0; 00293 out[5][0][1] = 0; 00294 out[5][0][2] = 0; 00295 out[5][1][0] = 0; 00296 out[5][1][1] = 0; 00297 out[5][1][2] = 0; 00298 out[5][2][0] = 0; 00299 out[5][2][1] = 0; 00300 out[5][2][2] = sign5*(6.0*in[2] - 2); 00301 00302 out[6][0][0] = -36.0*in[0]*in[1] + 18.0*in[0] + 24.0*in[1] - 12.0; 00303 out[6][0][1] = -18.0*in[0]*in[0] + 24.0*in[0] - 6; 00304 out[6][0][2] = 0.0; 00305 out[6][1][0] = 0.0; 00306 out[6][1][1] = 0.0; 00307 out[6][1][2] = 0.0; 00308 out[6][2][0] = 0.0; 00309 out[6][2][1] = 0.0; 00310 out[6][2][2] = 0.0; 00311 00312 out[7][0][0] = -36.0*in[0]*in[1] + 18.0*in[0] + 12.0*in[1] - 6.0; 00313 out[7][0][1] = -18.0*in[0]*in[0] + 12.0*in[0]; 00314 out[7][0][2] = 0.0; 00315 out[7][1][0] = 0.0; 00316 out[7][1][1] = 0.0; 00317 out[7][1][2] = 0.0; 00318 out[7][2][0] = 0.0; 00319 out[7][2][1] = 0.0; 00320 out[7][2][2] = 0.0; 00321 00322 out[8][0][0] = 0.0; 00323 out[8][0][1] = 0.0; 00324 out[8][0][2] = 0.0; 00325 out[8][1][0] = 18.0*in[1]*in[1] - 24.0*in[1] + 6.0; 00326 out[8][1][1] = 36.0*in[0]*in[1] - 18.0*in[1] - 24.0*in[0] + 12.0; 00327 out[8][1][2] = 0.0; 00328 out[8][2][0] = 0.0; 00329 out[8][2][1] = 0.0; 00330 out[8][2][2] = 0.0; 00331 00332 out[9][0][0] = 0.0; 00333 out[9][0][1] = 0.0; 00334 out[9][0][2] = 0.0; 00335 out[9][1][0] = -12.0*in[1] + 18.0*in[1]*in[1]; 00336 out[9][1][1] = 6.0 - 12.0*in[0] - 18.0*in[1] + 36.0*in[0]*in[1];; 00337 out[9][1][2] = 0.0; 00338 out[9][2][0] = 0.0; 00339 out[9][2][1] = 0.0; 00340 out[9][2][2] = 0.0; 00341 00342 out[10][0][0] = 0.0; 00343 out[10][0][1] = 0.0; 00344 out[10][0][2] = 0.0; 00345 out[10][1][0] = 0.0; 00346 out[10][1][1] = 0.0; 00347 out[10][1][2] = 0.0; 00348 out[10][2][0] = 6.0 - 24.0*in[2] + 18.0*in[2]*in[2]; 00349 out[10][2][1] = 0.0; 00350 out[10][2][2] = 12.0 - 24.0*in[0] - 18.0*in[2] + 36.0*in[0]*in[2]; 00351 00352 out[11][0][0] = 0.0; 00353 out[11][0][1] = 0.0; 00354 out[11][0][2] = 0.0; 00355 out[11][1][0] = 0.0; 00356 out[11][1][1] = 0.0; 00357 out[11][1][2] = 0.0; 00358 out[11][2][0] = -12.0*in[2] + 18.0*in[2]*in[2]; 00359 out[11][2][1] = 0.0; 00360 out[11][2][2] = 6.0 - 12.0*in[0] - 18.0*in[2] + 36.0*in[0]*in[2]; 00361 00362 out[12][0][0] = -12.0 + 24.0*in[2] + 18.0*in[0] - 36.0*in[0]*in[2]; 00363 out[12][0][1] = 0.0; 00364 out[12][0][2] = -6.0 + 24.0*in[0] - 18.0*in[0]*in[0]; 00365 out[12][1][0] = 0.0; 00366 out[12][1][1] = 0.0; 00367 out[12][1][2] = 0.0; 00368 out[12][2][0] = 0.0; 00369 out[12][2][1] = 0.0; 00370 out[12][2][2] = 0.0; 00371 00372 out[13][0][0] = -6.0 + 12.0*in[2] + 18.0*in[0] - 36.0*in[0]*in[2]; 00373 out[13][0][1] = 0.0; 00374 out[13][0][2] = 12.0*in[0] - 18.0*in[0]*in[0]; 00375 out[13][1][0] = 0.0; 00376 out[13][1][1] = 0.0; 00377 out[13][1][2] = 0.0; 00378 out[13][2][0] = 0.0; 00379 out[13][2][1] = 0.0; 00380 out[13][2][2] = 0.0; 00381 00382 out[14][0][0] = 0.0; 00383 out[14][0][1] = 0.0; 00384 out[14][0][2] = 0.0; 00385 out[14][1][0] = 0.0; 00386 out[14][1][1] = -12.0 + 24.0*in[2] + 18.0*in[1] - 36.0*in[1]*in[2]; 00387 out[14][1][2] = -6.0 + 24.0*in[1] - 18.0*in[1]*in[1]; 00388 out[14][2][0] = 0.0; 00389 out[14][2][1] = 0.0; 00390 out[14][2][2] = 0.0; 00391 00392 out[15][0][0] = 0.0; 00393 out[15][0][1] = 0.0; 00394 out[15][0][2] = 0.0; 00395 out[15][1][0] = 0.0; 00396 out[15][1][1] = -6.0 + 12.0*in[2] + 18.0*in[1] - 36.0*in[1]*in[2]; 00397 out[15][1][2] = 12.0*in[1] - 18.0*in[1]*in[1]; 00398 out[15][2][0] = 0.0; 00399 out[15][2][1] = 0.0; 00400 out[15][2][2] = 0.0; 00401 00402 out[16][0][0] = 0.0; 00403 out[16][0][1] = 0.0; 00404 out[16][0][2] = 0.0; 00405 out[16][1][0] = 0.0; 00406 out[16][1][1] = 0.0; 00407 out[16][1][2] = 0.0; 00408 out[16][2][0] = 0.0; 00409 out[16][2][1] = 6.0 - 24.0*in[2] + 18.0*in[2]*in[2]; 00410 out[16][2][2] = 12.0 - 24.0*in[1] - 18.0*in[2] + 36.0*in[1]*in[2]; 00411 00412 out[17][0][0] = 0.0; 00413 out[17][0][1] = 0.0; 00414 out[17][0][2] = 0.0; 00415 out[17][1][0] = 0.0; 00416 out[17][1][1] = 0.0; 00417 out[17][1][2] = 0.0; 00418 out[17][2][0] = 0.0; 00419 out[17][2][1] = -12.0*in[2] + 18.0*in[2]*in[2]; 00420 out[17][2][2] = 6.0 - 12.0*in[1] - 18.0*in[2] + 36.0*in[1]*in[2]; 00421 00422 out[18][0][0] = 36.0 - 72.0*in[1] - 72.0*in[2] + 144.0*in[1]*in[2] - 54.0*in[0] + 108.0*in[0]*in[1] + 108.0*in[0]*in[2] - 216.0*in[0]*in[1]*in[2]; 00423 out[18][0][1] = 18.0 - 72.0*in[0] - 36.0*in[2] + 144.0*in[0]*in[2] + 54.0*in[0]*in[0] - 108.0*in[0]*in[0]*in[2]; 00424 out[18][0][2] = 18.0 - 72.0*in[0] - 36.0*in[1] + 144.0*in[0]*in[1] + 54.0*in[0]*in[0] - 108.0*in[0]*in[0]*in[1]; 00425 out[18][1][0] = 0.0; 00426 out[18][1][1] = 0.0; 00427 out[18][1][2] = 0.0; 00428 out[18][2][0] = 0.0; 00429 out[18][2][1] = 0.0; 00430 out[18][2][2] = 0.0; 00431 00432 out[19][0][0] = 18 - 36.0*in[1] - 36.0*in[2] + 72.0*in[1]*in[2] - 54.0*in[0] + 108.0*in[0]*in[1] + 108.0*in[0]*in[2] - 216.0*in[0]*in[1]*in[2]; 00433 out[19][0][1] = -36.0*in[0] + 72.0*in[0]*in[2] + 54.0*in[0]*in[0] - 108.0*in[0]*in[0]*in[2]; 00434 out[19][0][2] = -36.0*in[0] + 72.0*in[0]*in[1] + 54.0*in[0]*in[0] - 108.0*in[0]*in[0]*in[1]; 00435 out[19][1][0] = 0.0; 00436 out[19][1][1] = 0.0; 00437 out[19][1][2] = 0.0; 00438 out[19][2][0] = 0.0; 00439 out[19][2][1] = 0.0; 00440 out[19][2][2] = 0.0; 00441 00442 out[20][0][0] = 0.0; 00443 out[20][0][1] = 0.0; 00444 out[20][0][2] = 0.0; 00445 out[20][1][0] = -18.0 + 72.0*in[1] + 36.0*in[2] - 144.0*in[1]*in[2] - 54.0*in[1]*in[1] + 108.0*in[1]*in[1]*in[2]; 00446 out[20][1][1] = -36.0 + 72.0*in[0] + 72.0*in[2] - 144.0*in[0]*in[2] + 54.0*in[1] - 108.0*in[1]*in[0] - 108.0*in[1]*in[2] + 216.0*in[0]*in[1]*in[2]; 00447 out[20][1][2] = -18.0 + 36.0*in[0] + 72.0*in[1] - 144.0*in[0]*in[1] - 54.0*in[1]*in[1] + 108.0*in[0]*in[1]*in[1]; 00448 out[20][2][0] = 0.0; 00449 out[20][2][1] = 0.0; 00450 out[20][2][2] = 0.0; 00451 00452 out[21][0][0] = 0.0; 00453 out[21][0][1] = 0.0; 00454 out[21][0][2] = 0.0; 00455 out[21][1][0] = 36.0*in[1] - 72.0*in[1]*in[2] - 54.0*in[1]*in[1] + 108.0*in[1]*in[1]*in[2]; 00456 out[21][1][1] = -18.0 + 36.0*in[0] + 36.0*in[2] - 72.0*in[0]*in[2] + 54.0*in[1] - 108.0*in[0]*in[1] - 108.0*in[1]*in[2] + 216.0*in[0]*in[1]*in[2]; 00457 out[21][1][2] = 36.0*in[1] - 72.0*in[0]*in[1] - 54.0*in[1]*in[1] + 108.0*in[0]*in[1]*in[1]; 00458 out[21][2][0] = 0.0; 00459 out[21][2][1] = 0.0; 00460 out[21][2][2] = 0.0; 00461 00462 out[22][0][0] = 0.0; 00463 out[22][0][1] = 0.0; 00464 out[22][0][2] = 0.0; 00465 out[22][1][0] = 0.0; 00466 out[22][1][1] = 0.0; 00467 out[22][1][2] = 0.0; 00468 out[22][2][0] = -18.0 + 36.0*in[1] + 72.0*in[2] - 144.0*in[1]*in[2] - 54.0*in[2]*in[2] + 108.0*in[1]*in[2]*in[2]; 00469 out[22][2][1] = -18.0 + 36.0*in[0] + 72.0*in[2] - 144.0*in[0]*in[2] - 54.0*in[2]*in[2] + 108.0*in[0]*in[2]*in[2]; 00470 out[22][2][2] = -36.0 + 72.0*in[0] + 72.0*in[1] - 144.0*in[0]*in[1] + 54.0*in[2] - 108.0*in[0]*in[2] - 108.0*in[1]*in[2] + 216.0*in[0]*in[1]*in[2]; 00471 00472 out[23][0][0] = 0.0; 00473 out[23][0][1] = 0.0; 00474 out[23][0][2] = 0.0; 00475 out[23][1][0] = 0.0; 00476 out[23][1][1] = 0.0; 00477 out[23][1][2] = 0.0; 00478 out[23][2][0] = 36.0*in[2] - 72.0*in[1]*in[2] - 54.0*in[2]*in[2] + 108.0*in[1]*in[2]*in[2]; 00479 out[23][2][1] = 36.0*in[2] - 72.0*in[0]*in[2] - 54.0*in[2]*in[2] + 108.0*in[0]*in[2]*in[2]; 00480 out[23][2][2] = -18.0 + 36.0*in[0] + 36.0*in[1] - 72.0*in[0]*in[1] + 54.0*in[2] - 108.0*in[0]*in[2] - 108.0*in[1]*in[2] + 216.0*in[0]*in[1]*in[2]; 00481 00482 out[24][0][0] = 96.0 - 144.0*in[1] - 144.0*in[2] + 216.0*in[1]*in[2] - 192.0*in[0] + 288.0*in[0]*in[1] + 288.0*in[0]*in[2] - 432.0*in[0]*in[1]*in[2]; 00483 out[24][0][1] = -144.0*in[0] + 216.0*in[0]*in[2] + 144.0*in[0]*in[0] - 216.0*in[0]*in[0]*in[2]; 00484 out[24][0][2] = -144.0*in[0] + 216.0*in[0]*in[1] + 144.0*in[0]*in[0] - 216.0*in[0]*in[0]*in[1]; 00485 out[24][1][0] = 0.0; 00486 out[24][1][1] = 0.0; 00487 out[24][1][2] = 0.0; 00488 out[24][2][0] = 0.0; 00489 out[24][2][1] = 0.0; 00490 out[24][2][2] = 0.0; 00491 00492 out[25][0][0] = 0.0; 00493 out[25][0][1] = 0.0; 00494 out[25][0][2] = 0.0; 00495 out[25][1][0] = -144.0*in[1] + 216.0*in[1]*in[2] + 144.0*in[1]*in[1] - 216.0*in[1]*in[1]*in[2]; 00496 out[25][1][1] = 96.0 - 144.0*in[0] - 144.0*in[2] + 216.0*in[0]*in[2] - 192.0*in[1] + 288.0*in[0]*in[1] + 288.0*in[1]*in[2] - 432.0*in[0]*in[1]*in[2]; 00497 out[25][1][2] = -144.0*in[1] + 216.0*in[0]*in[1] + 144.0*in[1]*in[1] - 216.0*in[0]*in[1]*in[1]; 00498 out[25][2][0] = 0.0; 00499 out[25][2][1] = 0.0; 00500 out[25][2][2] = 0.0; 00501 00502 out[26][0][0] = 0.0; 00503 out[26][0][1] = 0.0; 00504 out[26][0][2] = 0.0; 00505 out[26][1][0] = 0.0; 00506 out[26][1][1] = 0.0; 00507 out[26][1][2] = 0.0; 00508 out[26][2][0] = -144.0*in[2] + 216.0*in[1]*in[2] + 144.0*in[2]*in[2] - 216.0*in[1]*in[2]*in[2]; 00509 out[26][2][1] = -144.0*in[2] + 216.0*in[0]*in[2] + 144.0*in[2]*in[2] - 216.0*in[0]*in[2]*in[2]; 00510 out[26][2][2] = 96.0 - 144.0*in[0] - 144.0*in[1] + 216.0*in[0]*in[1] - 192.0*in[2] + 288.0*in[0]*in[2] + 288.0*in[1]*in[2] - 432.0*in[0]*in[1]*in[2]; 00511 00512 out[27][0][0] = -144.0 + 288.0*in[1] + 216.0*in[2] - 432.0*in[1]*in[2] + 288.0*in[0] - 576.0*in[0]*in[1] - 432.0*in[0]*in[2] + 864.0*in[0]*in[1]*in[2]; 00513 out[27][0][1] = 288.0*in[0] - 432.0*in[0]*in[2] - 288.0*in[0]*in[0] + 432.0*in[0]*in[0]*in[2]; 00514 out[27][0][2] = 216.0*in[0] - 432.0*in[0]*in[1] - 216.0*in[0]*in[0] + 432.0*in[0]*in[0]*in[1]; 00515 out[27][1][0] = 0.0; 00516 out[27][1][1] = 0.0; 00517 out[27][1][2] = 0.0; 00518 out[27][2][0] = 0.0; 00519 out[27][2][1] = 0.0; 00520 out[27][2][2] = 0.0; 00521 00522 out[28][0][0] = -144.0 + 216.0*in[1] + 288.0*in[2] - 432.0*in[1]*in[2] + 288.0*in[0] - 432.0*in[0]*in[1] - 576.0*in[0]*in[2] + 864.0*in[0]*in[1]*in[2]; 00523 out[28][0][1] = 216.0*in[0] - 432.0*in[0]*in[2] - 216.0*in[0]*in[0] + 432.0*in[0]*in[0]*in[2]; 00524 out[28][0][2] = 288.0*in[0] - 432.0*in[0]*in[1] - 288.0*in[0]*in[0] + 432.0*in[0]*in[0]*in[1]; 00525 out[28][1][0] = 0.0; 00526 out[28][1][1] = 0.0; 00527 out[28][1][2] = 0.0; 00528 out[28][2][0] = 0.0; 00529 out[28][2][1] = 0.0; 00530 out[28][2][2] = 0.0; 00531 00532 out[29][0][0] = 0.0; 00533 out[29][0][1] = 0.0; 00534 out[29][0][2] = 0.0; 00535 out[29][1][0] = 288.0*in[1] - 432.0*in[1]*in[2] - 288.0*in[1]*in[1] + 432.0*in[1]*in[1]*in[2]; 00536 out[29][1][1] = -144.0 + 288.0*in[0] + 216.0*in[2] - 432.0*in[0]*in[2] + 288.0*in[1] - 576.0*in[0]*in[1] - 432.0*in[1]*in[2] + 864.0*in[0]*in[1]*in[2]; 00537 out[29][1][2] = 216.0*in[1] - 432.0*in[0]*in[1] - 216.0*in[1]*in[1] + 432.0*in[0]*in[1]*in[1]; 00538 out[29][2][0] = 0.0; 00539 out[29][2][1] = 0.0; 00540 out[29][2][2] = 0.0; 00541 00542 out[30][0][0] = 0.0; 00543 out[30][0][1] = 0.0; 00544 out[30][0][2] = 0.0; 00545 out[30][1][0] = 216.0*in[1] - 432.0*in[1]*in[2] - 216.0*in[1]*in[1] + 432.0*in[1]*in[1]*in[2]; 00546 out[30][1][1] = -144.0 + 216.0*in[0] + 288.0*in[2] - 432.0*in[0]*in[2] + 288.0*in[1] - 432.0*in[0]*in[1] - 576.0*in[1]*in[2] + 864.0*in[0]*in[1]*in[2]; 00547 out[30][1][2] = 288.0*in[1] - 432.0*in[0]*in[1] - 288.0*in[1]*in[1] + 432.0*in[0]*in[1]*in[1]; 00548 out[30][2][0] = 0.0; 00549 out[30][2][1] = 0.0; 00550 out[30][2][2] = 0.0; 00551 00552 out[31][0][0] = 0.0; 00553 out[31][0][1] = 0.0; 00554 out[31][0][2] = 0.0; 00555 out[31][1][0] = 0.0; 00556 out[31][1][1] = 0.0; 00557 out[31][1][2] = 0.0; 00558 out[31][2][0] = 288.0*in[2] - 432.0*in[1]*in[2] - 288.0*in[2]*in[2] + 432.0*in[1]*in[2]*in[2]; 00559 out[31][2][1] = 216.0*in[2] - 432.0*in[0]*in[2] - 216.0*in[2]*in[2] + 432.0*in[0]*in[2]*in[2]; 00560 out[31][2][2] = -144.0 + 288.0*in[0] + 216.0*in[1] - 432.0*in[0]*in[1] + 288.0*in[2] - 576.0*in[0]*in[2] - 432.0*in[1]*in[2] + 864.0*in[0]*in[1]*in[2]; 00561 00562 out[32][0][0] = 0.0; 00563 out[32][0][1] = 0.0; 00564 out[32][0][2] = 0.0; 00565 out[32][1][0] = 0.0; 00566 out[32][1][1] = 0.0; 00567 out[32][1][2] = 0.0; 00568 out[32][2][0] = 216.0*in[2] - 432.0*in[1]*in[2] - 216.0*in[2]*in[2] + 432.0*in[1]*in[2]*in[2]; 00569 out[32][2][1] = 288.0*in[2] - 432.0*in[0]*in[2] - 288.0*in[2]*in[2] + 432.0*in[0]*in[2]*in[2]; 00570 out[32][2][2] = -144.0 + 216.0*in[0] + 288.0*in[1] - 432.0*in[0]*in[1] + 288.0*in[2] - 432.0*in[0]*in[2] - 576.0*in[1]*in[2] + 864.0*in[0]*in[1]*in[2]; 00571 00572 out[33][0][0] = 216.0 - 432.0*in[1] - 432.0*in[2] + 864.0*in[1]*in[2] - 432.0*in[0] + 864.0*in[0]*in[1] + 864.0*in[0]*in[2] - 1728.0*in[0]*in[1]*in[2]; 00573 out[33][0][1] = -432.0*in[0] + 864.0*in[0]*in[2] + 432.0*in[0]*in[0] - 864.0*in[0]*in[0]*in[2]; 00574 out[33][0][2] = -432.0*in[0] + 864.0*in[0]*in[1] + 432.0*in[0]*in[0] - 864.0*in[0]*in[0]*in[1]; 00575 out[33][1][0] = 0.0; 00576 out[33][1][1] = 0.0; 00577 out[33][1][2] = 0.0; 00578 out[33][2][0] = 0.0; 00579 out[33][2][1] = 0.0; 00580 out[33][2][2] = 0.0; 00581 00582 out[34][0][0] = 0.0; 00583 out[34][0][1] = 0.0; 00584 out[34][0][2] = 0.0; 00585 out[34][1][0] = -432.0*in[1] + 864.0*in[1]*in[2] + 432.0*in[1]*in[1] - 864.0*in[1]*in[1]*in[2]; 00586 out[34][1][1] = 216.0 - 432.0*in[0] - 432.0*in[2] + 864.0*in[0]*in[2] - 432.0*in[1] + 864.0*in[0]*in[1] + 864.0*in[1]*in[2] - 1728.0*in[0]*in[1]*in[2]; 00587 out[34][1][2] = -432.0*in[1] + 864.0*in[0]*in[1] + 432.0*in[1]*in[1] - 864.0*in[0]*in[1]*in[1]; 00588 out[34][2][0] = 0.0; 00589 out[34][2][1] = 0.0; 00590 out[34][2][2] = 0.0; 00591 00592 out[35][0][0] = 0.0; 00593 out[35][0][1] = 0.0; 00594 out[35][0][2] = 0.0; 00595 out[35][1][0] = 0.0; 00596 out[35][1][1] = 0.0; 00597 out[35][1][2] = 0.0; 00598 out[35][2][0] = -432.0*in[2] + 864.0*in[1]*in[2] + 432.0*in[2]*in[2] - 864.0*in[1]*in[2]*in[2]; 00599 out[35][2][1] = -432.0*in[2] + 864.0*in[0]*in[2] + 432.0*in[2]*in[2] - 864.0*in[0]*in[2]*in[2]; 00600 out[35][2][2] = 216.0 - 432.0*in[0] - 432.0*in[1] + 864.0*in[0]*in[1] - 432.0*in[2] + 864.0*in[0]*in[2] + 864.0*in[1]*in[2] - 1728.0*in[0]*in[1]*in[2]; 00601 } 00602 00604 unsigned int order () const 00605 { 00606 return 3; 00607 } 00608 00609 private: 00610 R sign0, sign1, sign2, sign3, sign4, sign5; 00611 }; 00612 } 00613 #endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1Q3DLOCALBASIS_HH