|
Palabos
Version 1.0
|
00001 /* This file is part of the Palabos library. 00002 * 00003 * Copyright (C) 2011 FlowKit Sarl 00004 * Avenue de Chailly 23 00005 * 1012 Lausanne, Switzerland 00006 * E-mail contact: contact@flowkit.com 00007 * 00008 * The most recent release of Palabos can be downloaded at 00009 * <http://www.palabos.org/> 00010 * 00011 * The library Palabos is free software: you can redistribute it and/or 00012 * modify it under the terms of the GNU Affero General Public License as 00013 * published by the Free Software Foundation, either version 3 of the 00014 * License, or (at your option) any later version. 00015 * 00016 * The library is distributed in the hope that it will be useful, 00017 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00018 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00019 * GNU Affero General Public License for more details. 00020 * 00021 * You should have received a copy of the GNU Affero General Public License 00022 * along with this program. If not, see <http://www.gnu.org/licenses/>. 00023 */ 00024 00039 #ifndef DATA_PROCESSOR_WRAPPER_3D_H 00040 #define DATA_PROCESSOR_WRAPPER_3D_H 00041 00042 #include "atomicBlock/dataProcessingFunctional3D.h" 00043 00044 namespace plb { 00045 00046 /* *************** Generic wrappers, boxed functionals ********************** */ 00047 00050 void applyProcessingFunctional(BoxProcessingFunctional3D* functional, 00051 Box3D domain, 00052 std::vector<AtomicBlock3D*> atomicBlocks); 00053 00056 void integrateProcessingFunctional(BoxProcessingFunctional3D* functional, 00057 Box3D domain, 00058 std::vector<AtomicBlock3D*> atomicBlocks, 00059 plint level=0); 00060 00064 template<typename T, template<typename U> class Descriptor> 00065 void applyProcessingFunctional ( 00066 LatticeBoxProcessingFunctional3D<T,Descriptor>* functional, 00067 Box3D domain, 00068 std::vector<BlockLattice3D<T,Descriptor>*> lattices ); 00069 00073 template<typename T, template<typename U> class Descriptor> 00074 void integrateProcessingFunctional ( 00075 LatticeBoxProcessingFunctional3D<T,Descriptor>* functional, 00076 Box3D domain, 00077 std::vector<BlockLattice3D<T,Descriptor>*> lattices, plint level=0 ); 00078 00082 template<typename T> 00083 void applyProcessingFunctional ( 00084 ScalarFieldBoxProcessingFunctional3D<T>* functional, 00085 Box3D domain, 00086 std::vector<ScalarField3D<T>*> fields ); 00087 00091 template<typename T> 00092 void integrateProcessingFunctional ( 00093 ScalarFieldBoxProcessingFunctional3D<T>* functional, 00094 Box3D domain, 00095 std::vector<ScalarField3D<T>*> fields, plint level=0 ); 00096 00100 template<typename T, int nDim> 00101 void applyProcessingFunctional ( 00102 TensorFieldBoxProcessingFunctional3D<T,nDim>* functional, 00103 Box3D domain, 00104 std::vector<TensorField3D<T,nDim>*> fields ); 00105 00109 template<typename T, int nDim> 00110 void integrateProcessingFunctional ( 00111 TensorFieldBoxProcessingFunctional3D<T,nDim>* functional, 00112 Box3D domain, 00113 std::vector<TensorField3D<T,nDim>*> fields, plint level=0 ); 00114 00118 template<typename T> 00119 void applyProcessingFunctional ( 00120 NTensorFieldBoxProcessingFunctional3D<T>* functional, 00121 Box3D domain, 00122 std::vector<NTensorField3D<T>*> fields ); 00123 00127 template<typename T> 00128 void integrateProcessingFunctional ( 00129 NTensorFieldBoxProcessingFunctional3D<T>* functional, 00130 Box3D domain, 00131 std::vector<NTensorField3D<T>*> fields, plint level=0 ); 00132 00133 00134 /* *************** Typed wrappers with a single argument, boxed functionals * */ 00135 00136 template<typename T, template<typename U> class Descriptor> 00137 void applyProcessingFunctional(BoxProcessingFunctional3D_L<T,Descriptor>* functional, 00138 Box3D domain, BlockLattice3D<T,Descriptor>& lattice); 00139 00140 template<typename T, template<typename U> class Descriptor> 00141 void integrateProcessingFunctional(BoxProcessingFunctional3D_L<T,Descriptor>* functional, 00142 Box3D domain, BlockLattice3D<T,Descriptor>& lattice, 00143 plint level=0); 00144 00145 template<typename T> 00146 void applyProcessingFunctional(BoxProcessingFunctional3D_S<T>* functional, 00147 Box3D domain, ScalarField3D<T>& field); 00148 template<typename T> 00149 void integrateProcessingFunctional(BoxProcessingFunctional3D_S<T>* functional, 00150 Box3D domain, ScalarField3D<T>& field, 00151 plint level=0); 00152 00153 template<typename T, int nDim> 00154 void applyProcessingFunctional(BoxProcessingFunctional3D_T<T,nDim>* functional, 00155 Box3D domain, TensorField3D<T,nDim>& field); 00156 template<typename T, int nDim> 00157 void integrateProcessingFunctional(BoxProcessingFunctional3D_T<T,nDim>* functional, 00158 Box3D domain, TensorField3D<T,nDim>& field, 00159 plint level=0); 00160 00161 template<typename T> 00162 void applyProcessingFunctional(BoxProcessingFunctional3D_N<T>* functional, 00163 Box3D domain, NTensorField3D<T>& field); 00164 template<typename T> 00165 void integrateProcessingFunctional(BoxProcessingFunctional3D_N<T>* functional, 00166 Box3D domain, NTensorField3D<T>& field, 00167 plint level=0); 00168 00169 /* *************** Typed wrappers with two arguments ************************ */ 00170 00171 template<typename T1, template<typename U1> class Descriptor1, 00172 typename T2, template<typename U2> class Descriptor2> 00173 void applyProcessingFunctional ( 00174 BoxProcessingFunctional3D_LL<T1,Descriptor1,T2,Descriptor2>* functional, 00175 Box3D domain, 00176 BlockLattice3D<T1,Descriptor1>& lattice1, 00177 BlockLattice3D<T2,Descriptor2>& lattice2 ); 00178 00179 template<typename T1, template<typename U1> class Descriptor1, 00180 typename T2, template<typename U2> class Descriptor2> 00181 void integrateProcessingFunctional ( 00182 BoxProcessingFunctional3D_LL<T1,Descriptor1,T2,Descriptor2>* functional, 00183 Box3D domain, 00184 BlockLattice3D<T1,Descriptor1>& lattice1, 00185 BlockLattice3D<T2,Descriptor2>& lattice2, plint level=0 ); 00186 00187 template<typename T1, typename T2> 00188 void applyProcessingFunctional(BoxProcessingFunctional3D_SS<T1,T2>* functional, 00189 Box3D domain, 00190 ScalarField3D<T1>& field1, 00191 ScalarField3D<T2>& field2); 00192 00193 template<typename T1, typename T2> 00194 void integrateProcessingFunctional(BoxProcessingFunctional3D_SS<T1,T2>* functional, 00195 Box3D domain, 00196 ScalarField3D<T1>& field1, 00197 ScalarField3D<T2>& field2, plint level=0); 00198 00199 template<typename T1, int nDim1, typename T2, int nDim2> 00200 void applyProcessingFunctional ( 00201 BoxProcessingFunctional3D_TT<T1,nDim1,T2,nDim2>* functional, 00202 Box3D domain, 00203 TensorField3D<T1,nDim1>& field1, 00204 TensorField3D<T2,nDim2>& field2 ); 00205 00206 template<typename T1, int nDim1, typename T2, int nDim2> 00207 void integrateProcessingFunctional ( 00208 BoxProcessingFunctional3D_TT<T1,nDim1,T2,nDim2>* functional, Box3D domain, 00209 TensorField3D<T1,nDim1>& field1, 00210 TensorField3D<T2,nDim2>& field2, plint level=0 ); 00211 00212 template<typename T1, typename T2> 00213 void applyProcessingFunctional ( 00214 BoxProcessingFunctional3D_NN<T1,T2>* functional, 00215 Box3D domain, 00216 NTensorField3D<T1>& field1, 00217 NTensorField3D<T2>& field2 ); 00218 00219 template<typename T1, typename T2> 00220 void integrateProcessingFunctional ( 00221 BoxProcessingFunctional3D_NN<T1,T2>* functional, Box3D domain, 00222 NTensorField3D<T1>& field1, 00223 NTensorField3D<T2>& field2, plint level=0 ); 00224 00225 template<typename T1, typename T2, int nDim> 00226 void applyProcessingFunctional(BoxProcessingFunctional3D_ST<T1,T2,nDim>* functional, 00227 Box3D domain, 00228 ScalarField3D<T1>& field1, 00229 TensorField3D<T2,nDim>& field2); 00230 00231 template<typename T1, typename T2, int nDim> 00232 void integrateProcessingFunctional(BoxProcessingFunctional3D_ST<T1,T2,nDim>* functional, 00233 Box3D domain, 00234 ScalarField3D<T1>& field1, 00235 TensorField3D<T2,nDim>& field2, plint level=0); 00236 00237 template<typename T1, typename T2> 00238 void applyProcessingFunctional(BoxProcessingFunctional3D_SN<T1,T2>* functional, 00239 Box3D domain, 00240 ScalarField3D<T1>& field1, 00241 NTensorField3D<T2>& field2); 00242 00243 template<typename T1, typename T2> 00244 void integrateProcessingFunctional(BoxProcessingFunctional3D_SN<T1,T2>* functional, 00245 Box3D domain, 00246 ScalarField3D<T1>& field1, 00247 NTensorField3D<T2>& field2, plint level=0); 00248 00249 template<typename T1, template<typename U> class Descriptor, typename T2> 00250 void applyProcessingFunctional ( 00251 BoxProcessingFunctional3D_LS<T1,Descriptor,T2>* functional, 00252 Box3D domain, 00253 BlockLattice3D<T1,Descriptor>& lattice, 00254 ScalarField3D<T2>& field ); 00255 00256 template<typename T1, template<typename U> class Descriptor, typename T2> 00257 void integrateProcessingFunctional ( 00258 BoxProcessingFunctional3D_LS<T1,Descriptor,T2>* functional, 00259 Box3D domain, 00260 BlockLattice3D<T1,Descriptor>& lattice, 00261 ScalarField3D<T2>& field, plint level=0 ); 00262 00263 template<typename T1, template<typename U> class Descriptor, typename T2, int nDim> 00264 void applyProcessingFunctional ( 00265 BoxProcessingFunctional3D_LT<T1,Descriptor,T2,nDim>* functional, 00266 Box3D domain, 00267 BlockLattice3D<T1,Descriptor>& lattice, 00268 TensorField3D<T2,nDim>& field ); 00269 00270 template<typename T1, template<typename U> class Descriptor, typename T2, int nDim> 00271 void integrateProcessingFunctional ( 00272 BoxProcessingFunctional3D_LT<T1,Descriptor,T2,nDim>* functional, 00273 Box3D domain, 00274 BlockLattice3D<T1,Descriptor>& lattice, 00275 TensorField3D<T2,nDim>& field, plint level=0 ); 00276 00277 template<typename T1, template<typename U> class Descriptor, typename T2> 00278 void applyProcessingFunctional ( 00279 BoxProcessingFunctional3D_LN<T1,Descriptor,T2>* functional, 00280 Box3D domain, 00281 BlockLattice3D<T1,Descriptor>& lattice, 00282 NTensorField3D<T2>& field ); 00283 00284 template<typename T1, template<typename U> class Descriptor, typename T2> 00285 void integrateProcessingFunctional ( 00286 BoxProcessingFunctional3D_LN<T1,Descriptor,T2>* functional, 00287 Box3D domain, 00288 BlockLattice3D<T1,Descriptor>& lattice, 00289 NTensorField3D<T2>& field, plint level=0 ); 00290 00291 00292 /* *************** Generic wrappers, dotted functionals ********************* */ 00293 00294 void applyProcessingFunctional(DotProcessingFunctional3D* functional, 00295 DotList3D const& dotList, 00296 std::vector<AtomicBlock3D*> atomicBlocks); 00297 00298 void integrateProcessingFunctional(DotProcessingFunctional3D* functional, 00299 DotList3D const& dotList, 00300 std::vector<AtomicBlock3D*> atomicBlocks, 00301 plint level=0); 00302 00303 template<typename T, template<typename U> class Descriptor> 00304 void applyProcessingFunctional ( 00305 LatticeDotProcessingFunctional3D<T,Descriptor>* functional, 00306 DotList3D const& dotList, 00307 std::vector<BlockLattice3D<T,Descriptor>*> lattices ); 00308 00309 template<typename T, template<typename U> class Descriptor> 00310 void integrateProcessingFunctional ( 00311 LatticeDotProcessingFunctional3D<T,Descriptor>* functional, 00312 DotList3D const& dotList, 00313 std::vector<BlockLattice3D<T,Descriptor>*> lattices, plint level=0 ); 00314 00315 template<typename T> 00316 void applyProcessingFunctional ( 00317 ScalarFieldDotProcessingFunctional3D<T>* functional, 00318 DotList3D const& dotList, 00319 std::vector<ScalarField3D<T>*> fields ); 00320 00321 template<typename T> 00322 void integrateProcessingFunctional ( 00323 ScalarFieldDotProcessingFunctional3D<T>* functional, 00324 DotList3D const& dotList, 00325 std::vector<ScalarField3D<T>*> fields, plint level=0 ); 00326 00327 template<typename T, int nDim> 00328 void applyProcessingFunctional ( 00329 TensorFieldDotProcessingFunctional3D<T,nDim>* functional, 00330 DotList3D const& dotList, 00331 std::vector<TensorField3D<T,nDim>*> fields ); 00332 00333 template<typename T, int nDim> 00334 void integrateProcessingFunctional ( 00335 TensorFieldDotProcessingFunctional3D<T,nDim>* functional, 00336 DotList3D const& dotList, 00337 std::vector<TensorField3D<T,nDim>*> fields, plint level=0 ); 00338 00339 template<typename T> 00340 void applyProcessingFunctional ( 00341 NTensorFieldDotProcessingFunctional3D<T>* functional, 00342 DotList3D const& dotList, 00343 std::vector<NTensorField3D<T>*> fields ); 00344 00345 template<typename T> 00346 void integrateProcessingFunctional ( 00347 NTensorFieldDotProcessingFunctional3D<T>* functional, 00348 DotList3D const& dotList, 00349 std::vector<NTensorField3D<T>*> fields, plint level=0 ); 00350 00351 00352 /* *************** Typed wrappers with a single argument, dotted functionals* */ 00353 00354 template<typename T, template<typename U> class Descriptor> 00355 void applyProcessingFunctional ( 00356 DotProcessingFunctional3D_L<T,Descriptor>* functional, 00357 DotList3D const& dotList, 00358 BlockLattice3D<T,Descriptor>& lattice ); 00359 00360 template<typename T, template<typename U> class Descriptor> 00361 void integrateProcessingFunctional ( 00362 DotProcessingFunctional3D_L<T,Descriptor>* functional, 00363 DotList3D const& dotList, 00364 BlockLattice3D<T,Descriptor>& lattice, plint level=0 ); 00365 00366 template<typename T> 00367 void applyProcessingFunctional(DotProcessingFunctional3D_S<T>* functional, 00368 DotList3D const& dotList, 00369 ScalarField3D<T>& field); 00370 00371 template<typename T> 00372 void integrateProcessingFunctional(DotProcessingFunctional3D_S<T>* functional, 00373 DotList3D const& dotList, 00374 ScalarField3D<T>& field, plint level=0); 00375 00376 template<typename T, int nDim> 00377 void applyProcessingFunctional(DotProcessingFunctional3D_T<T,nDim>* functional, 00378 DotList3D const& dotList, 00379 TensorField3D<T,nDim>& field); 00380 00381 template<typename T, int nDim> 00382 void integrateProcessingFunctional(DotProcessingFunctional3D_T<T,nDim>* functional, 00383 DotList3D const& dotList, 00384 TensorField3D<T,nDim>& field, plint level=0); 00385 00386 template<typename T> 00387 void applyProcessingFunctional(DotProcessingFunctional3D_N<T>* functional, 00388 DotList3D const& dotList, 00389 NTensorField3D<T>& field); 00390 00391 template<typename T> 00392 void integrateProcessingFunctional(DotProcessingFunctional3D_N<T>* functional, 00393 DotList3D const& dotList, 00394 NTensorField3D<T>& field, plint level=0); 00395 00396 /* *************** Typed wrappers with two arguments, dotted functionals* *****/ 00397 00399 template<typename T1, template<typename U1> class Descriptor1, 00400 typename T2, template<typename U2> class Descriptor2> 00401 void applyProcessingFunctional ( 00402 DotProcessingFunctional3D_LL<T1,Descriptor1,T2,Descriptor2>* functional, 00403 DotList3D const& dotList, 00404 BlockLattice3D<T1,Descriptor1>& lattice1, 00405 BlockLattice3D<T2,Descriptor2>& lattice2 ); 00406 00407 template<typename T1, template<typename U1> class Descriptor1, 00408 typename T2, template<typename U2> class Descriptor2> 00409 void integrateProcessingFunctional ( 00410 DotProcessingFunctional3D_LL<T1,Descriptor1,T2,Descriptor2>* functional, 00411 DotList3D const& dotList, 00412 BlockLattice3D<T1,Descriptor1>& lattice1, 00413 BlockLattice3D<T2,Descriptor2>& lattice2, plint level=0 ); 00414 00415 template<typename T1, typename T2> 00416 void applyProcessingFunctional(DotProcessingFunctional3D_SS<T1,T2>* functional, 00417 DotList3D const& dotList, 00418 ScalarField3D<T1>& field1, 00419 ScalarField3D<T2>& field2); 00420 00421 template<typename T1, typename T2> 00422 void integrateProcessingFunctional(DotProcessingFunctional3D_SS<T1,T2>* functional, 00423 DotList3D const& dotList, 00424 ScalarField3D<T1>& field1, 00425 ScalarField3D<T2>& field2, plint level=0); 00426 00428 template<typename T1, int nDim1, typename T2, int nDim2> 00429 void applyProcessingFunctional ( 00430 DotProcessingFunctional3D_TT<T1,nDim1,T2,nDim2>* functional, 00431 DotList3D const& dotList, 00432 TensorField3D<T1,nDim1>& field1, 00433 TensorField3D<T2,nDim2>& field2 ); 00434 00435 template<typename T1, int nDim1, typename T2, int nDim2> 00436 void integrateProcessingFunctional ( 00437 DotProcessingFunctional3D_TT<T1,nDim1,T2,nDim2>* functional, 00438 DotList3D const& dotList, 00439 TensorField3D<T1,nDim1>& field1, 00440 TensorField3D<T2,nDim2>& field2, plint level=0 ); 00441 00443 template<typename T1, typename T2> 00444 void applyProcessingFunctional ( 00445 DotProcessingFunctional3D_NN<T1,T2>* functional, 00446 DotList3D const& dotList, 00447 NTensorField3D<T1>& field1, 00448 NTensorField3D<T2>& field2 ); 00449 00450 template<typename T1, typename T2> 00451 void integrateProcessingFunctional ( 00452 DotProcessingFunctional3D_NN<T1,T2>* functional, 00453 DotList3D const& dotList, 00454 NTensorField3D<T1>& field1, 00455 NTensorField3D<T2>& field2, plint level=0 ); 00456 00457 template<typename T1, typename T2, int nDim> 00458 void applyProcessingFunctional ( 00459 DotProcessingFunctional3D_ST<T1,T2,nDim>* functional, 00460 DotList3D const& dotList, 00461 ScalarField3D<T1>& field1, 00462 TensorField3D<T2,nDim>& field2 ); 00463 00464 template<typename T1, typename T2, int nDim> 00465 void integrateProcessingFunctional ( 00466 DotProcessingFunctional3D_ST<T1,T2,nDim>* functional, 00467 DotList3D const& dotList, 00468 ScalarField3D<T1>& field1, 00469 TensorField3D<T2,nDim>& field2, plint level=0 ); 00470 00471 template<typename T1, typename T2> 00472 void applyProcessingFunctional ( 00473 DotProcessingFunctional3D_SN<T1,T2>* functional, 00474 DotList3D const& dotList, 00475 ScalarField3D<T1>& field1, 00476 NTensorField3D<T2>& field2 ); 00477 00478 template<typename T1, typename T2> 00479 void integrateProcessingFunctional ( 00480 DotProcessingFunctional3D_SN<T1,T2>* functional, 00481 DotList3D const& dotList, 00482 ScalarField3D<T1>& field1, 00483 NTensorField3D<T2>& field2, plint level=0 ); 00484 00485 template<typename T1, template<typename U> class Descriptor, typename T2> 00486 void applyProcessingFunctional ( 00487 DotProcessingFunctional3D_LS<T1,Descriptor,T2>* functional, 00488 DotList3D const& dotList, 00489 BlockLattice3D<T1,Descriptor>& lattice, 00490 ScalarField3D<T2>& field ); 00491 00492 template<typename T1, template<typename U> class Descriptor, typename T2> 00493 void integrateProcessingFunctional ( 00494 DotProcessingFunctional3D_LS<T1,Descriptor,T2>* functional, 00495 DotList3D const& dotList, 00496 BlockLattice3D<T1,Descriptor>& lattice, 00497 ScalarField3D<T2>& field, plint level=0 ); 00498 00499 template<typename T1, template<typename U> class Descriptor, typename T2, int nDim> 00500 void applyProcessingFunctional ( 00501 DotProcessingFunctional3D_LT<T1,Descriptor,T2,nDim>* functional, 00502 DotList3D const& dotList, 00503 BlockLattice3D<T1,Descriptor>& lattice, 00504 TensorField3D<T2,nDim>& field ); 00505 00506 template<typename T1, template<typename U> class Descriptor, typename T2, int nDim> 00507 void integrateProcessingFunctional ( 00508 DotProcessingFunctional3D_LT<T1,Descriptor,T2,nDim>* functional, 00509 DotList3D const& dotList, 00510 BlockLattice3D<T1,Descriptor>& lattice, 00511 TensorField3D<T2,nDim>& field, plint level=0 ); 00512 00513 template<typename T1, template<typename U> class Descriptor, typename T2> 00514 void applyProcessingFunctional ( 00515 DotProcessingFunctional3D_LN<T1,Descriptor,T2>* functional, 00516 DotList3D const& dotList, 00517 BlockLattice3D<T1,Descriptor>& lattice, 00518 NTensorField3D<T2>& field ); 00519 00520 template<typename T1, template<typename U> class Descriptor, typename T2> 00521 void integrateProcessingFunctional ( 00522 DotProcessingFunctional3D_LN<T1,Descriptor,T2>* functional, 00523 DotList3D const& dotList, 00524 BlockLattice3D<T1,Descriptor>& lattice, 00525 NTensorField3D<T2>& field, plint level=0 ); 00526 00527 00528 /* *************** Generic wrappers, bounded and boxed functionals ********** */ 00529 00530 void applyProcessingFunctional(BoundedBoxProcessingFunctional3D* functional, 00531 Box3D domain, std::vector<AtomicBlock3D*> atomicBlocks, 00532 plint boundaryWidth ); 00533 00534 void integrateProcessingFunctional ( 00535 BoundedBoxProcessingFunctional3D* functional, 00536 Box3D domain, std::vector<AtomicBlock3D*> atomicBlocks, 00537 plint boundaryWidth, plint level=0 ); 00538 00539 00540 template<typename T, template<typename U> class Descriptor> 00541 void applyProcessingFunctional ( 00542 BoundedLatticeBoxProcessingFunctional3D<T,Descriptor>* functional, 00543 Box3D domain, 00544 std::vector<BlockLattice3D<T,Descriptor>*> lattices, 00545 plint boundaryWidth = Descriptor<T>::boundaryWidth ); 00546 00547 template<typename T, template<typename U> class Descriptor> 00548 void integrateProcessingFunctional ( 00549 BoundedLatticeBoxProcessingFunctional3D<T,Descriptor>* functional, 00550 Box3D domain, std::vector<BlockLattice3D<T,Descriptor>*> lattices, 00551 plint boundaryWidth = Descriptor<T>::boundaryWidth, plint level=0 ); 00552 00553 template<typename T> 00554 void applyProcessingFunctional ( 00555 BoundedScalarFieldBoxProcessingFunctional3D<T>* functional, 00556 Box3D domain, std::vector<ScalarField3D<T>*> fields, 00557 plint boundaryWidth ); 00558 00559 template<typename T> 00560 void integrateProcessingFunctional ( 00561 BoundedScalarFieldBoxProcessingFunctional3D<T>* functional, 00562 Box3D domain, std::vector<ScalarField3D<T>*> fields, 00563 plint boundaryWidth ); 00564 00565 template<typename T, int nDim> 00566 void applyProcessingFunctional ( 00567 BoundedTensorFieldBoxProcessingFunctional3D<T,nDim>* functional, 00568 Box3D domain, std::vector<TensorField3D<T,nDim>*> fields, 00569 plint boundaryWidth ); 00570 00571 template<typename T, int nDim> 00572 void integrateProcessingFunctional ( 00573 BoundedTensorFieldBoxProcessingFunctional3D<T,nDim>* functional, 00574 Box3D domain, 00575 std::vector<TensorField3D<T,nDim>*> fields, plint boundaryWidth ); 00576 00577 template<typename T> 00578 void applyProcessingFunctional ( 00579 BoundedNTensorFieldBoxProcessingFunctional3D<T>* functional, 00580 Box3D domain, std::vector<NTensorField3D<T>*> fields, 00581 plint boundaryWidth ); 00582 00583 template<typename T> 00584 void integrateProcessingFunctional ( 00585 BoundedNTensorFieldBoxProcessingFunctional3D<T>* functional, 00586 Box3D domain, 00587 std::vector<NTensorField3D<T>*> fields, plint boundaryWidth ); 00588 00589 00590 /* ** Typed wrappers with a single argument, bounded and boxed functionals * */ 00591 00592 template<typename T, template<typename U> class Descriptor> 00593 void applyProcessingFunctional ( 00594 BoundedBoxProcessingFunctional3D_L<T,Descriptor>* functional, 00595 Box3D domain, 00596 BlockLattice3D<T,Descriptor>& lattice, 00597 plint boundaryWidth = Descriptor<T>::boundaryWidth ); 00598 00599 template<typename T, template<typename U> class Descriptor> 00600 void integrateProcessingFunctional ( 00601 BoundedBoxProcessingFunctional3D_L<T,Descriptor>* functional, 00602 Box3D domain, 00603 BlockLattice3D<T,Descriptor>& lattice, 00604 plint boundaryWidth = Descriptor<T>::boundaryWidth, plint level=0 ); 00605 00606 template<typename T> 00607 void applyProcessingFunctional(BoundedBoxProcessingFunctional3D_S<T>* functional, 00608 Box3D domain, ScalarField3D<T>& field, 00609 plint boundaryWidth); 00610 00611 template<typename T> 00612 void integrateProcessingFunctional(BoundedBoxProcessingFunctional3D_S<T>* functional, 00613 Box3D domain, ScalarField3D<T>& field, 00614 plint boundaryWidth, plint level=0); 00615 00616 template<typename T, int nDim> 00617 void applyProcessingFunctional(BoundedBoxProcessingFunctional3D_T<T,nDim>* functional, 00618 Box3D domain, TensorField3D<T,nDim>& field, 00619 plint boundaryWidth); 00620 00621 template<typename T, int nDim> 00622 void integrateProcessingFunctional ( 00623 BoundedBoxProcessingFunctional3D_T<T,nDim>* functional, 00624 Box3D domain, 00625 TensorField3D<T,nDim>& field, 00626 plint boundaryWidth, plint level=0 ); 00627 00628 template<typename T> 00629 void applyProcessingFunctional(BoundedBoxProcessingFunctional3D_N<T>* functional, 00630 Box3D domain, NTensorField3D<T>& field, 00631 plint boundaryWidth); 00632 00633 template<typename T> 00634 void integrateProcessingFunctional ( 00635 BoundedBoxProcessingFunctional3D_N<T>* functional, 00636 Box3D domain, 00637 NTensorField3D<T>& field, 00638 plint boundaryWidth, plint level=0 ); 00639 00640 00641 /* ** Typed wrappers with two arguments, bounded and boxed functionals *** */ 00642 00643 template<typename T1, template<typename U1> class Descriptor1, 00644 typename T2, template<typename U2> class Descriptor2> 00645 void applyProcessingFunctional ( 00646 BoundedBoxProcessingFunctional3D_LL<T1,Descriptor1,T2,Descriptor2>* functional, 00647 Box3D domain, 00648 BlockLattice3D<T1,Descriptor1>& lattice1, 00649 BlockLattice3D<T2,Descriptor2>& lattice2, 00650 plint boundaryWidth = Descriptor1<T1>::boundaryWidth ); 00651 00652 template<typename T1, template<typename U1> class Descriptor1, 00653 typename T2, template<typename U2> class Descriptor2> 00654 void integrateProcessingFunctional ( 00655 BoundedBoxProcessingFunctional3D_LL<T1,Descriptor1,T2,Descriptor2>* functional, 00656 Box3D domain, 00657 BlockLattice3D<T1,Descriptor1>& lattice1, 00658 BlockLattice3D<T2,Descriptor2>& lattice2, 00659 plint boundaryWidth = Descriptor1<T1>::boundaryWidth, plint level=0 ); 00660 00661 template<typename T1, typename T2> 00662 void applyProcessingFunctional ( 00663 BoundedBoxProcessingFunctional3D_SS<T1,T2>* functional, 00664 Box3D domain, 00665 ScalarField3D<T1>& field1, 00666 ScalarField3D<T2>& field2, 00667 plint boundaryWidth ); 00668 00669 template<typename T1, typename T2> 00670 void integrateProcessingFunctional ( 00671 BoundedBoxProcessingFunctional3D_SS<T1,T2>* functional, 00672 Box3D domain, 00673 ScalarField3D<T1>& field1, 00674 ScalarField3D<T2>& field2, 00675 plint boundaryWidth, plint level=0 ); 00676 00677 template<typename T1, int nDim1, typename T2, int nDim2> 00678 void applyProcessingFunctional ( 00679 BoundedBoxProcessingFunctional3D_TT<T1,nDim1,T2,nDim2>* functional, 00680 Box3D domain, 00681 TensorField3D<T1,nDim1>& field1, 00682 TensorField3D<T2,nDim2>& field2, 00683 plint boundaryWidth ); 00684 00685 template<typename T1, int nDim1, typename T2, int nDim2> 00686 void integrateProcessingFunctional ( 00687 BoundedBoxProcessingFunctional3D_TT<T1,nDim1,T2,nDim2>* functional, 00688 Box3D domain, 00689 TensorField3D<T1,nDim1>& field1, 00690 TensorField3D<T2,nDim2>& field2, 00691 plint boundaryWidth, plint level=0 ); 00692 00693 template<typename T1, typename T2> 00694 void applyProcessingFunctional ( 00695 BoundedBoxProcessingFunctional3D_NN<T1,T2>* functional, 00696 Box3D domain, 00697 NTensorField3D<T1>& field1, 00698 NTensorField3D<T2>& field2, 00699 plint boundaryWidth ); 00700 00701 template<typename T1, typename T2> 00702 void integrateProcessingFunctional ( 00703 BoundedBoxProcessingFunctional3D_NN<T1,T2>* functional, 00704 Box3D domain, 00705 NTensorField3D<T1>& field1, 00706 NTensorField3D<T2>& field2, 00707 plint boundaryWidth, plint level=0 ); 00708 00709 template<typename T1, typename T2, int nDim> 00710 void applyProcessingFunctional ( 00711 BoundedBoxProcessingFunctional3D_ST<T1,T2,nDim>* functional, 00712 Box3D domain, 00713 ScalarField3D<T1>& field1, 00714 TensorField3D<T2,nDim>& field2, 00715 plint boundaryWidth ); 00716 00717 template<typename T1, typename T2, int nDim> 00718 void integrateProcessingFunctional ( 00719 BoundedBoxProcessingFunctional3D_ST<T1,T2,nDim>* functional, 00720 Box3D domain, 00721 ScalarField3D<T1>& field1, 00722 TensorField3D<T2,nDim>& field2, 00723 plint boundaryWidth, plint level=0 ); 00724 00725 template<typename T1, typename T2> 00726 void applyProcessingFunctional ( 00727 BoundedBoxProcessingFunctional3D_SN<T1,T2>* functional, 00728 Box3D domain, 00729 ScalarField3D<T1>& field1, 00730 NTensorField3D<T2>& field2, 00731 plint boundaryWidth ); 00732 00733 template<typename T1, typename T2> 00734 void integrateProcessingFunctional ( 00735 BoundedBoxProcessingFunctional3D_SN<T1,T2>* functional, 00736 Box3D domain, 00737 ScalarField3D<T1>& field1, 00738 NTensorField3D<T2>& field2, 00739 plint boundaryWidth, plint level=0 ); 00740 00741 template<typename T1, template<typename U> class Descriptor, typename T2> 00742 void applyProcessingFunctional ( 00743 BoundedBoxProcessingFunctional3D_LS<T1,Descriptor,T2>* functional, 00744 Box3D domain, 00745 BlockLattice3D<T1,Descriptor>& lattice, 00746 ScalarField3D<T2>& field, 00747 plint boundaryWidth = Descriptor<T1>::boundaryWidth ); 00748 00749 template<typename T1, template<typename U> class Descriptor, typename T2> 00750 void integrateProcessingFunctional ( 00751 BoundedBoxProcessingFunctional3D_LS<T1,Descriptor,T2>* functional, 00752 Box3D domain, 00753 BlockLattice3D<T1,Descriptor>& lattice, 00754 ScalarField3D<T2>& field, 00755 plint boundaryWidth = Descriptor<T1>::boundaryWidth, plint level=0 ); 00756 00757 template<typename T1, template<typename U> class Descriptor, typename T2, int nDim> 00758 void applyProcessingFunctional ( 00759 BoundedBoxProcessingFunctional3D_LT<T1,Descriptor,T2,nDim>* functional, 00760 Box3D domain, 00761 BlockLattice3D<T1,Descriptor>& lattice, 00762 TensorField3D<T2,nDim>& field, 00763 plint boundaryWidth = Descriptor<T1>::boundaryWidth ); 00764 00765 template<typename T1, template<typename U> class Descriptor, typename T2, int nDim> 00766 void integrateProcessingFunctional ( 00767 BoundedBoxProcessingFunctional3D_LT<T1,Descriptor,T2,nDim>* functional, 00768 Box3D domain, 00769 BlockLattice3D<T1,Descriptor>& lattice, 00770 TensorField3D<T2,nDim>& field, 00771 plint boundaryWidth = Descriptor<T1>::boundaryWidth, plint level=0 ); 00772 00773 template<typename T1, template<typename U> class Descriptor, typename T2> 00774 void applyProcessingFunctional ( 00775 BoundedBoxProcessingFunctional3D_LN<T1,Descriptor,T2>* functional, 00776 Box3D domain, 00777 BlockLattice3D<T1,Descriptor>& lattice, 00778 NTensorField3D<T2>& field, 00779 plint boundaryWidth = Descriptor<T1>::boundaryWidth ); 00780 00781 template<typename T1, template<typename U> class Descriptor, typename T2> 00782 void integrateProcessingFunctional ( 00783 BoundedBoxProcessingFunctional3D_LN<T1,Descriptor,T2>* functional, 00784 Box3D domain, 00785 BlockLattice3D<T1,Descriptor>& lattice, 00786 NTensorField3D<T2>& field, 00787 plint boundaryWidth = Descriptor<T1>::boundaryWidth, plint level=0 ); 00788 00789 } // namespace plb 00790 00791 #endif // DATA_PROCESSOR_WRAPPER_3D_H