prismp2localbasis.hh
Go to the documentation of this file.00001
00002 #ifndef DUNE_PRISM_P2_LOCALBASIS_HH
00003 #define DUNE_PRISM_P2_LOCALBASIS_HH
00004
00005 #include <dune/common/fmatrix.hh>
00006
00007 #include <dune/localfunctions/common/localbasis.hh>
00008
00009 namespace Dune
00010 {
00021 template<class D, class R>
00022 class PrismP2LocalBasis
00023 {
00024 public:
00026 typedef LocalBasisTraits<D,3,Dune::FieldVector<D,3>,R,1,Dune::FieldVector<R,1>,
00027 Dune::FieldMatrix<R,1,3> > Traits;
00028
00030 unsigned int size () const
00031 {
00032 return 18;
00033 }
00034
00036 inline void evaluateFunction (const typename Traits::DomainType& in,
00037 std::vector<typename Traits::RangeType>& out) const
00038 {
00039 out.resize(18);
00040
00041
00042 int coeff;
00043 R a[2], b[2], c[2], a1d, b1d, c1d;
00044
00045
00046
00047 coeff= 2;
00048 a[0] = 1;
00049 a[1] = 0.5;
00050 b[0] = -1;
00051 b[1] = -1;
00052 c[0] = -1;
00053 c[1] = -1;
00054 a1d = 1;
00055 b1d = -3;
00056 c1d = 2;
00057 out[0] = coeff * (a[0] + b[0]*in[0] + b[1]*in[1]) * (a[1] + c[0]*in[0] + c[1]*in[1])*(a1d + in[2]*b1d + in[2]*in[2]*c1d);
00058
00059
00060 coeff= 2;
00061 a[0] = 0;
00062 a[1] = -0.5;
00063 b[0] = 1;
00064 b[1] = 0;
00065 c[0] = 1;
00066 c[1] = 0;
00067 a1d = 1;
00068 b1d = -3;
00069 c1d = 2;
00070 out[1] = coeff * (a[0] + b[0]*in[0] + b[1]*in[1]) * (a[1] + c[0]*in[0] + c[1]*in[1])*(a1d + in[2]*b1d + in[2]*in[2]*c1d);
00071
00072
00073 coeff= 2;
00074 a[0] = 0;
00075 a[1] = -0.5;
00076 b[0] = 0;
00077 b[1] = 1;
00078 c[0] = 0;
00079 c[1] = 1;
00080 a1d = 1;
00081 b1d = -3;
00082 c1d = 2;
00083 out[2] = coeff * (a[0] + b[0]*in[0] + b[1]*in[1]) * (a[1] + c[0]*in[0] + c[1]*in[1])*(a1d + in[2]*b1d + in[2]*in[2]*c1d);
00084
00085
00086 coeff= 2;
00087 a[0] = 1;
00088 a[1] = 0.5;
00089 b[0] = -1;
00090 b[1] = -1;
00091 c[0] = -1;
00092 c[1] = -1;
00093 a1d = 0;
00094 b1d = -1;
00095 c1d = 2;
00096 out[3] = coeff * (a[0] + b[0]*in[0] + b[1]*in[1]) * (a[1] + c[0]*in[0] + c[1]*in[1])*(a1d + in[2]*b1d + in[2]*in[2]*c1d);
00097
00098
00099 coeff= 2;
00100 a[0] = 0;
00101 a[1] = -0.5;
00102 b[0] = 1;
00103 b[1] = 0;
00104 c[0] = 1;
00105 c[1] = 0;
00106 a1d = 0;
00107 b1d = -1;
00108 c1d = 2;
00109 out[4] = coeff * (a[0] + b[0]*in[0] + b[1]*in[1]) * (a[1] + c[0]*in[0] + c[1]*in[1])*(a1d + in[2]*b1d + in[2]*in[2]*c1d);
00110
00111
00112 coeff= 2;
00113 a[0] = 0;
00114 a[1] = -0.5;
00115 b[0] = 0;
00116 b[1] = 1;
00117 c[0] = 0;
00118 c[1] = 1;
00119 a1d = 0;
00120 b1d = -1;
00121 c1d = 2;
00122 out[5] = coeff * (a[0] + b[0]*in[0] + b[1]*in[1]) * (a[1] + c[0]*in[0] + c[1]*in[1])*(a1d + in[2]*b1d + in[2]*in[2]*c1d);
00123
00124
00125 coeff= 2;
00126 a[0] = 1;
00127 a[1] = 0.5;
00128 b[0] = -1;
00129 b[1] = -1;
00130 c[0] = -1;
00131 c[1] = -1;
00132 a1d = 0;
00133 b1d = 4;
00134 c1d = -4;
00135 out[6] = coeff * (a[0] + b[0]*in[0] + b[1]*in[1]) * (a[1] + c[0]*in[0] + c[1]*in[1])*(a1d + in[2]*b1d + in[2]*in[2]*c1d);
00136
00137
00138 coeff= 2;
00139 a[0] = 0;
00140 a[1] = -0.5;
00141 b[0] = 1;
00142 b[1] = 0;
00143 c[0] = 1;
00144 c[1] = 0;
00145 a1d = 0;
00146 b1d = 4;
00147 c1d = -4;
00148 out[7] = coeff * (a[0] + b[0]*in[0] + b[1]*in[1]) * (a[1] + c[0]*in[0] + c[1]*in[1])*(a1d + in[2]*b1d + in[2]*in[2]*c1d);
00149
00150
00151 coeff= 2;
00152 a[0] = 0;
00153 a[1] = -0.5;
00154 b[0] = 0;
00155 b[1] = 1;
00156 c[0] = 0;
00157 c[1] = 1;
00158 a1d = 0;
00159 b1d = 4;
00160 c1d = -4;
00161 out[8] = coeff * (a[0] + b[0]*in[0] + b[1]*in[1]) * (a[1] + c[0]*in[0] + c[1]*in[1])*(a1d + in[2]*b1d + in[2]*in[2]*c1d);
00162
00163
00164 coeff= 4;
00165 a[0] = 0;
00166 a[1] = 1;
00167 b[0] = 1;
00168 b[1] = 0;
00169 c[0] = -1;
00170 c[1] = -1;
00171 a1d = 1;
00172 b1d = -3;
00173 c1d = 2;
00174 out[9] = coeff * (a[0] + b[0]*in[0] + b[1]*in[1]) * (a[1] + c[0]*in[0] + c[1]*in[1])*(a1d + in[2]*b1d + in[2]*in[2]*c1d);
00175
00176
00177 coeff= 4;
00178 a[0] = 0;
00179 a[1] = 1;
00180 b[0] = 0;
00181 b[1] = 1;
00182 c[0] = -1;
00183 c[1] = -1;
00184 a1d = 1;
00185 b1d = -3;
00186 c1d = 2;
00187 out[10] = coeff * (a[0] + b[0]*in[0] + b[1]*in[1]) * (a[1] + c[0]*in[0] + c[1]*in[1])*(a1d + in[2]*b1d + in[2]*in[2]*c1d);
00188
00189
00190 coeff= 4;
00191 a[0] = 0;
00192 a[1] = 0;
00193 b[0] = 1;
00194 b[1] = 0;
00195 c[0] = 0;
00196 c[1] = 1;
00197 a1d = 1;
00198 b1d = -3;
00199 c1d = 2;
00200 out[11] = coeff * (a[0] + b[0]*in[0] + b[1]*in[1]) * (a[1] + c[0]*in[0] + c[1]*in[1])*(a1d + in[2]*b1d + in[2]*in[2]*c1d);
00201
00202
00203 coeff= 4;
00204 a[0] = 0;
00205 a[1] = 1;
00206 b[0] = 1;
00207 b[1] = 0;
00208 c[0] = -1;
00209 c[1] = -1;
00210 a1d = 0;
00211 b1d = -1;
00212 c1d = 2;
00213 out[12] = coeff * (a[0] + b[0]*in[0] + b[1]*in[1]) * (a[1] + c[0]*in[0] + c[1]*in[1])*(a1d + in[2]*b1d + in[2]*in[2]*c1d);
00214
00215
00216 coeff= 4;
00217 a[0] = 0;
00218 a[1] = 1;
00219 b[0] = 0;
00220 b[1] = 1;
00221 c[0] = -1;
00222 c[1] = -1;
00223 a1d = 0;
00224 b1d = -1;
00225 c1d = 2;
00226 out[13] = coeff * (a[0] + b[0]*in[0] + b[1]*in[1]) * (a[1] + c[0]*in[0] + c[1]*in[1])*(a1d + in[2]*b1d + in[2]*in[2]*c1d);
00227
00228
00229 coeff= 4;
00230 a[0] = 0;
00231 a[1] = 0;
00232 b[0] = 1;
00233 b[1] = 0;
00234 c[0] = 0;
00235 c[1] = 1;
00236 a1d = 0;
00237 b1d = -1;
00238 c1d = 2;
00239 out[14] = coeff * (a[0] + b[0]*in[0] + b[1]*in[1]) * (a[1] + c[0]*in[0] + c[1]*in[1])*(a1d + in[2]*b1d + in[2]*in[2]*c1d);
00240
00241
00242 coeff= 4;
00243 a[0] = 0;
00244 a[1] = 1;
00245 b[0] = 1;
00246 b[1] = 0;
00247 c[0] = -1;
00248 c[1] = -1;
00249 a1d = 0;
00250 b1d = 4;
00251 c1d = -4;
00252 out[15] = coeff * (a[0] + b[0]*in[0] + b[1]*in[1]) * (a[1] + c[0]*in[0] + c[1]*in[1])*(a1d + in[2]*b1d + in[2]*in[2]*c1d);
00253
00254
00255 coeff= 4;
00256 a[0] = 0;
00257 a[1] = 1;
00258 b[0] = 0;
00259 b[1] = 1;
00260 c[0] = -1;
00261 c[1] = -1;
00262 a1d = 0;
00263 b1d = 4;
00264 c1d = -4;
00265 out[16] = coeff * (a[0] + b[0]*in[0] + b[1]*in[1]) * (a[1] + c[0]*in[0] + c[1]*in[1])*(a1d + in[2]*b1d + in[2]*in[2]*c1d);
00266
00267
00268 coeff= 4;
00269 a[0] = 0;
00270 a[1] = 0;
00271 b[0] = 1;
00272 b[1] = 0;
00273 c[0] = 0;
00274 c[1] = 1;
00275 a1d = 0;
00276 b1d = 4;
00277 c1d = -4;
00278 out[17] = coeff * (a[0] + b[0]*in[0] + b[1]*in[1]) * (a[1] + c[0]*in[0] + c[1]*in[1])*(a1d + in[2]*b1d + in[2]*in[2]*c1d);
00279 }
00280
00282 inline void
00283 evaluateJacobian (const typename Traits::DomainType& in,
00284 std::vector<typename Traits::JacobianType>& out) const
00285 {
00286 out.resize(18);
00287
00288
00289
00290 int coeff;
00291 R a[2], b[2], c[2], aa[2], bb[2][2], a1d, b1d, c1d;
00292
00293
00294
00295 coeff= 2;
00296 a[0] = 1;
00297 a[1] = 0.5;
00298 b[0] = -1;
00299 b[1] = -1;
00300 c[0] = -1;
00301 c[1] = -1;
00302 a1d = 1;
00303 b1d = -3;
00304 c1d = 2;
00305 aa[0] = -3;
00306 aa[1] = -3;
00307 bb[0][0] = 4;
00308 bb[0][1] = 4;
00309 bb[1][0] = 4;
00310 bb[1][1] = 4;
00311 out[0][0][0] = (aa[0] + bb[0][0]*in[0] + bb[1][0]*in[1]) * (a1d + in[2]*b1d + in[2]*in[2]*c1d);
00312 out[0][0][1] = (aa[1] + bb[0][1]*in[0] + bb[1][1]*in[1]) * (a1d + in[2]*b1d + in[2]*in[2]*c1d);
00313 out[0][0][2] = coeff * (a[0] + b[0]*in[0] + b[1]*in[1]) * (a[1] + c[0]*in[0] + c[1]*in[1]) * (b1d + 2*c1d*in[2]);
00314
00315
00316
00317 coeff= 2;
00318 a[0] = 0;
00319 a[1] = -0.5;
00320 b[0] = 1;
00321 b[1] = 0;
00322 c[0] = 1;
00323 c[1] = 0;
00324 a1d = 1;
00325 b1d = -3;
00326 c1d = 2;
00327 aa[0] = -1;
00328 aa[1] = 0;
00329 bb[0][0] = 4;
00330 bb[0][1] = 0;
00331 bb[1][0] = 0;
00332 bb[1][1] = 0;
00333 out[1][0][0] = (aa[0] + bb[0][0]*in[0] + bb[1][0]*in[1]) * (a1d + in[2]*b1d + in[2]*in[2]*c1d);
00334 out[1][0][1] = (aa[1] + bb[0][1]*in[0] + bb[1][1]*in[1]) * (a1d + in[2]*b1d + in[2]*in[2]*c1d);
00335 out[1][0][2] = coeff * (a[0] + b[0]*in[0] + b[1]*in[1]) * (a[1] + c[0]*in[0] + c[1]*in[1]) * (b1d + 2*c1d*in[2]);
00336
00337
00338 coeff= 2;
00339 a[0] = 0;
00340 a[1] = -0.5;
00341 b[0] = 0;
00342 b[1] = 1;
00343 c[0] = 0;
00344 c[1] = 1;
00345 a1d = 1;
00346 b1d = -3;
00347 c1d = 2;
00348 aa[0] = 0;
00349 aa[1] = -1;
00350 bb[0][0] = 0;
00351 bb[0][1] = 0;
00352 bb[1][0] = 0;
00353 bb[1][1] = 4;
00354 out[2][0][0] = (aa[0] + bb[0][0]*in[0] + bb[1][0]*in[1]) * (a1d + in[2]*b1d + in[2]*in[2]*c1d);
00355 out[2][0][1] = (aa[1] + bb[0][1]*in[0] + bb[1][1]*in[1]) * (a1d + in[2]*b1d + in[2]*in[2]*c1d);
00356 out[2][0][2] = coeff * (a[0] + b[0]*in[0] + b[1]*in[1]) * (a[1] + c[0]*in[0] + c[1]*in[1]) * (b1d + 2*c1d*in[2]);
00357
00358
00359
00360 coeff= 2;
00361 a[0] = 1;
00362 a[1] = 0.5;
00363 b[0] = -1;
00364 b[1] = -1;
00365 c[0] = -1;
00366 c[1] = -1;
00367 a1d = 0;
00368 b1d = -1;
00369 c1d = 2;
00370 aa[0] = -3;
00371 aa[1] = -3;
00372 bb[0][0] = 4;
00373 bb[0][1] = 4;
00374 bb[1][0] = 4;
00375 bb[1][1] = 4;
00376 out[3][0][0] = (aa[0] + bb[0][0]*in[0] + bb[1][0]*in[1]) * (a1d + in[2]*b1d + in[2]*in[2]*c1d);
00377 out[3][0][1] = (aa[1] + bb[0][1]*in[0] + bb[1][1]*in[1]) * (a1d + in[2]*b1d + in[2]*in[2]*c1d);
00378 out[3][0][2] = coeff * (a[0] + b[0]*in[0] + b[1]*in[1]) * (a[1] + c[0]*in[0] + c[1]*in[1]) * (b1d + 2*c1d*in[2]);
00379
00380
00381
00382 coeff= 2;
00383 a[0] = 0;
00384 a[1] = -0.5;
00385 b[0] = 1;
00386 b[1] = 0;
00387 c[0] = 1;
00388 c[1] = 0;
00389 a1d = 0;
00390 b1d = -1;
00391 c1d = 2;
00392 aa[0] = -1;
00393 aa[1] = 0;
00394 bb[0][0] = 4;
00395 bb[0][1] = 0;
00396 bb[1][0] = 0;
00397 bb[1][1] = 0;
00398 out[4][0][0] = (aa[0] + bb[0][0]*in[0] + bb[1][0]*in[1]) * (a1d + in[2]*b1d + in[2]*in[2]*c1d);
00399 out[4][0][1] = (aa[1] + bb[0][1]*in[0] + bb[1][1]*in[1]) * (a1d + in[2]*b1d + in[2]*in[2]*c1d);
00400 out[4][0][2] = coeff * (a[0] + b[0]*in[0] + b[1]*in[1]) * (a[1] + c[0]*in[0] + c[1]*in[1]) * (b1d + 2*c1d*in[2]);
00401
00402
00403
00404 coeff= 2;
00405 a[0] = 0;
00406 a[1] = -0.5;
00407 b[0] = 0;
00408 b[1] = 1;
00409 c[0] = 0;
00410 c[1] = 1;
00411 a1d = 0;
00412 b1d = -1;
00413 c1d = 2;
00414 aa[0] = 0;
00415 aa[1] = -1;
00416 bb[0][0] = 0;
00417 bb[0][1] = 0;
00418 bb[1][0] = 0;
00419 bb[1][1] = 4;
00420 out[5][0][0] = (aa[0] + bb[0][0]*in[0] + bb[1][0]*in[1]) * (a1d + in[2]*b1d + in[2]*in[2]*c1d);
00421 out[5][0][1] = (aa[1] + bb[0][1]*in[0] + bb[1][1]*in[1]) * (a1d + in[2]*b1d + in[2]*in[2]*c1d);
00422 out[5][0][2] = coeff * (a[0] + b[0]*in[0] + b[1]*in[1]) * (a[1] + c[0]*in[0] + c[1]*in[1]) * (b1d + 2*c1d*in[2]);
00423
00424
00425
00426
00427 coeff= 2;
00428 a[0] = 1;
00429 a[1] = 0.5;
00430 b[0] = -1;
00431 b[1] = -1;
00432 c[0] = -1;
00433 c[1] = -1;
00434 a1d = 0;
00435 b1d = 4;
00436 c1d = -4;
00437 aa[0] = -3;
00438 aa[1] = -3;
00439 bb[0][0] = 4;
00440 bb[0][1] = 4;
00441 bb[1][0] = 4;
00442 bb[1][1] = 4;
00443 out[6][0][0] = (aa[0] + bb[0][0]*in[0] + bb[1][0]*in[1]) * (a1d + in[2]*b1d + in[2]*in[2]*c1d);
00444 out[6][0][1] = (aa[1] + bb[0][1]*in[0] + bb[1][1]*in[1]) * (a1d + in[2]*b1d + in[2]*in[2]*c1d);
00445 out[6][0][2] = coeff * (a[0] + b[0]*in[0] + b[1]*in[1]) * (a[1] + c[0]*in[0] + c[1]*in[1]) * (b1d + 2*c1d*in[2]);
00446
00447
00448
00449 coeff= 2;
00450 a[0] = 0;
00451 a[1] = -0.5;
00452 b[0] = 1;
00453 b[1] = 0;
00454 c[0] = 1;
00455 c[1] = 0;
00456 a1d = 0;
00457 b1d = 4;
00458 c1d = -4;
00459 aa[0] = -1;
00460 aa[1] = 0;
00461 bb[0][0] = 4;
00462 bb[0][1] = 0;
00463 bb[1][0] = 0;
00464 bb[1][1] = 0;
00465 out[7][0][0] = (aa[0] + bb[0][0]*in[0] + bb[1][0]*in[1]) * (a1d + in[2]*b1d + in[2]*in[2]*c1d);
00466 out[7][0][1] = (aa[1] + bb[0][1]*in[0] + bb[1][1]*in[1]) * (a1d + in[2]*b1d + in[2]*in[2]*c1d);
00467 out[7][0][2] = coeff * (a[0] + b[0]*in[0] + b[1]*in[1]) * (a[1] + c[0]*in[0] + c[1]*in[1]) * (b1d + 2*c1d*in[2]);
00468
00469
00470
00471 coeff= 2;
00472 a[0] = 0;
00473 a[1] = -0.5;
00474 b[0] = 0;
00475 b[1] = 1;
00476 c[0] = 0;
00477 c[1] = 1;
00478 a1d = 0;
00479 b1d = 4;
00480 c1d = -4;
00481 aa[0] = 0;
00482 aa[1] = -1;
00483 bb[0][0] = 0;
00484 bb[0][1] = 0;
00485 bb[1][0] = 0;
00486 bb[1][1] = 4;
00487 out[8][0][0] = (aa[0] + bb[0][0]*in[0] + bb[1][0]*in[1]) * (a1d + in[2]*b1d + in[2]*in[2]*c1d);
00488 out[8][0][1] = (aa[1] + bb[0][1]*in[0] + bb[1][1]*in[1]) * (a1d + in[2]*b1d + in[2]*in[2]*c1d);
00489 out[8][0][2] = coeff * (a[0] + b[0]*in[0] + b[1]*in[1]) * (a[1] + c[0]*in[0] + c[1]*in[1]) * (b1d + 2*c1d*in[2]);
00490
00491
00492
00493
00494
00495 coeff= 4;
00496 a[0] = 0;
00497 a[1] = 1;
00498 b[0] = 1;
00499 b[1] = 0;
00500 c[0] = -1;
00501 c[1] = -1;
00502 a1d = 1;
00503 b1d = -3;
00504 c1d = 2;
00505 aa[0] = 4;
00506 aa[1] = 0;
00507 bb[0][0] = -8;
00508 bb[0][1] = -4;
00509 bb[1][0] = -4;
00510 bb[1][1] = 0;
00511 out[9][0][0] = (aa[0] + bb[0][0]*in[0] + bb[1][0]*in[1]) * (a1d + in[2]*b1d + in[2]*in[2]*c1d);
00512 out[9][0][1] = (aa[1] + bb[0][1]*in[0] + bb[1][1]*in[1]) * (a1d + in[2]*b1d + in[2]*in[2]*c1d);
00513 out[9][0][2] = coeff * (a[0] + b[0]*in[0] + b[1]*in[1]) * (a[1] + c[0]*in[0] + c[1]*in[1]) * (b1d + 2*c1d*in[2]);
00514
00515
00516
00517
00518 coeff= 4;
00519 a[0] = 0;
00520 a[1] = 1;
00521 b[0] = 0;
00522 b[1] = 1;
00523 c[0] = -1;
00524 c[1] = -1;
00525 a1d = 1;
00526 b1d = -3;
00527 c1d = 2;
00528 aa[0] = 0;
00529 aa[1] = 4;
00530 bb[0][0] = 0;
00531 bb[0][1] = -4;
00532 bb[1][0] = -4;
00533 bb[1][1] = -8;
00534 out[10][0][0] = (aa[0] + bb[0][0]*in[0] + bb[1][0]*in[1]) * (a1d + in[2]*b1d + in[2]*in[2]*c1d);
00535 out[10][0][1] = (aa[1] + bb[0][1]*in[0] + bb[1][1]*in[1]) * (a1d + in[2]*b1d + in[2]*in[2]*c1d);
00536 out[10][0][2] = coeff * (a[0] + b[0]*in[0] + b[1]*in[1]) * (a[1] + c[0]*in[0] + c[1]*in[1]) * (b1d + 2*c1d*in[2]);
00537
00538
00539
00540 coeff= 4;
00541 a[0] = 0;
00542 a[1] = 0;
00543 b[0] = 1;
00544 b[1] = 0;
00545 c[0] = 0;
00546 c[1] = 1;
00547 a1d = 1;
00548 b1d = -3;
00549 c1d = 2;
00550 aa[0] = 0;
00551 aa[1] = 0;
00552 bb[0][0] = 0;
00553 bb[0][1] = 4;
00554 bb[1][0] = 4;
00555 bb[1][1] = 0;
00556 out[11][0][0] = (aa[0] + bb[0][0]*in[0] + bb[1][0]*in[1]) * (a1d + in[2]*b1d + in[2]*in[2]*c1d);
00557 out[11][0][1] = (aa[1] + bb[0][1]*in[0] + bb[1][1]*in[1]) * (a1d + in[2]*b1d + in[2]*in[2]*c1d);
00558 out[11][0][2] = coeff * (a[0] + b[0]*in[0] + b[1]*in[1]) * (a[1] + c[0]*in[0] + c[1]*in[1]) * (b1d + 2*c1d*in[2]);
00559
00560
00561
00562
00563 coeff= 4;
00564 a[0] = 0;
00565 a[1] = 1;
00566 b[0] = 1;
00567 b[1] = 0;
00568 c[0] = -1;
00569 c[1] = -1;
00570 a1d = 0;
00571 b1d = -1;
00572 c1d = 2;
00573 aa[0] = 4;
00574 aa[1] = 0;
00575 bb[0][0] = -8;
00576 bb[0][1] = -4;
00577 bb[1][0] = -4;
00578 bb[1][1] = 0;
00579 out[12][0][0] = (aa[0] + bb[0][0]*in[0] + bb[1][0]*in[1]) * (a1d + in[2]*b1d + in[2]*in[2]*c1d);
00580 out[12][0][1] = (aa[1] + bb[0][1]*in[0] + bb[1][1]*in[1]) * (a1d + in[2]*b1d + in[2]*in[2]*c1d);
00581 out[12][0][2] = coeff * (a[0] + b[0]*in[0] + b[1]*in[1]) * (a[1] + c[0]*in[0] + c[1]*in[1]) * (b1d + 2*c1d*in[2]);
00582
00583
00584
00585 coeff= 4;
00586 a[0] = 0;
00587 a[1] = 1;
00588 b[0] = 0;
00589 b[1] = 1;
00590 c[0] = -1;
00591 c[1] = -1;
00592 a1d = 0;
00593 b1d = -1;
00594 c1d = 2;
00595 aa[0] = 0;
00596 aa[1] = 4;
00597 bb[0][0] = 0;
00598 bb[0][1] = -4;
00599 bb[1][0] = -4;
00600 bb[1][1] = -8;
00601 out[13][0][0] = (aa[0] + bb[0][0]*in[0] + bb[1][0]*in[1]) * (a1d + in[2]*b1d + in[2]*in[2]*c1d);
00602 out[13][0][1] = (aa[1] + bb[0][1]*in[0] + bb[1][1]*in[1]) * (a1d + in[2]*b1d + in[2]*in[2]*c1d);
00603 out[13][0][2] = coeff * (a[0] + b[0]*in[0] + b[1]*in[1]) * (a[1] + c[0]*in[0] + c[1]*in[1]) * (b1d + 2*c1d*in[2]);
00604
00605
00606
00607 coeff= 4;
00608 a[0] = 0;
00609 a[1] = 0;
00610 b[0] = 1;
00611 b[1] = 0;
00612 c[0] = 0;
00613 c[1] = 1;
00614 a1d = 0;
00615 b1d = -1;
00616 c1d = 2;
00617 aa[0] = 0;
00618 aa[1] = 0;
00619 bb[0][0] = 0;
00620 bb[0][1] = 4;
00621 bb[1][0] = 4;
00622 bb[1][1] = 0;
00623 out[14][0][0] = (aa[0] + bb[0][0]*in[0] + bb[1][0]*in[1]) * (a1d + in[2]*b1d + in[2]*in[2]*c1d);
00624 out[14][0][1] = (aa[1] + bb[0][1]*in[0] + bb[1][1]*in[1]) * (a1d + in[2]*b1d + in[2]*in[2]*c1d);
00625 out[14][0][2] = coeff * (a[0] + b[0]*in[0] + b[1]*in[1]) * (a[1] + c[0]*in[0] + c[1]*in[1]) * (b1d + 2*c1d*in[2]);
00626
00627
00628
00629
00630 coeff= 4;
00631 a[0] = 0;
00632 a[1] = 1;
00633 b[0] = 1;
00634 b[1] = 0;
00635 c[0] = -1;
00636 c[1] = -1;
00637 a1d = 0;
00638 b1d = 4;
00639 c1d = -4;
00640 aa[0] = 4;
00641 aa[1] = 0;
00642 bb[0][0] = -8;
00643 bb[0][1] = -4;
00644 bb[1][0] = -4;
00645 bb[1][1] = 0;
00646 out[15][0][0] = (aa[0] + bb[0][0]*in[0] + bb[1][0]*in[1]) * (a1d + in[2]*b1d + in[2]*in[2]*c1d);
00647 out[15][0][1] = (aa[1] + bb[0][1]*in[0] + bb[1][1]*in[1]) * (a1d + in[2]*b1d + in[2]*in[2]*c1d);
00648 out[15][0][2] = coeff * (a[0] + b[0]*in[0] + b[1]*in[1]) * (a[1] + c[0]*in[0] + c[1]*in[1]) * (b1d + 2*c1d*in[2]);
00649
00650
00651
00652
00653
00654 coeff= 4;
00655 a[0] = 0;
00656 a[1] = 1;
00657 b[0] = 0;
00658 b[1] = 1;
00659 c[0] = -1;
00660 c[1] = -1;
00661 a1d = 0;
00662 b1d = 4;
00663 c1d = -4;
00664 aa[0] = 0;
00665 aa[1] = 4;
00666 bb[0][0] = 0;
00667 bb[0][1] = -4;
00668 bb[1][0] = -4;
00669 bb[1][1] = -8;
00670 out[16][0][0] = (aa[0] + bb[0][0]*in[0] + bb[1][0]*in[1]) * (a1d + in[2]*b1d + in[2]*in[2]*c1d);
00671 out[16][0][1] = (aa[1] + bb[0][1]*in[0] + bb[1][1]*in[1]) * (a1d + in[2]*b1d + in[2]*in[2]*c1d);
00672 out[16][0][2] = coeff * (a[0] + b[0]*in[0] + b[1]*in[1]) * (a[1] + c[0]*in[0] + c[1]*in[1]) * (b1d + 2*c1d*in[2]);
00673
00674
00675
00676
00677 coeff= 4;
00678 a[0] = 0;
00679 a[1] = 0;
00680 b[0] = 1;
00681 b[1] = 0;
00682 c[0] = 0;
00683 c[1] = 1;
00684 a1d = 0;
00685 b1d = 4;
00686 c1d = -4;
00687 aa[0] = 0;
00688 aa[1] = 0;
00689 bb[0][0] = 0;
00690 bb[0][1] = 4;
00691 bb[1][0] = 4;
00692 bb[1][1] = 0;
00693 out[17][0][0] = (aa[0] + bb[0][0]*in[0] + bb[1][0]*in[1]) * (a1d + in[2]*b1d + in[2]*in[2]*c1d);
00694 out[17][0][1] = (aa[1] + bb[0][1]*in[0] + bb[1][1]*in[1]) * (a1d + in[2]*b1d + in[2]*in[2]*c1d);
00695 out[17][0][2] = coeff * (a[0] + b[0]*in[0] + b[1]*in[1]) * (a[1] + c[0]*in[0] + c[1]*in[1]) * (b1d + 2*c1d*in[2]);
00696
00697 }
00698
00700 unsigned int order () const
00701 {
00702 return 2;
00703 }
00704 };
00705 }
00706 #endif