$treeview $search $mathjax
|
Palabos
Version 1.1
$projectbrief
|
$projectbrief
|
$searchbox |
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 MULTI_DATA_PROCESSOR_WRAPPER_3D_H 00040 #define MULTI_DATA_PROCESSOR_WRAPPER_3D_H 00041 00042 #include "atomicBlock/dataProcessingFunctional3D.h" 00043 00044 namespace plb { 00045 00046 class MultiBlock3D; 00047 template<typename T, template<typename U> class Descriptor> class MultiBlockLattice3D; 00048 template<typename T> class MultiScalarField3D; 00049 template<typename T, int nDim> class MultiTensorField3D; 00050 template<typename T> class MultiNTensorField3D; 00051 00052 /* *************** Generic wrappers, boxed functionals ********************** */ 00053 00056 void applyProcessingFunctional(BoxProcessingFunctional3D* functional, 00057 Box3D domain, 00058 std::vector<MultiBlock3D*> multiBlocks); 00059 00062 void integrateProcessingFunctional(BoxProcessingFunctional3D* functional, 00063 Box3D domain, 00064 std::vector<MultiBlock3D*> multiBlocks, 00065 plint level=0); 00066 00070 template<typename T, template<typename U> class Descriptor> 00071 void applyProcessingFunctional ( 00072 LatticeBoxProcessingFunctional3D<T,Descriptor>* functional, 00073 Box3D domain, 00074 std::vector<MultiBlockLattice3D<T,Descriptor>*> lattices ); 00075 00079 template<typename T, template<typename U> class Descriptor> 00080 void integrateProcessingFunctional ( 00081 LatticeBoxProcessingFunctional3D<T,Descriptor>* functional, 00082 Box3D domain, 00083 std::vector<MultiBlockLattice3D<T,Descriptor>*> lattices, plint level=0 ); 00084 00088 template<typename T> 00089 void applyProcessingFunctional ( 00090 ScalarFieldBoxProcessingFunctional3D<T>* functional, 00091 Box3D domain, 00092 std::vector<MultiScalarField3D<T>*> fields ); 00093 00097 template<typename T> 00098 void integrateProcessingFunctional ( 00099 ScalarFieldBoxProcessingFunctional3D<T>* functional, 00100 Box3D domain, 00101 std::vector<MultiScalarField3D<T>*> fields, plint level=0 ); 00102 00106 template<typename T, int nDim> 00107 void applyProcessingFunctional ( 00108 TensorFieldBoxProcessingFunctional3D<T,nDim>* functional, 00109 Box3D domain, 00110 std::vector<MultiTensorField3D<T,nDim>*> fields ); 00111 00115 template<typename T, int nDim> 00116 void integrateProcessingFunctional ( 00117 TensorFieldBoxProcessingFunctional3D<T,nDim>* functional, 00118 Box3D domain, 00119 std::vector<MultiTensorField3D<T,nDim>*> fields, plint level=0 ); 00120 00121 00125 template<typename T> 00126 void applyProcessingFunctional ( 00127 NTensorFieldBoxProcessingFunctional3D<T>* functional, 00128 Box3D domain, 00129 std::vector<MultiNTensorField3D<T>*> fields ); 00130 00134 template<typename T> 00135 void applyProcessingFunctional ( 00136 MaskedNTensorFieldBoxProcessingFunctional3D<T>* functional, 00137 Box3D domain, 00138 std::vector<MultiNTensorField3D<T>*> fields, 00139 MultiNTensorField3D<int>& mask); 00140 00144 template<typename T> 00145 void integrateProcessingFunctional ( 00146 NTensorFieldBoxProcessingFunctional3D<T>* functional, 00147 Box3D domain, 00148 std::vector<MultiNTensorField3D<T>*> fields, plint level=0 ); 00149 00153 template<typename T> 00154 void integrateProcessingFunctional ( 00155 MaskedNTensorFieldBoxProcessingFunctional3D<T>* functional, 00156 Box3D domain, 00157 std::vector<MultiNTensorField3D<T>*> fields, 00158 MultiNTensorField3D<int>& mask, 00159 plint level=0 ); 00160 00161 00162 /* *************** Typed wrappers with a single argument, boxed functionals * */ 00163 00164 template<typename T, template<typename U> class Descriptor> 00165 void applyProcessingFunctional(BoxProcessingFunctional3D_L<T,Descriptor>* functional, 00166 Box3D domain, MultiBlockLattice3D<T,Descriptor>& lattice); 00167 00168 template<typename T, template<typename U> class Descriptor> 00169 void integrateProcessingFunctional(BoxProcessingFunctional3D_L<T,Descriptor>* functional, 00170 Box3D domain, MultiBlockLattice3D<T,Descriptor>& lattice, 00171 plint level=0); 00172 00173 template<typename T, template<typename U> class Descriptor> 00174 void applyProcessingFunctional(MaskedBoxProcessingFunctional3D_L<T,Descriptor>* functional, 00175 Box3D domain, 00176 MultiBlockLattice3D<T,Descriptor>& lattice, 00177 MultiNTensorField3D<int>& mask); 00178 00179 template<typename T, template<typename U> class Descriptor> 00180 void integrateProcessingFunctional(BoxProcessingFunctional3D_L<T,Descriptor>* functional, 00181 Box3D domain, 00182 MultiBlockLattice3D<T,Descriptor>& lattice, 00183 MultiNTensorField3D<int>& mask, 00184 plint level=0); 00185 00186 template<typename T> 00187 void applyProcessingFunctional(BoxProcessingFunctional3D_S<T>* functional, 00188 Box3D domain, MultiScalarField3D<T>& field); 00189 template<typename T> 00190 void integrateProcessingFunctional(BoxProcessingFunctional3D_S<T>* functional, 00191 Box3D domain, MultiScalarField3D<T>& field, 00192 plint level=0); 00193 00194 template<typename T, int nDim> 00195 void applyProcessingFunctional(BoxProcessingFunctional3D_T<T,nDim>* functional, 00196 Box3D domain, MultiTensorField3D<T,nDim>& field); 00197 template<typename T, int nDim> 00198 void integrateProcessingFunctional(BoxProcessingFunctional3D_T<T,nDim>* functional, 00199 Box3D domain, MultiTensorField3D<T,nDim>& field, 00200 plint level=0); 00201 00202 template<typename T> 00203 void applyProcessingFunctional(BoxProcessingFunctional3D_N<T>* functional, 00204 Box3D domain, MultiNTensorField3D<T>& field); 00205 template<typename T> 00206 void integrateProcessingFunctional(BoxProcessingFunctional3D_N<T>* functional, 00207 Box3D domain, MultiNTensorField3D<T>& field, 00208 plint level=0); 00209 00210 template<typename T> 00211 void applyProcessingFunctional(MaskedBoxProcessingFunctional3D_N<T>* functional, 00212 Box3D domain, 00213 MultiNTensorField3D<T>& field, 00214 MultiNTensorField3D<int>& mask); 00215 template<typename T> 00216 void integrateProcessingFunctional(MaskedBoxProcessingFunctional3D_N<T>* functional, 00217 Box3D domain, 00218 MultiNTensorField3D<T>& field, 00219 MultiNTensorField3D<int>& mask, 00220 plint level=0); 00221 00222 /* *************** Typed wrappers with two arguments ************************ */ 00223 00224 template<typename T1, template<typename U1> class Descriptor1, 00225 typename T2, template<typename U2> class Descriptor2> 00226 void applyProcessingFunctional ( 00227 BoxProcessingFunctional3D_LL<T1,Descriptor1,T2,Descriptor2>* functional, 00228 Box3D domain, 00229 MultiBlockLattice3D<T1,Descriptor1>& lattice1, 00230 MultiBlockLattice3D<T2,Descriptor2>& lattice2 ); 00231 00232 template<typename T1, template<typename U1> class Descriptor1, 00233 typename T2, template<typename U2> class Descriptor2> 00234 void integrateProcessingFunctional ( 00235 BoxProcessingFunctional3D_LL<T1,Descriptor1,T2,Descriptor2>* functional, 00236 Box3D domain, 00237 MultiBlockLattice3D<T1,Descriptor1>& lattice1, 00238 MultiBlockLattice3D<T2,Descriptor2>& lattice2, plint level=0 ); 00239 00240 template<typename T1, typename T2> 00241 void applyProcessingFunctional(BoxProcessingFunctional3D_SS<T1,T2>* functional, 00242 Box3D domain, 00243 MultiScalarField3D<T1>& field1, 00244 MultiScalarField3D<T2>& field2); 00245 00246 template<typename T1, typename T2> 00247 void integrateProcessingFunctional(BoxProcessingFunctional3D_SS<T1,T2>* functional, 00248 Box3D domain, 00249 MultiScalarField3D<T1>& field1, 00250 MultiScalarField3D<T2>& field2, plint level=0); 00251 00252 template<typename T1, int nDim1, typename T2, int nDim2> 00253 void applyProcessingFunctional ( 00254 BoxProcessingFunctional3D_TT<T1,nDim1,T2,nDim2>* functional, 00255 Box3D domain, 00256 MultiTensorField3D<T1,nDim1>& field1, 00257 MultiTensorField3D<T2,nDim2>& field2 ); 00258 00259 template<typename T1, int nDim1, typename T2, int nDim2> 00260 void integrateProcessingFunctional ( 00261 BoxProcessingFunctional3D_TT<T1,nDim1,T2,nDim2>* functional, Box3D domain, 00262 MultiTensorField3D<T1,nDim1>& field1, 00263 MultiTensorField3D<T2,nDim2>& field2, plint level=0 ); 00264 00265 template<typename T1, typename T2> 00266 void applyProcessingFunctional ( 00267 BoxProcessingFunctional3D_NN<T1,T2>* functional, 00268 Box3D domain, 00269 MultiNTensorField3D<T1>& field1, 00270 MultiNTensorField3D<T2>& field2 ); 00271 00272 template<typename T1, typename T2> 00273 void integrateProcessingFunctional ( 00274 BoxProcessingFunctional3D_NN<T1,T2>* functional, Box3D domain, 00275 MultiNTensorField3D<T1>& field1, 00276 MultiNTensorField3D<T2>& field2, plint level=0 ); 00277 00278 template<typename T1, typename T2> 00279 void applyProcessingFunctional ( 00280 MaskedBoxProcessingFunctional3D_NN<T1,T2>* functional, 00281 Box3D domain, 00282 MultiNTensorField3D<T1>& field1, 00283 MultiNTensorField3D<T2>& field2, 00284 MultiNTensorField3D<int>& mask ); 00285 00286 template<typename T1, typename T2> 00287 void integrateProcessingFunctional ( 00288 MaskedBoxProcessingFunctional3D_NN<T1,T2>* functional, Box3D domain, 00289 MultiNTensorField3D<T1>& field1, 00290 MultiNTensorField3D<T2>& field2, 00291 MultiNTensorField3D<int>& mask, 00292 plint level=0 ); 00293 00294 template<typename T1, typename T2, int nDim> 00295 void applyProcessingFunctional(BoxProcessingFunctional3D_ST<T1,T2,nDim>* functional, 00296 Box3D domain, 00297 MultiScalarField3D<T1>& field1, 00298 MultiTensorField3D<T2,nDim>& field2); 00299 00300 template<typename T1, typename T2, int nDim> 00301 void integrateProcessingFunctional(BoxProcessingFunctional3D_ST<T1,T2,nDim>* functional, 00302 Box3D domain, 00303 MultiScalarField3D<T1>& field1, 00304 MultiTensorField3D<T2,nDim>& field2, plint level=0); 00305 00306 template<typename T1, typename T2> 00307 void applyProcessingFunctional(BoxProcessingFunctional3D_SN<T1,T2>* functional, 00308 Box3D domain, 00309 MultiScalarField3D<T1>& field1, 00310 MultiNTensorField3D<T2>& field2); 00311 00312 template<typename T1, typename T2> 00313 void integrateProcessingFunctional(BoxProcessingFunctional3D_SN<T1,T2>* functional, 00314 Box3D domain, 00315 MultiScalarField3D<T1>& field1, 00316 MultiNTensorField3D<T2>& field2, plint level=0); 00317 00318 template<typename T1, template<typename U> class Descriptor, typename T2> 00319 void applyProcessingFunctional ( 00320 BoxProcessingFunctional3D_LS<T1,Descriptor,T2>* functional, 00321 Box3D domain, 00322 MultiBlockLattice3D<T1,Descriptor>& lattice, 00323 MultiScalarField3D<T2>& field ); 00324 00325 template<typename T1, template<typename U> class Descriptor, typename T2> 00326 void integrateProcessingFunctional ( 00327 BoxProcessingFunctional3D_LS<T1,Descriptor,T2>* functional, 00328 Box3D domain, 00329 MultiBlockLattice3D<T1,Descriptor>& lattice, 00330 MultiScalarField3D<T2>& field, plint level=0 ); 00331 00332 template<typename T1, template<typename U> class Descriptor, typename T2, int nDim> 00333 void applyProcessingFunctional ( 00334 BoxProcessingFunctional3D_LT<T1,Descriptor,T2,nDim>* functional, 00335 Box3D domain, 00336 MultiBlockLattice3D<T1,Descriptor>& lattice, 00337 MultiTensorField3D<T2,nDim>& field ); 00338 00339 template<typename T1, template<typename U> class Descriptor, typename T2, int nDim> 00340 void integrateProcessingFunctional ( 00341 BoxProcessingFunctional3D_LT<T1,Descriptor,T2,nDim>* functional, 00342 Box3D domain, 00343 MultiBlockLattice3D<T1,Descriptor>& lattice, 00344 MultiTensorField3D<T2,nDim>& field, plint level=0 ); 00345 00346 template<typename T1, template<typename U> class Descriptor, typename T2> 00347 void applyProcessingFunctional ( 00348 BoxProcessingFunctional3D_LN<T1,Descriptor,T2>* functional, 00349 Box3D domain, 00350 MultiBlockLattice3D<T1,Descriptor>& lattice, 00351 MultiNTensorField3D<T2>& field ); 00352 00353 template<typename T1, template<typename U> class Descriptor, typename T2> 00354 void integrateProcessingFunctional ( 00355 BoxProcessingFunctional3D_LN<T1,Descriptor,T2>* functional, 00356 Box3D domain, 00357 MultiBlockLattice3D<T1,Descriptor>& lattice, 00358 MultiNTensorField3D<T2>& field, plint level=0 ); 00359 00360 template<typename T1, template<typename U> class Descriptor, typename T2> 00361 void applyProcessingFunctional ( 00362 MaskedBoxProcessingFunctional3D_LN<T1,Descriptor,T2>* functional, 00363 Box3D domain, 00364 MultiBlockLattice3D<T1,Descriptor>& lattice, 00365 MultiNTensorField3D<T2>& field, 00366 MultiNTensorField3D<int>& mask ); 00367 00368 template<typename T1, template<typename U> class Descriptor, typename T2> 00369 void integrateProcessingFunctional ( 00370 MaskedBoxProcessingFunctional3D_LN<T1,Descriptor,T2>* functional, 00371 Box3D domain, 00372 MultiBlockLattice3D<T1,Descriptor>& lattice, 00373 MultiNTensorField3D<T2>& field, 00374 MultiNTensorField3D<int>& mask, 00375 plint level=0 ); 00376 00377 00378 /* *************** Generic wrappers, dotted functionals ********************* */ 00379 00380 void applyProcessingFunctional(DotProcessingFunctional3D* functional, 00381 DotList3D const& dotList, 00382 std::vector<MultiBlock3D*> multiBlocks); 00383 00384 void integrateProcessingFunctional(DotProcessingFunctional3D* functional, 00385 DotList3D const& dotList, 00386 std::vector<MultiBlock3D*> multiBlocks, 00387 plint level=0); 00388 00389 template<typename T, template<typename U> class Descriptor> 00390 void applyProcessingFunctional ( 00391 LatticeDotProcessingFunctional3D<T,Descriptor>* functional, 00392 DotList3D const& dotList, 00393 std::vector<MultiBlockLattice3D<T,Descriptor>*> lattices ); 00394 00395 template<typename T, template<typename U> class Descriptor> 00396 void integrateProcessingFunctional ( 00397 LatticeDotProcessingFunctional3D<T,Descriptor>* functional, 00398 DotList3D const& dotList, 00399 std::vector<MultiBlockLattice3D<T,Descriptor>*> lattices, plint level=0 ); 00400 00401 template<typename T> 00402 void applyProcessingFunctional ( 00403 ScalarFieldDotProcessingFunctional3D<T>* functional, 00404 DotList3D const& dotList, 00405 std::vector<MultiScalarField3D<T>*> fields ); 00406 00407 template<typename T> 00408 void integrateProcessingFunctional ( 00409 ScalarFieldDotProcessingFunctional3D<T>* functional, 00410 DotList3D const& dotList, 00411 std::vector<MultiScalarField3D<T>*> fields, plint level=0 ); 00412 00413 template<typename T, int nDim> 00414 void applyProcessingFunctional ( 00415 TensorFieldDotProcessingFunctional3D<T,nDim>* functional, 00416 DotList3D const& dotList, 00417 std::vector<MultiTensorField3D<T,nDim>*> fields ); 00418 00419 template<typename T, int nDim> 00420 void integrateProcessingFunctional ( 00421 TensorFieldDotProcessingFunctional3D<T,nDim>* functional, 00422 DotList3D const& dotList, 00423 std::vector<MultiTensorField3D<T,nDim>*> fields, plint level=0 ); 00424 00425 00426 /* *************** Typed wrappers with a single argument, dotted functionals* */ 00427 00428 template<typename T, template<typename U> class Descriptor> 00429 void applyProcessingFunctional ( 00430 DotProcessingFunctional3D_L<T,Descriptor>* functional, 00431 DotList3D const& dotList, 00432 MultiBlockLattice3D<T,Descriptor>& lattice ); 00433 00434 template<typename T, template<typename U> class Descriptor> 00435 void integrateProcessingFunctional ( 00436 DotProcessingFunctional3D_L<T,Descriptor>* functional, 00437 DotList3D const& dotList, 00438 MultiBlockLattice3D<T,Descriptor>& lattice, plint level=0 ); 00439 00440 template<typename T> 00441 void applyProcessingFunctional(DotProcessingFunctional3D_S<T>* functional, 00442 DotList3D const& dotList, 00443 MultiScalarField3D<T>& field); 00444 00445 template<typename T> 00446 void integrateProcessingFunctional(DotProcessingFunctional3D_S<T>* functional, 00447 DotList3D const& dotList, 00448 MultiScalarField3D<T>& field, plint level=0); 00449 00450 template<typename T, int nDim> 00451 void applyProcessingFunctional(DotProcessingFunctional3D_T<T,nDim>* functional, 00452 DotList3D const& dotList, 00453 MultiTensorField3D<T,nDim>& field); 00454 00455 template<typename T, int nDim> 00456 void integrateProcessingFunctional(DotProcessingFunctional3D_T<T,nDim>* functional, 00457 DotList3D const& dotList, 00458 MultiTensorField3D<T,nDim>& field, plint level=0); 00459 00460 /* *************** Typed wrappers with two arguments, dotted functionals* *****/ 00461 00463 template<typename T1, template<typename U1> class Descriptor1, 00464 typename T2, template<typename U2> class Descriptor2> 00465 void applyProcessingFunctional ( 00466 DotProcessingFunctional3D_LL<T1,Descriptor1,T2,Descriptor2>* functional, 00467 DotList3D const& dotList, 00468 MultiBlockLattice3D<T1,Descriptor1>& lattice1, 00469 MultiBlockLattice3D<T2,Descriptor2>& lattice2 ); 00470 00471 template<typename T1, template<typename U1> class Descriptor1, 00472 typename T2, template<typename U2> class Descriptor2> 00473 void integrateProcessingFunctional ( 00474 DotProcessingFunctional3D_LL<T1,Descriptor1,T2,Descriptor2>* functional, 00475 DotList3D const& dotList, 00476 MultiBlockLattice3D<T1,Descriptor1>& lattice1, 00477 MultiBlockLattice3D<T2,Descriptor2>& lattice2, plint level=0 ); 00478 00479 template<typename T1, typename T2> 00480 void applyProcessingFunctional(DotProcessingFunctional3D_SS<T1,T2>* functional, 00481 DotList3D const& dotList, 00482 MultiScalarField3D<T1>& field1, 00483 MultiScalarField3D<T2>& field2); 00484 00485 template<typename T1, typename T2> 00486 void integrateProcessingFunctional(DotProcessingFunctional3D_SS<T1,T2>* functional, 00487 DotList3D const& dotList, 00488 MultiScalarField3D<T1>& field1, 00489 MultiScalarField3D<T2>& field2, plint level=0); 00490 00492 template<typename T1, int nDim1, typename T2, int nDim2> 00493 void applyProcessingFunctional ( 00494 DotProcessingFunctional3D_TT<T1,nDim1,T2,nDim2>* functional, 00495 DotList3D const& dotList, 00496 MultiTensorField3D<T1,nDim1>& field1, 00497 MultiTensorField3D<T2,nDim2>& field2 ); 00498 00499 template<typename T1, int nDim1, typename T2, int nDim2> 00500 void integrateProcessingFunctional ( 00501 DotProcessingFunctional3D_TT<T1,nDim1,T2,nDim2>* functional, 00502 DotList3D const& dotList, 00503 MultiTensorField3D<T1,nDim1>& field1, 00504 MultiTensorField3D<T2,nDim2>& field2, plint level=0 ); 00505 00506 template<typename T1, typename T2, int nDim> 00507 void applyProcessingFunctional ( 00508 DotProcessingFunctional3D_ST<T1,T2,nDim>* functional, 00509 DotList3D const& dotList, 00510 MultiScalarField3D<T1>& field1, 00511 MultiTensorField3D<T2,nDim>& field2 ); 00512 00513 template<typename T1, typename T2, int nDim> 00514 void integrateProcessingFunctional ( 00515 DotProcessingFunctional3D_ST<T1,T2,nDim>* functional, 00516 DotList3D const& dotList, 00517 MultiScalarField3D<T1>& field1, 00518 MultiTensorField3D<T2,nDim>& field2, plint level=0 ); 00519 00520 template<typename T1, template<typename U> class Descriptor, typename T2> 00521 void applyProcessingFunctional ( 00522 DotProcessingFunctional3D_LS<T1,Descriptor,T2>* functional, 00523 DotList3D const& dotList, 00524 MultiBlockLattice3D<T1,Descriptor>& lattice, 00525 MultiScalarField3D<T2>& field ); 00526 00527 template<typename T1, template<typename U> class Descriptor, typename T2> 00528 void integrateProcessingFunctional ( 00529 DotProcessingFunctional3D_LS<T1,Descriptor,T2>* functional, 00530 DotList3D const& dotList, 00531 MultiBlockLattice3D<T1,Descriptor>& lattice, 00532 MultiScalarField3D<T2>& field, plint level=0 ); 00533 00534 template<typename T1, template<typename U> class Descriptor, typename T2, int nDim> 00535 void applyProcessingFunctional ( 00536 DotProcessingFunctional3D_LT<T1,Descriptor,T2,nDim>* functional, 00537 DotList3D const& dotList, 00538 MultiBlockLattice3D<T1,Descriptor>& lattice, 00539 MultiTensorField3D<T2,nDim>& field ); 00540 00541 template<typename T1, template<typename U> class Descriptor, typename T2, int nDim> 00542 void integrateProcessingFunctional ( 00543 DotProcessingFunctional3D_LT<T1,Descriptor,T2,nDim>* functional, 00544 DotList3D const& dotList, 00545 MultiBlockLattice3D<T1,Descriptor>& lattice, 00546 MultiTensorField3D<T2,nDim>& field, plint level=0 ); 00547 00548 00549 /* *************** Generic wrappers, bounded and boxed functionals ********** */ 00550 00551 void applyProcessingFunctional(BoundedBoxProcessingFunctional3D* functional, 00552 Box3D domain, std::vector<MultiBlock3D*> multiBlocks, 00553 plint boundaryWidth ); 00554 00555 void integrateProcessingFunctional ( 00556 BoundedBoxProcessingFunctional3D* functional, 00557 Box3D domain, std::vector<MultiBlock3D*> multiBlocks, 00558 plint boundaryWidth, plint level=0 ); 00559 00560 00561 template<typename T, template<typename U> class Descriptor> 00562 void applyProcessingFunctional ( 00563 BoundedLatticeBoxProcessingFunctional3D<T,Descriptor>* functional, 00564 Box3D domain, 00565 std::vector<MultiBlockLattice3D<T,Descriptor>*> lattices, 00566 plint boundaryWidth = Descriptor<T>::vicinity ); 00567 00568 template<typename T, template<typename U> class Descriptor> 00569 void integrateProcessingFunctional ( 00570 BoundedLatticeBoxProcessingFunctional3D<T,Descriptor>* functional, 00571 Box3D domain, std::vector<MultiBlockLattice3D<T,Descriptor>*> lattices, 00572 plint boundaryWidth = Descriptor<T>::vicinity, plint level=0 ); 00573 00574 template<typename T> 00575 void applyProcessingFunctional ( 00576 BoundedScalarFieldBoxProcessingFunctional3D<T>* functional, 00577 Box3D domain, std::vector<MultiScalarField3D<T>*> fields, 00578 plint boundaryWidth ); 00579 00580 template<typename T> 00581 void integrateProcessingFunctional ( 00582 BoundedScalarFieldBoxProcessingFunctional3D<T>* functional, 00583 Box3D domain, std::vector<MultiScalarField3D<T>*> fields, 00584 plint boundaryWidth ); 00585 00586 template<typename T, int nDim> 00587 void applyProcessingFunctional ( 00588 BoundedTensorFieldBoxProcessingFunctional3D<T,nDim>* functional, 00589 Box3D domain, std::vector<MultiTensorField3D<T,nDim>*> fields, 00590 plint boundaryWidth ); 00591 00592 template<typename T, int nDim> 00593 void integrateProcessingFunctional ( 00594 BoundedTensorFieldBoxProcessingFunctional3D<T,nDim>* functional, 00595 Box3D domain, 00596 std::vector<MultiTensorField3D<T,nDim>*> fields, plint boundaryWidth ); 00597 00598 00599 /* ** Typed wrappers with a single argument, bounded and boxed functionals * */ 00600 00601 template<typename T, template<typename U> class Descriptor> 00602 void applyProcessingFunctional ( 00603 BoundedBoxProcessingFunctional3D_L<T,Descriptor>* functional, 00604 Box3D domain, 00605 MultiBlockLattice3D<T,Descriptor>& lattice, 00606 plint boundaryWidth = Descriptor<T>::vicinity ); 00607 00608 template<typename T, template<typename U> class Descriptor> 00609 void integrateProcessingFunctional ( 00610 BoundedBoxProcessingFunctional3D_L<T,Descriptor>* functional, 00611 Box3D domain, 00612 MultiBlockLattice3D<T,Descriptor>& lattice, 00613 plint boundaryWidth = Descriptor<T>::vicinity, plint level=0 ); 00614 00615 template<typename T> 00616 void applyProcessingFunctional(BoundedBoxProcessingFunctional3D_S<T>* functional, 00617 Box3D domain, MultiScalarField3D<T>& field, 00618 plint boundaryWidth); 00619 00620 template<typename T> 00621 void integrateProcessingFunctional(BoundedBoxProcessingFunctional3D_S<T>* functional, 00622 Box3D domain, MultiScalarField3D<T>& field, 00623 plint boundaryWidth, plint level=0); 00624 00625 template<typename T, int nDim> 00626 void applyProcessingFunctional(BoundedBoxProcessingFunctional3D_T<T,nDim>* functional, 00627 Box3D domain, MultiTensorField3D<T,nDim>& field, 00628 plint boundaryWidth); 00629 00630 template<typename T, int nDim> 00631 void integrateProcessingFunctional ( 00632 BoundedBoxProcessingFunctional3D_T<T,nDim>* functional, 00633 Box3D domain, 00634 MultiTensorField3D<T,nDim>& field, 00635 plint boundaryWidth, plint level=0 ); 00636 00637 00638 template<typename T> 00639 void applyProcessingFunctional(BoundedBoxProcessingFunctional3D_N<T>* functional, 00640 Box3D domain, MultiNTensorField3D<T>& field, 00641 plint boundaryWidth); 00642 00643 template<typename T> 00644 void integrateProcessingFunctional ( 00645 BoundedBoxProcessingFunctional3D_N<T>* functional, 00646 Box3D domain, 00647 MultiNTensorField3D<T>& field, 00648 plint boundaryWidth, plint level=0 ); 00649 00650 00651 template<typename T> 00652 void applyProcessingFunctional(BoundedMaskedBoxProcessingFunctional3D_N<T>* functional, 00653 Box3D domain, 00654 MultiNTensorField3D<T>& field, 00655 MultiNTensorField3D<int>& mask, 00656 plint boundaryWidth); 00657 00658 template<typename T> 00659 void integrateProcessingFunctional ( 00660 BoundedMaskedBoxProcessingFunctional3D_N<T>* functional, 00661 Box3D domain, 00662 MultiNTensorField3D<T>& field, 00663 MultiNTensorField3D<int>& mask, 00664 plint boundaryWidth, plint level=0 ); 00665 00666 00667 /* ** Typed wrappers with two arguments, bounded and boxed functionals *** */ 00668 00669 template<typename T1, template<typename U1> class Descriptor1, 00670 typename T2, template<typename U2> class Descriptor2> 00671 void applyProcessingFunctional ( 00672 BoundedBoxProcessingFunctional3D_LL<T1,Descriptor1,T2,Descriptor2>* functional, 00673 Box3D domain, 00674 MultiBlockLattice3D<T1,Descriptor1>& lattice1, 00675 MultiBlockLattice3D<T2,Descriptor2>& lattice2, 00676 plint boundaryWidth = Descriptor1<T1>::vicinity ); 00677 00678 template<typename T1, template<typename U1> class Descriptor1, 00679 typename T2, template<typename U2> class Descriptor2> 00680 void integrateProcessingFunctional ( 00681 BoundedBoxProcessingFunctional3D_LL<T1,Descriptor1,T2,Descriptor2>* functional, 00682 Box3D domain, 00683 MultiBlockLattice3D<T1,Descriptor1>& lattice1, 00684 MultiBlockLattice3D<T2,Descriptor2>& lattice2, 00685 plint boundaryWidth = Descriptor1<T1>::vicinity, plint level=0 ); 00686 00687 template<typename T1, typename T2> 00688 void applyProcessingFunctional ( 00689 BoundedBoxProcessingFunctional3D_SS<T1,T2>* functional, 00690 Box3D domain, 00691 MultiScalarField3D<T1>& field1, 00692 MultiScalarField3D<T2>& field2, 00693 plint boundaryWidth ); 00694 00695 template<typename T1, typename T2> 00696 void integrateProcessingFunctional ( 00697 BoundedBoxProcessingFunctional3D_SS<T1,T2>* functional, 00698 Box3D domain, 00699 MultiScalarField3D<T1>& field1, 00700 MultiScalarField3D<T2>& field2, 00701 plint boundaryWidth, plint level=0 ); 00702 00703 template<typename T1, int nDim1, typename T2, int nDim2> 00704 void applyProcessingFunctional ( 00705 BoundedBoxProcessingFunctional3D_TT<T1,nDim1,T2,nDim2>* functional, 00706 Box3D domain, 00707 MultiTensorField3D<T1,nDim1>& field1, 00708 MultiTensorField3D<T2,nDim2>& field2, 00709 plint boundaryWidth ); 00710 00711 template<typename T1, int nDim1, typename T2, int nDim2> 00712 void integrateProcessingFunctional ( 00713 BoundedBoxProcessingFunctional3D_TT<T1,nDim1,T2,nDim2>* functional, 00714 Box3D domain, 00715 MultiTensorField3D<T1,nDim1>& field1, 00716 MultiTensorField3D<T2,nDim2>& field2, 00717 plint boundaryWidth, plint level=0 ); 00718 00719 template<typename T1, typename T2> 00720 void applyProcessingFunctional ( 00721 BoundedBoxProcessingFunctional3D_NN<T1,T2>* functional, 00722 Box3D domain, 00723 MultiNTensorField3D<T1>& field1, 00724 MultiNTensorField3D<T2>& field2, 00725 plint boundaryWidth ); 00726 00727 template<typename T1, typename T2> 00728 void integrateProcessingFunctional ( 00729 BoundedBoxProcessingFunctional3D_NN<T1,T2>* functional, 00730 Box3D domain, 00731 MultiNTensorField3D<T1>& field1, 00732 MultiNTensorField3D<T2>& field2, 00733 plint boundaryWidth, plint level=0 ); 00734 00735 template<typename T1, typename T2> 00736 void applyProcessingFunctional ( 00737 BoundedMaskedBoxProcessingFunctional3D_NN<T1,T2>* functional, 00738 Box3D domain, 00739 MultiNTensorField3D<T1>& field1, 00740 MultiNTensorField3D<T2>& field2, 00741 MultiNTensorField3D<int>& mask, 00742 plint boundaryWidth ); 00743 00744 template<typename T1, typename T2> 00745 void integrateProcessingFunctional ( 00746 BoundedMaskedBoxProcessingFunctional3D_NN<T1,T2>* functional, 00747 Box3D domain, 00748 MultiNTensorField3D<T1>& field1, 00749 MultiNTensorField3D<T2>& field2, 00750 MultiNTensorField3D<int>& mask, 00751 plint boundaryWidth, plint level=0 ); 00752 00753 template<typename T1, typename T2, int nDim> 00754 void applyProcessingFunctional ( 00755 BoundedBoxProcessingFunctional3D_ST<T1,T2,nDim>* functional, 00756 Box3D domain, 00757 MultiScalarField3D<T1>& field1, 00758 MultiTensorField3D<T2,nDim>& field2, 00759 plint boundaryWidth ); 00760 00761 template<typename T1, typename T2, int nDim> 00762 void integrateProcessingFunctional ( 00763 BoundedBoxProcessingFunctional3D_ST<T1,T2,nDim>* functional, 00764 Box3D domain, 00765 MultiScalarField3D<T1>& field1, 00766 MultiTensorField3D<T2,nDim>& field2, 00767 plint boundaryWidth, plint level=0 ); 00768 00769 template<typename T1, template<typename U> class Descriptor, typename T2> 00770 void applyProcessingFunctional ( 00771 BoundedBoxProcessingFunctional3D_LS<T1,Descriptor,T2>* functional, 00772 Box3D domain, 00773 MultiBlockLattice3D<T1,Descriptor>& lattice, 00774 MultiScalarField3D<T2>& field, 00775 plint boundaryWidth = Descriptor<T1>::vicinity ); 00776 00777 template<typename T1, template<typename U> class Descriptor, typename T2> 00778 void integrateProcessingFunctional ( 00779 BoundedBoxProcessingFunctional3D_LS<T1,Descriptor,T2>* functional, 00780 Box3D domain, 00781 MultiBlockLattice3D<T1,Descriptor>& lattice, 00782 MultiScalarField3D<T2>& field, 00783 plint boundaryWidth = Descriptor<T1>::vicinity, plint level=0 ); 00784 00785 template<typename T1, template<typename U> class Descriptor, typename T2, int nDim> 00786 void applyProcessingFunctional ( 00787 BoundedBoxProcessingFunctional3D_LT<T1,Descriptor,T2,nDim>* functional, 00788 Box3D domain, 00789 MultiBlockLattice3D<T1,Descriptor>& lattice, 00790 MultiTensorField3D<T2,nDim>& field, 00791 plint boundaryWidth = Descriptor<T1>::vicinity ); 00792 00793 template<typename T1, template<typename U> class Descriptor, typename T2, int nDim> 00794 void integrateProcessingFunctional ( 00795 BoundedBoxProcessingFunctional3D_LT<T1,Descriptor,T2,nDim>* functional, 00796 Box3D domain, 00797 MultiBlockLattice3D<T1,Descriptor>& lattice, 00798 MultiTensorField3D<T2,nDim>& field, 00799 plint boundaryWidth = Descriptor<T1>::vicinity, plint level=0 ); 00800 00801 template<typename T1, template<typename U> class Descriptor, typename T2> 00802 void applyProcessingFunctional ( 00803 BoundedBoxProcessingFunctional3D_LN<T1,Descriptor,T2>* functional, 00804 Box3D domain, 00805 MultiBlockLattice3D<T1,Descriptor>& lattice, 00806 MultiNTensorField3D<T2>& field, 00807 plint boundaryWidth = Descriptor<T1>::vicinity ); 00808 00809 template<typename T1, template<typename U> class Descriptor, typename T2, int nDim> 00810 void integrateProcessingFunctional ( 00811 BoundedBoxProcessingFunctional3D_LN<T1,Descriptor,T2>* functional, 00812 Box3D domain, 00813 MultiBlockLattice3D<T1,Descriptor>& lattice, 00814 MultiNTensorField3D<T2>& field, 00815 plint boundaryWidth = Descriptor<T1>::vicinity, plint level=0 ); 00816 00817 template<typename T1, template<typename U> class Descriptor, typename T2> 00818 void applyProcessingFunctional ( 00819 BoundedMaskedBoxProcessingFunctional3D_LN<T1,Descriptor,T2>* functional, 00820 Box3D domain, 00821 MultiBlockLattice3D<T1,Descriptor>& lattice, 00822 MultiNTensorField3D<T2>& field, 00823 MultiNTensorField3D<int>& mask, 00824 plint boundaryWidth = Descriptor<T1>::vicinity ); 00825 00826 template<typename T1, template<typename U> class Descriptor, typename T2> 00827 void integrateProcessingFunctional ( 00828 BoundedMaskedBoxProcessingFunctional3D_LN<T1,Descriptor,T2>* functional, 00829 Box3D domain, 00830 MultiBlockLattice3D<T1,Descriptor>& lattice, 00831 MultiNTensorField3D<T2>& field, 00832 MultiNTensorField3D<int>& mask, 00833 plint boundaryWidth = Descriptor<T1>::vicinity, plint level=0 ); 00834 00835 } // namespace plb 00836 00837 #endif // MULTI_DATA_PROCESSOR_WRAPPER_3D_H
1.6.3
1.6.3