$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 00025 00026 #ifndef MULTI_DATA_PROCESSOR_WRAPPER_3D_HH 00027 #define MULTI_DATA_PROCESSOR_WRAPPER_3D_HH 00028 00029 #include "multiBlock/multiDataProcessorWrapper3D.h" 00030 #include "multiBlock/multiBlockLattice3D.h" 00031 #include "multiBlock/multiDataField3D.h" 00032 #include "atomicBlock/dataProcessor3D.h" 00033 #include "multiBlock/multiBlockOperations3D.h" 00034 #include "core/plbDebug.h" 00035 00036 namespace plb { 00037 00038 /* *************** LatticeBoxProcessing3D ****************************************** */ 00039 00040 template<typename T, template<typename U> class Descriptor> 00041 void applyProcessingFunctional ( 00042 LatticeBoxProcessingFunctional3D<T,Descriptor>* functional, 00043 Box3D domain, 00044 std::vector<MultiBlockLattice3D<T,Descriptor>*> lattices ) 00045 { 00046 std::vector<MultiBlock3D*> multiBlocks(lattices.size()); 00047 for (pluint iLattice=0; iLattice<lattices.size(); ++iLattice) { 00048 multiBlocks[iLattice] = dynamic_cast<MultiBlock3D*>(lattices[iLattice]); 00049 } 00050 executeDataProcessor( BoxProcessorGenerator3D(functional, domain), multiBlocks ); 00051 } 00052 00053 template<typename T, template<typename U> class Descriptor> 00054 void integrateProcessingFunctional ( 00055 LatticeBoxProcessingFunctional3D<T,Descriptor>* functional, 00056 Box3D domain, 00057 std::vector<MultiBlockLattice3D<T,Descriptor>*> lattices, plint level ) 00058 { 00059 std::vector<MultiBlock3D*> multiBlocks(lattices.size()); 00060 for (pluint iLattice=0; iLattice<lattices.size(); ++iLattice) { 00061 multiBlocks[iLattice] = dynamic_cast<MultiBlock3D*>(lattices[iLattice]); 00062 } 00063 addInternalProcessor( BoxProcessorGenerator3D(functional, domain), 00064 multiBlocks, level ); 00065 } 00066 00067 00068 /* *************** ScalarFieldBoxProcessing3D ******************************* */ 00069 00070 template<typename T> 00071 void applyProcessingFunctional(ScalarFieldBoxProcessingFunctional3D<T>* functional, 00072 Box3D domain, 00073 std::vector<MultiScalarField3D<T>*> fields ) 00074 { 00075 std::vector<MultiBlock3D*> multiBlocks(fields.size()); 00076 for (pluint iField=0; iField<fields.size(); ++iField) { 00077 multiBlocks[iField] = dynamic_cast<MultiBlock3D*>(fields[iField]); 00078 } 00079 executeDataProcessor( BoxProcessorGenerator3D(functional, domain), multiBlocks ); 00080 } 00081 00082 template<typename T> 00083 void integrateProcessingFunctional(ScalarFieldBoxProcessingFunctional3D<T>* functional, 00084 Box3D domain, 00085 std::vector<MultiScalarField3D<T>*> fields, plint level ) 00086 { 00087 std::vector<MultiBlock3D*> multiBlocks(fields.size()); 00088 for (pluint iField=0; iField<fields.size(); ++iField) { 00089 multiBlocks[iField] = dynamic_cast<MultiBlock3D*>(fields[iField]); 00090 } 00091 addInternalProcessor( BoxProcessorGenerator3D(functional, domain), 00092 multiBlocks, level ); 00093 } 00094 00095 00096 /* *************** MultiTensorFieldBoxProcessing3D ******************************* */ 00097 00098 template<typename T, int nDim> 00099 void applyProcessingFunctional ( 00100 TensorFieldBoxProcessingFunctional3D<T,nDim>* functional, 00101 Box3D domain, 00102 std::vector<MultiTensorField3D<T,nDim>*> fields ) 00103 { 00104 std::vector<MultiBlock3D*> multiBlocks(fields.size()); 00105 for (pluint iField=0; iField<fields.size(); ++iField) { 00106 multiBlocks[iField] = dynamic_cast<MultiBlock3D*>(fields[iField]); 00107 } 00108 executeDataProcessor( BoxProcessorGenerator3D(functional, domain), multiBlocks ); 00109 } 00110 00111 template<typename T, int nDim> 00112 void integrateProcessingFunctional ( 00113 TensorFieldBoxProcessingFunctional3D<T,nDim>* functional, 00114 Box3D domain, 00115 std::vector<MultiTensorField3D<T,nDim>*> fields, plint level ) 00116 { 00117 std::vector<MultiBlock3D*> multiBlocks(fields.size()); 00118 for (pluint iField=0; iField<fields.size(); ++iField) { 00119 multiBlocks[iField] = dynamic_cast<MultiBlock3D*>(fields[iField]); 00120 } 00121 addInternalProcessor( BoxProcessorGenerator3D(functional, domain), 00122 multiBlocks, level ); 00123 } 00124 00125 /* *************** MultiNTensorFieldBoxProcessing3D ******************************* */ 00126 00127 template<typename T> 00128 void applyProcessingFunctional ( 00129 NTensorFieldBoxProcessingFunctional3D<T>* functional, 00130 Box3D domain, 00131 std::vector<MultiNTensorField3D<T>*> fields ) 00132 { 00133 std::vector<MultiBlock3D*> multiBlocks(fields.size()); 00134 for (pluint iField=0; iField<fields.size(); ++iField) { 00135 multiBlocks[iField] = dynamic_cast<MultiBlock3D*>(fields[iField]); 00136 } 00137 executeDataProcessor( BoxProcessorGenerator3D(functional, domain), multiBlocks ); 00138 } 00139 00140 template<typename T> 00141 void applyProcessingFunctional ( 00142 MaskedNTensorFieldBoxProcessingFunctional3D<T>* functional, 00143 Box3D domain, 00144 std::vector<MultiNTensorField3D<T>*> fields, 00145 MultiNTensorField3D<int>& mask ) 00146 { 00147 std::vector<MultiBlock3D*> multiBlocks(fields.size()+1); 00148 for (pluint iField=0; iField<fields.size(); ++iField) { 00149 multiBlocks[iField] = dynamic_cast<MultiBlock3D*>(fields[iField]); 00150 } 00151 multiBlocks[fields.size()] = dynamic_cast<MultiBlock3D*>(&mask); 00152 executeDataProcessor( BoxProcessorGenerator3D(functional, domain), multiBlocks ); 00153 } 00154 00155 template<typename T> 00156 void integrateProcessingFunctional ( 00157 NTensorFieldBoxProcessingFunctional3D<T>* functional, 00158 Box3D domain, 00159 std::vector<MultiNTensorField3D<T>*> fields, plint level ) 00160 { 00161 std::vector<MultiBlock3D*> multiBlocks(fields.size()); 00162 for (pluint iField=0; iField<fields.size(); ++iField) { 00163 multiBlocks[iField] = dynamic_cast<MultiBlock3D*>(fields[iField]); 00164 } 00165 addInternalProcessor( BoxProcessorGenerator3D(functional, domain), 00166 multiBlocks, level ); 00167 } 00168 00169 template<typename T> 00170 void integrateProcessingFunctional ( 00171 MaskedNTensorFieldBoxProcessingFunctional3D<T>* functional, 00172 Box3D domain, 00173 std::vector<MultiNTensorField3D<T>*> fields, 00174 MultiNTensorField3D<int>& mask, 00175 plint level ) 00176 { 00177 std::vector<MultiBlock3D*> multiBlocks(fields.size()+1); 00178 for (pluint iField=0; iField<fields.size(); ++iField) { 00179 multiBlocks[iField] = dynamic_cast<MultiBlock3D*>(fields[iField]); 00180 } 00181 multiBlocks[fields.size()] = dynamic_cast<MultiBlock3D*>(&mask); 00182 addInternalProcessor( BoxProcessorGenerator3D(functional, domain), 00183 multiBlocks, level ); 00184 } 00185 00186 /* *************** BoxProcessing3D_L ******************************************* */ 00187 00188 template<typename T, template<typename U> class Descriptor> 00189 void applyProcessingFunctional(BoxProcessingFunctional3D_L<T,Descriptor>* functional, 00190 Box3D domain, MultiBlockLattice3D<T,Descriptor>& lattice) 00191 { 00192 executeDataProcessor( BoxProcessorGenerator3D(functional, domain), lattice ); 00193 } 00194 00195 template<typename T, template<typename U> class Descriptor> 00196 void integrateProcessingFunctional ( 00197 BoxProcessingFunctional3D_L<T,Descriptor>* functional, 00198 Box3D domain, MultiBlockLattice3D<T,Descriptor>& lattice, plint level ) 00199 { 00200 addInternalProcessor( BoxProcessorGenerator3D(functional, domain), lattice, level ); 00201 } 00202 00203 00204 template<typename T, template<typename U> class Descriptor> 00205 void applyProcessingFunctional(MaskedBoxProcessingFunctional3D_L<T,Descriptor>* functional, 00206 Box3D domain, 00207 MultiBlockLattice3D<T,Descriptor>& lattice, 00208 MultiNTensorField3D<int>& mask) 00209 { 00210 executeDataProcessor( BoxProcessorGenerator3D(functional, domain), lattice, mask ); 00211 } 00212 00213 template<typename T, template<typename U> class Descriptor> 00214 void integrateProcessingFunctional ( 00215 MaskedBoxProcessingFunctional3D_L<T,Descriptor>* functional, 00216 Box3D domain, 00217 MultiBlockLattice3D<T,Descriptor>& lattice, 00218 MultiNTensorField3D<int>& mask, 00219 plint level ) 00220 { 00221 addInternalProcessor( BoxProcessorGenerator3D(functional, domain), lattice, mask, level ); 00222 } 00223 00224 00225 /* *************** BoxProcessing3D_S ******************************************* */ 00226 00227 template<typename T> 00228 void applyProcessingFunctional(BoxProcessingFunctional3D_S<T>* functional, 00229 Box3D domain, MultiScalarField3D<T>& field) 00230 { 00231 executeDataProcessor( BoxProcessorGenerator3D(functional, domain), field ); 00232 } 00233 00234 template<typename T> 00235 void integrateProcessingFunctional(BoxProcessingFunctional3D_S<T>* functional, 00236 Box3D domain, MultiScalarField3D<T>& field, plint level) 00237 { 00238 addInternalProcessor( BoxProcessorGenerator3D(functional, domain), field, level ); 00239 } 00240 00241 00242 /* *************** BoxProcessing3D_T ******************************************* */ 00243 00244 template<typename T, int nDim> 00245 void applyProcessingFunctional(BoxProcessingFunctional3D_T<T,nDim>* functional, 00246 Box3D domain, MultiTensorField3D<T,nDim>& field) 00247 { 00248 executeDataProcessor( BoxProcessorGenerator3D(functional, domain), field ); 00249 } 00250 00251 template<typename T, int nDim> 00252 void integrateProcessingFunctional(BoxProcessingFunctional3D_T<T,nDim>* functional, 00253 Box3D domain, MultiTensorField3D<T,nDim>& field, 00254 plint level) 00255 { 00256 addInternalProcessor( BoxProcessorGenerator3D(functional, domain), field, level ); 00257 } 00258 00259 /* *************** BoxProcessing3D_N ******************************************* */ 00260 00261 template<typename T> 00262 void applyProcessingFunctional(BoxProcessingFunctional3D_N<T>* functional, 00263 Box3D domain, MultiNTensorField3D<T>& field) 00264 { 00265 executeDataProcessor( BoxProcessorGenerator3D(functional, domain), field ); 00266 } 00267 00268 template<typename T> 00269 void integrateProcessingFunctional(BoxProcessingFunctional3D_N<T>* functional, 00270 Box3D domain, MultiNTensorField3D<T>& field, 00271 plint level) 00272 { 00273 addInternalProcessor( BoxProcessorGenerator3D(functional, domain), field, level ); 00274 } 00275 00276 /* *************** MaskedBoxProcessing3D_N ******************************************* */ 00277 00278 template<typename T> 00279 void applyProcessingFunctional(MaskedBoxProcessingFunctional3D_N<T>* functional, 00280 Box3D domain, 00281 MultiNTensorField3D<T>& field, 00282 MultiNTensorField3D<int>& mask) 00283 { 00284 executeDataProcessor( BoxProcessorGenerator3D(functional, domain), field, mask ); 00285 } 00286 00287 template<typename T> 00288 void integrateProcessingFunctional(MaskedBoxProcessingFunctional3D_N<T>* functional, 00289 Box3D domain, 00290 MultiNTensorField3D<T>& field, 00291 MultiNTensorField3D<int>& mask, 00292 plint level) 00293 { 00294 addInternalProcessor( BoxProcessorGenerator3D(functional, domain), field, mask, level ); 00295 } 00296 00297 /* *************** BoxProcessing3D_LL******************************************* */ 00298 00299 template<typename T1, template<typename U1> class Descriptor1, 00300 typename T2, template<typename U2> class Descriptor2> 00301 void applyProcessingFunctional ( 00302 BoxProcessingFunctional3D_LL<T1,Descriptor1,T2,Descriptor2>* functional, 00303 Box3D domain, 00304 MultiBlockLattice3D<T1,Descriptor1>& lattice1, 00305 MultiBlockLattice3D<T2,Descriptor2>& lattice2 ) 00306 { 00307 executeDataProcessor( BoxProcessorGenerator3D(functional, domain), 00308 lattice1, lattice2 ); 00309 } 00310 00311 template<typename T1, template<typename U1> class Descriptor1, 00312 typename T2, template<typename U2> class Descriptor2> 00313 void integrateProcessingFunctional ( 00314 BoxProcessingFunctional3D_LL<T1,Descriptor1,T2,Descriptor2>* functional, Box3D domain, 00315 MultiBlockLattice3D<T1,Descriptor1>& lattice1, 00316 MultiBlockLattice3D<T2,Descriptor2>& lattice2, plint level ) 00317 { 00318 addInternalProcessor( BoxProcessorGenerator3D(functional, domain), 00319 lattice1, lattice2, level ); 00320 } 00321 00322 00323 /* *************** BoxProcessing3D_SS ****************************************** */ 00324 00325 template<typename T1, typename T2> 00326 void applyProcessingFunctional(BoxProcessingFunctional3D_SS<T1,T2>* functional, 00327 Box3D domain, 00328 MultiScalarField3D<T1>& field1, 00329 MultiScalarField3D<T2>& field2 ) 00330 { 00331 executeDataProcessor( BoxProcessorGenerator3D(functional, domain), 00332 field1, field2 ); 00333 } 00334 00335 template<typename T1, typename T2> 00336 void integrateProcessingFunctional(BoxProcessingFunctional3D_SS<T1,T2>* functional, 00337 Box3D domain, 00338 MultiScalarField3D<T1>& field1, 00339 MultiScalarField3D<T2>& field2, plint level) 00340 { 00341 addInternalProcessor( BoxProcessorGenerator3D(functional, domain), 00342 field1, field2, level ); 00343 } 00344 00345 00346 /* *************** BoxProcessing3D_TT ****************************************** */ 00347 00348 template<typename T1, int nDim1, typename T2, int nDim2> 00349 void applyProcessingFunctional ( 00350 BoxProcessingFunctional3D_TT<T1,nDim1,T2,nDim2>* functional, 00351 Box3D domain, 00352 MultiTensorField3D<T1,nDim1>& field1, 00353 MultiTensorField3D<T2,nDim2>& field2 ) 00354 { 00355 executeDataProcessor( BoxProcessorGenerator3D(functional, domain), 00356 field1, field2 ); 00357 } 00358 00359 template<typename T1, int nDim1, typename T2, int nDim2> 00360 void integrateProcessingFunctional ( 00361 BoxProcessingFunctional3D_TT<T1,nDim1,T2,nDim2>* functional, 00362 Box3D domain, 00363 MultiTensorField3D<T1,nDim1>& field1, 00364 MultiTensorField3D<T2,nDim2>& field2, plint level) 00365 { 00366 addInternalProcessor( BoxProcessorGenerator3D(functional, domain), 00367 field1, field2, level ); 00368 } 00369 00370 00371 /* *************** BoxProcessing3D_NN ****************************************** */ 00372 00373 template<typename T1, typename T2> 00374 void applyProcessingFunctional ( 00375 BoxProcessingFunctional3D_NN<T1,T2>* functional, 00376 Box3D domain, 00377 MultiNTensorField3D<T1>& field1, 00378 MultiNTensorField3D<T2>& field2 ) 00379 { 00380 executeDataProcessor( BoxProcessorGenerator3D(functional, domain), 00381 field1, field2 ); 00382 } 00383 00384 template<typename T1, typename T2> 00385 void integrateProcessingFunctional ( 00386 BoxProcessingFunctional3D_NN<T1,T2>* functional, 00387 Box3D domain, 00388 MultiNTensorField3D<T1>& field1, 00389 MultiNTensorField3D<T2>& field2, plint level) 00390 { 00391 addInternalProcessor( BoxProcessorGenerator3D(functional, domain), 00392 field1, field2, level ); 00393 } 00394 00395 00396 /* *************** MaskedBoxProcessing3D_NN ****************************************** */ 00397 00398 template<typename T1, typename T2> 00399 void applyProcessingFunctional ( 00400 MaskedBoxProcessingFunctional3D_NN<T1,T2>* functional, 00401 Box3D domain, 00402 MultiNTensorField3D<T1>& field1, 00403 MultiNTensorField3D<T2>& field2, 00404 MultiNTensorField3D<int>& mask ) 00405 { 00406 std::vector<MultiBlock3D*> multiBlocks(3); 00407 multiBlocks[0] = dynamic_cast<MultiBlock3D*>(&field1); 00408 multiBlocks[1] = dynamic_cast<MultiBlock3D*>(&field2); 00409 multiBlocks[2] = dynamic_cast<MultiBlock3D*>(&mask); 00410 executeDataProcessor( BoxProcessorGenerator3D(functional, domain), 00411 multiBlocks ); 00412 } 00413 00414 template<typename T1, typename T2> 00415 void integrateProcessingFunctional ( 00416 MaskedBoxProcessingFunctional3D_NN<T1,T2>* functional, 00417 Box3D domain, 00418 MultiNTensorField3D<T1>& field1, 00419 MultiNTensorField3D<T2>& field2, 00420 MultiNTensorField3D<int>& mask, 00421 plint level) 00422 { 00423 std::vector<MultiBlock3D*> multiBlocks(3); 00424 multiBlocks[0] = dynamic_cast<MultiBlock3D*>(&field1); 00425 multiBlocks[1] = dynamic_cast<MultiBlock3D*>(&field2); 00426 multiBlocks[2] = dynamic_cast<MultiBlock3D*>(&mask); 00427 addInternalProcessor( BoxProcessorGenerator3D(functional, domain), 00428 multiBlocks ); 00429 } 00430 00431 00432 /* *************** BoxProcessing3D_ST ****************************************** */ 00433 00434 template<typename T1, typename T2, int nDim> 00435 void applyProcessingFunctional(BoxProcessingFunctional3D_ST<T1,T2,nDim>* functional, 00436 Box3D domain, 00437 MultiScalarField3D<T1>& field1, 00438 MultiTensorField3D<T2,nDim>& field2 ) 00439 { 00440 executeDataProcessor( BoxProcessorGenerator3D(functional, domain), 00441 field1, field2 ); 00442 } 00443 00444 template<typename T1, typename T2, int nDim> 00445 void integrateProcessingFunctional(BoxProcessingFunctional3D_ST<T1,T2,nDim>* functional, 00446 Box3D domain, 00447 MultiScalarField3D<T1>& field1, 00448 MultiTensorField3D<T2,nDim>& field2, plint level) 00449 { 00450 addInternalProcessor( BoxProcessorGenerator3D(functional, domain), 00451 field1, field2, level ); 00452 } 00453 00454 00455 /* *************** BoxProcessing3D_SN ****************************************** */ 00456 00457 template<typename T1, typename T2> 00458 void applyProcessingFunctional(BoxProcessingFunctional3D_SN<T1,T2>* functional, 00459 Box3D domain, 00460 MultiScalarField3D<T1>& field1, 00461 MultiNTensorField3D<T2>& field2 ) 00462 { 00463 executeDataProcessor( BoxProcessorGenerator3D(functional, domain), 00464 field1, field2 ); 00465 } 00466 00467 template<typename T1, typename T2> 00468 void integrateProcessingFunctional(BoxProcessingFunctional3D_SN<T1,T2>* functional, 00469 Box3D domain, 00470 MultiScalarField3D<T1>& field1, 00471 MultiNTensorField3D<T2>& field2, plint level) 00472 { 00473 addInternalProcessor( BoxProcessorGenerator3D(functional, domain), 00474 field1, field2, level ); 00475 } 00476 00477 00478 /* *************** BoxProcessing3D_LS ****************************************** */ 00479 00480 template<typename T1, template<typename U> class Descriptor, typename T2> 00481 void applyProcessingFunctional ( 00482 BoxProcessingFunctional3D_LS<T1,Descriptor,T2>* functional, 00483 Box3D domain, 00484 MultiBlockLattice3D<T1,Descriptor>& lattice, 00485 MultiScalarField3D<T2>& field ) 00486 { 00487 executeDataProcessor( BoxProcessorGenerator3D(functional, domain), 00488 lattice, field ); 00489 } 00490 00491 template<typename T1, template<typename U> class Descriptor, typename T2> 00492 void integrateProcessingFunctional ( 00493 BoxProcessingFunctional3D_LS<T1,Descriptor,T2>* functional, 00494 Box3D domain, 00495 MultiBlockLattice3D<T1,Descriptor>& lattice, 00496 MultiScalarField3D<T2>& field, plint level ) 00497 { 00498 addInternalProcessor( BoxProcessorGenerator3D(functional, domain), 00499 lattice, field, level ); 00500 } 00501 00502 00503 /* *************** BoxProcessing3D_LT ****************************************** */ 00504 00505 template<typename T1, template<typename U> class Descriptor, typename T2, int nDim> 00506 void applyProcessingFunctional ( 00507 BoxProcessingFunctional3D_LT<T1,Descriptor,T2,nDim>* functional, 00508 Box3D domain, 00509 MultiBlockLattice3D<T1,Descriptor>& lattice, 00510 MultiTensorField3D<T2,nDim>& field ) 00511 { 00512 executeDataProcessor( BoxProcessorGenerator3D(functional, domain), 00513 lattice, field ); 00514 } 00515 00516 template<typename T1, template<typename U> class Descriptor, typename T2, int nDim> 00517 void integrateProcessingFunctional ( 00518 BoxProcessingFunctional3D_LT<T1,Descriptor,T2,nDim>* functional, 00519 Box3D domain, 00520 MultiBlockLattice3D<T1,Descriptor>& lattice, 00521 MultiTensorField3D<T2,nDim>& field, plint level ) 00522 { 00523 addInternalProcessor( BoxProcessorGenerator3D(functional, domain), 00524 lattice, field, level ); 00525 } 00526 00527 /* *************** BoxProcessing3D_LN ****************************************** */ 00528 00529 template<typename T1, template<typename U> class Descriptor, typename T2> 00530 void applyProcessingFunctional ( 00531 BoxProcessingFunctional3D_LN<T1,Descriptor,T2>* functional, 00532 Box3D domain, 00533 MultiBlockLattice3D<T1,Descriptor>& lattice, 00534 MultiNTensorField3D<T2>& field ) 00535 { 00536 executeDataProcessor( BoxProcessorGenerator3D(functional, domain), 00537 lattice, field ); 00538 } 00539 00540 template<typename T1, template<typename U> class Descriptor, typename T2> 00541 void integrateProcessingFunctional ( 00542 BoxProcessingFunctional3D_LN<T1,Descriptor,T2>* functional, 00543 Box3D domain, 00544 MultiBlockLattice3D<T1,Descriptor>& lattice, 00545 MultiNTensorField3D<T2>& field, plint level ) 00546 { 00547 addInternalProcessor( BoxProcessorGenerator3D(functional, domain), 00548 lattice, field, level ); 00549 } 00550 00551 /* *************** MaskedBoxProcessing3D_LN ****************************************** */ 00552 00553 template<typename T1, template<typename U> class Descriptor, typename T2> 00554 void applyProcessingFunctional ( 00555 MaskedBoxProcessingFunctional3D_LN<T1,Descriptor,T2>* functional, 00556 Box3D domain, 00557 MultiBlockLattice3D<T1,Descriptor>& lattice, 00558 MultiNTensorField3D<T2>& field, 00559 MultiNTensorField3D<int>& mask ) 00560 { 00561 std::vector<MultiBlock3D*> multiBlocks(3); 00562 multiBlocks[0] = dynamic_cast<MultiBlock3D*>(&lattice); 00563 multiBlocks[1] = dynamic_cast<MultiBlock3D*>(&field); 00564 multiBlocks[2] = dynamic_cast<MultiBlock3D*>(&mask); 00565 executeDataProcessor( BoxProcessorGenerator3D(functional, domain), 00566 multiBlocks ); 00567 } 00568 00569 template<typename T1, template<typename U> class Descriptor, typename T2> 00570 void integrateProcessingFunctional ( 00571 MaskedBoxProcessingFunctional3D_LN<T1,Descriptor,T2>* functional, 00572 Box3D domain, 00573 MultiBlockLattice3D<T1,Descriptor>& lattice, 00574 MultiNTensorField3D<T2>& field, 00575 MultiNTensorField3D<int>& mask, 00576 plint level ) 00577 { 00578 std::vector<MultiBlock3D*> multiBlocks(3); 00579 multiBlocks[0] = dynamic_cast<MultiBlock3D*>(&lattice); 00580 multiBlocks[1] = dynamic_cast<MultiBlock3D*>(&field); 00581 multiBlocks[2] = dynamic_cast<MultiBlock3D*>(&mask); 00582 addInternalProcessor( BoxProcessorGenerator3D(functional, domain), 00583 multiBlocks, level ); 00584 } 00585 00586 /* *************** LatticeDotProcessing3D ****************************************** */ 00587 00588 template<typename T, template<typename U> class Descriptor> 00589 void applyProcessingFunctional ( 00590 LatticeDotProcessingFunctional3D<T,Descriptor>* functional, 00591 DotList3D const& dotList, 00592 std::vector<MultiBlockLattice3D<T,Descriptor>*> lattices ) 00593 { 00594 std::vector<MultiBlock3D*> multiBlocks(lattices.size()); 00595 for (pluint iLattice=0; iLattice<lattices.size(); ++iLattice) { 00596 multiBlocks[iLattice] = dynamic_cast<MultiBlock3D*>(lattices[iLattice]); 00597 } 00598 executeDataProcessor( DotProcessorGenerator3D(functional, dotList), multiBlocks ); 00599 } 00600 00601 00602 template<typename T, template<typename U> class Descriptor> 00603 void integrateProcessingFunctional ( 00604 LatticeDotProcessingFunctional3D<T,Descriptor>* functional, 00605 DotList3D const& dotList, 00606 std::vector<MultiBlockLattice3D<T,Descriptor>*> lattices, plint level ) 00607 { 00608 std::vector<MultiBlock3D*> multiBlocks(lattices.size()); 00609 for (pluint iLattice=0; iLattice<lattices.size(); ++iLattice) { 00610 multiBlocks[iLattice] = dynamic_cast<MultiBlock3D*>(lattices[iLattice]); 00611 } 00612 addInternalProcessor( DotProcessorGenerator3D(functional, dotList), 00613 multiBlocks, level ); 00614 } 00615 00616 00617 /* *************** ScalarFieldDotProcessing3D ****************************************** */ 00618 00619 template<typename T> 00620 void applyProcessingFunctional(ScalarFieldDotProcessingFunctional3D<T>* functional, 00621 DotList3D const& dotList, 00622 std::vector<MultiScalarField3D<T>*> fields ) 00623 { 00624 std::vector<MultiBlock3D*> multiBlocks(fields.size()); 00625 for (pluint iField=0; iField<fields.size(); ++iField) { 00626 multiBlocks[iField] = dynamic_cast<MultiBlock3D*>(fields[iField]); 00627 } 00628 executeDataProcessor( DotProcessorGenerator3D(functional, dotList), multiBlocks ); 00629 } 00630 00631 00632 template<typename T> 00633 void integrateProcessingFunctional(ScalarFieldDotProcessingFunctional3D<T>* functional, 00634 DotList3D const& dotList, 00635 std::vector<MultiScalarField3D<T>*> fields, plint level ) 00636 { 00637 std::vector<MultiBlock3D*> multiBlocks(fields.size()); 00638 for (pluint iField=0; iField<fields.size(); ++iField) { 00639 multiBlocks[iField] = dynamic_cast<MultiBlock3D*>(fields[iField]); 00640 } 00641 addInternalProcessor( DotProcessorGenerator3D(functional, dotList), 00642 multiBlocks, level ); 00643 } 00644 00645 00646 /* *************** TensorFieldDotProcessing3D ****************************************** */ 00647 00648 template<typename T, int nDim> 00649 void applyProcessingFunctional ( 00650 TensorFieldDotProcessingFunctional3D<T,nDim>* functional, 00651 DotList3D const& dotList, 00652 std::vector<MultiTensorField3D<T,nDim>*> fields ) 00653 { 00654 std::vector<MultiBlock3D*> multiBlocks(fields.size()); 00655 for (pluint iField=0; iField<fields.size(); ++iField) { 00656 multiBlocks[iField] = dynamic_cast<MultiBlock3D*>(fields[iField]); 00657 } 00658 executeDataProcessor( DotProcessorGenerator3D(functional, dotList), multiBlocks ); 00659 } 00660 00661 template<typename T, int nDim> 00662 void integrateProcessingFunctional ( 00663 TensorFieldDotProcessingFunctional3D<T,nDim>* functional, 00664 DotList3D const& dotList, 00665 std::vector<MultiTensorField3D<T,nDim>*> fields, plint level ) 00666 { 00667 std::vector<MultiBlock3D*> multiBlocks(fields.size()); 00668 for (pluint iField=0; iField<fields.size(); ++iField) { 00669 multiBlocks[iField] = dynamic_cast<MultiBlock3D*>(fields[iField]); 00670 } 00671 addInternalProcessor( DotProcessorGenerator3D(functional, dotList), 00672 multiBlocks, level ); 00673 } 00674 00675 /* *************** NTensorFieldDotProcessing3D ****************************************** */ 00676 00677 template<typename T> 00678 void applyProcessingFunctional ( 00679 NTensorFieldDotProcessingFunctional3D<T>* functional, 00680 DotList3D const& dotList, 00681 std::vector<MultiNTensorField3D<T>*> fields ) 00682 { 00683 std::vector<MultiBlock3D*> multiBlocks(fields.size()); 00684 for (pluint iField=0; iField<fields.size(); ++iField) { 00685 multiBlocks[iField] = dynamic_cast<MultiBlock3D*>(fields[iField]); 00686 } 00687 executeDataProcessor( DotProcessorGenerator3D(functional, dotList), multiBlocks ); 00688 } 00689 00690 template<typename T> 00691 void integrateProcessingFunctional ( 00692 NTensorFieldDotProcessingFunctional3D<T>* functional, 00693 DotList3D const& dotList, 00694 std::vector<MultiNTensorField3D<T>*> fields, plint level ) 00695 { 00696 std::vector<MultiBlock3D*> multiBlocks(fields.size()); 00697 for (pluint iField=0; iField<fields.size(); ++iField) { 00698 multiBlocks[iField] = dynamic_cast<MultiBlock3D*>(fields[iField]); 00699 } 00700 addInternalProcessor( DotProcessorGenerator3D(functional, dotList), 00701 multiBlocks, level ); 00702 } 00703 00704 /* *************** DotProcessing3D_L ******************************************* */ 00705 00706 template<typename T, template<typename U> class Descriptor> 00707 void applyProcessingFunctional(DotProcessingFunctional3D_L<T,Descriptor>* functional, 00708 DotList3D const& dotList, 00709 MultiBlockLattice3D<T,Descriptor>& lattice) 00710 { 00711 executeDataProcessor( DotProcessorGenerator3D(functional, dotList), lattice ); 00712 } 00713 00714 template<typename T, template<typename U> class Descriptor> 00715 void integrateProcessingFunctional(DotProcessingFunctional3D_L<T,Descriptor>* functional, 00716 DotList3D const& dotList, 00717 MultiBlockLattice3D<T,Descriptor>& lattice, plint level) 00718 { 00719 addInternalProcessor( DotProcessorGenerator3D(functional, dotList), lattice, level ); 00720 } 00721 00722 00723 /* *************** DotProcessing3D_S ******************************************* */ 00724 00725 template<typename T> 00726 void applyProcessingFunctional(DotProcessingFunctional3D_S<T>* functional, 00727 DotList3D const& dotList, MultiScalarField3D<T>& field) 00728 { 00729 executeDataProcessor( DotProcessorGenerator3D(functional, dotList), field ); 00730 } 00731 00732 template<typename T> 00733 void integrateProcessingFunctional(DotProcessingFunctional3D_S<T>* functional, 00734 DotList3D const& dotList, MultiScalarField3D<T>& field, 00735 plint level) 00736 { 00737 addInternalProcessor( DotProcessorGenerator3D(functional, dotList), field, level ); 00738 } 00739 00740 00741 /* *************** DotProcessing3D_T ******************************************* */ 00742 00743 template<typename T, int nDim> 00744 void applyProcessingFunctional(DotProcessingFunctional3D_T<T,nDim>* functional, 00745 DotList3D const& dotList, 00746 MultiTensorField3D<T,nDim>& field) 00747 { 00748 executeDataProcessor( DotProcessorGenerator3D(functional, dotList), field ); 00749 } 00750 00751 template<typename T, int nDim> 00752 void integrateProcessingFunctional(DotProcessingFunctional3D_T<T,nDim>* functional, 00753 DotList3D const& dotList, 00754 MultiTensorField3D<T,nDim>& field, plint level) 00755 { 00756 addInternalProcessor( DotProcessorGenerator3D(functional, dotList), field, level ); 00757 } 00758 00759 00760 /* *************** DotProcessing3D_N ******************************************* */ 00761 00762 template<typename T> 00763 void applyProcessingFunctional(DotProcessingFunctional3D_N<T>* functional, 00764 DotList3D const& dotList, 00765 MultiNTensorField3D<T>& field) 00766 { 00767 executeDataProcessor( DotProcessorGenerator3D(functional, dotList), field ); 00768 } 00769 00770 template<typename T> 00771 void integrateProcessingFunctional(DotProcessingFunctional3D_N<T>* functional, 00772 DotList3D const& dotList, 00773 MultiNTensorField3D<T>& field, plint level) 00774 { 00775 addInternalProcessor( DotProcessorGenerator3D(functional, dotList), field, level ); 00776 } 00777 00778 00779 /* *************** DotProcessing3D_LL******************************************* */ 00780 00781 template<typename T1, template<typename U1> class Descriptor1, 00782 typename T2, template<typename U2> class Descriptor2> 00783 void applyProcessingFunctional ( 00784 DotProcessingFunctional3D_LL<T1,Descriptor1,T2,Descriptor2>* functional, 00785 DotList3D const& dotList, 00786 MultiBlockLattice3D<T1,Descriptor1>& lattice1, 00787 MultiBlockLattice3D<T2,Descriptor2>& lattice2 ) 00788 { 00789 executeDataProcessor( DotProcessorGenerator3D(functional, dotList), 00790 lattice1, lattice2 ); 00791 } 00792 00793 template<typename T1, template<typename U1> class Descriptor1, 00794 typename T2, template<typename U2> class Descriptor2> 00795 void integrateProcessingFunctional ( 00796 DotProcessingFunctional3D_LL<T1,Descriptor1,T2,Descriptor2>* functional, 00797 DotList3D const& dotList, 00798 MultiBlockLattice3D<T1,Descriptor1>& lattice1, 00799 MultiBlockLattice3D<T2,Descriptor2>& lattice2, plint level ) 00800 { 00801 addInternalProcessor( DotProcessorGenerator3D(functional, dotList), 00802 lattice1, lattice2, level ); 00803 } 00804 00805 00806 /* *************** DotProcessing3D_SS ****************************************** */ 00807 00808 template<typename T1, typename T2> 00809 void applyProcessingFunctional ( 00810 DotProcessingFunctional3D_SS<T1,T2>* functional, 00811 DotList3D const& dotList, 00812 MultiScalarField3D<T1>& field1, 00813 MultiScalarField3D<T2>& field2 ) 00814 { 00815 executeDataProcessor( DotProcessorGenerator3D(functional, dotList), 00816 field1, field2 ); 00817 } 00818 00819 template<typename T1, typename T2> 00820 void integrateProcessingFunctional(DotProcessingFunctional3D_SS<T1,T2>* functional, 00821 DotList3D const& dotList, 00822 MultiScalarField3D<T1>& field1, 00823 MultiScalarField3D<T2>& field2, plint level) 00824 { 00825 addInternalProcessor( DotProcessorGenerator3D(functional, dotList), 00826 field1, field2, level ); 00827 } 00828 00829 00830 /* *************** DotProcessing3D_TT ****************************************** */ 00831 00832 template<typename T1, int nDim1, typename T2, int nDim2> 00833 void applyProcessingFunctional ( 00834 DotProcessingFunctional3D_TT<T1,nDim1,T2,nDim2>* functional, 00835 DotList3D const& dotList, 00836 MultiTensorField3D<T1,nDim1>& field1, 00837 MultiTensorField3D<T2,nDim2>& field2 ) 00838 { 00839 executeDataProcessor( DotProcessorGenerator3D(functional, dotList), 00840 field1, field2 ); 00841 } 00842 00843 template<typename T1, int nDim1, typename T2, int nDim2> 00844 void integrateProcessingFunctional ( 00845 DotProcessingFunctional3D_TT<T1,nDim1,T2,nDim2>* functional, 00846 DotList3D const& dotList, 00847 MultiTensorField3D<T1,nDim1>& field1, 00848 MultiTensorField3D<T2,nDim2>& field2, plint level ) 00849 { 00850 addInternalProcessor( DotProcessorGenerator3D(functional, dotList), 00851 field1, field2, level ); 00852 } 00853 00854 00855 /* *************** DotProcessing3D_NN ****************************************** */ 00856 00857 template<typename T1, typename T2> 00858 void applyProcessingFunctional ( 00859 DotProcessingFunctional3D_NN<T1,T2>* functional, 00860 DotList3D const& dotList, 00861 MultiNTensorField3D<T1>& field1, 00862 MultiNTensorField3D<T2>& field2 ) 00863 { 00864 executeDataProcessor( DotProcessorGenerator3D(functional, dotList), 00865 field1, field2 ); 00866 } 00867 00868 template<typename T1, typename T2> 00869 void integrateProcessingFunctional ( 00870 DotProcessingFunctional3D_NN<T1,T2>* functional, 00871 DotList3D const& dotList, 00872 MultiNTensorField3D<T1>& field1, 00873 MultiNTensorField3D<T2>& field2, plint level ) 00874 { 00875 addInternalProcessor( DotProcessorGenerator3D(functional, dotList), 00876 field1, field2, level ); 00877 } 00878 00879 00880 /* *************** DotProcessing3D_ST ****************************************** */ 00881 00882 template<typename T1, typename T2, int nDim> 00883 void applyProcessingFunctional(DotProcessingFunctional3D_ST<T1,T2,nDim>* functional, 00884 DotList3D const& dotList, 00885 MultiScalarField3D<T1>& field1, 00886 MultiTensorField3D<T2,nDim>& field2 ) 00887 { 00888 executeDataProcessor( DotProcessorGenerator3D(functional, dotList), 00889 field1, field2 ); 00890 } 00891 00892 template<typename T1, typename T2, int nDim> 00893 void integrateProcessingFunctional(DotProcessingFunctional3D_ST<T1,T2,nDim>* functional, 00894 DotList3D const& dotList, 00895 MultiScalarField3D<T1>& field1, 00896 MultiTensorField3D<T2,nDim>& field2, plint level) 00897 { 00898 addInternalProcessor( DotProcessorGenerator3D(functional, dotList), 00899 field1, field2, level ); 00900 } 00901 00902 00903 /* *************** DotProcessing3D_SN ****************************************** */ 00904 00905 template<typename T1, typename T2> 00906 void applyProcessingFunctional(DotProcessingFunctional3D_SN<T1,T2>* functional, 00907 DotList3D const& dotList, 00908 MultiScalarField3D<T1>& field1, 00909 MultiNTensorField3D<T2>& field2 ) 00910 { 00911 executeDataProcessor( DotProcessorGenerator3D(functional, dotList), 00912 field1, field2 ); 00913 } 00914 00915 template<typename T1, typename T2> 00916 void integrateProcessingFunctional(DotProcessingFunctional3D_SN<T1,T2>* functional, 00917 DotList3D const& dotList, 00918 MultiScalarField3D<T1>& field1, 00919 MultiNTensorField3D<T2>& field2, plint level) 00920 { 00921 addInternalProcessor( DotProcessorGenerator3D(functional, dotList), 00922 field1, field2, level ); 00923 } 00924 00925 00926 /* *************** DotProcessing3D_LS ****************************************** */ 00927 00928 template<typename T1, template<typename U> class Descriptor, typename T2> 00929 void applyProcessingFunctional ( 00930 DotProcessingFunctional3D_LS<T1,Descriptor,T2>* functional, 00931 DotList3D const& dotList, 00932 MultiBlockLattice3D<T1,Descriptor>& lattice, 00933 MultiScalarField3D<T2>& field ) 00934 { 00935 executeDataProcessor( DotProcessorGenerator3D(functional, dotList), 00936 lattice, field ); 00937 } 00938 00939 template<typename T1, template<typename U> class Descriptor, typename T2> 00940 void integrateProcessingFunctional ( 00941 DotProcessingFunctional3D_LS<T1,Descriptor,T2>* functional, 00942 DotList3D const& dotList, 00943 MultiBlockLattice3D<T1,Descriptor>& lattice, 00944 MultiScalarField3D<T2>& field, plint level ) 00945 { 00946 addInternalProcessor( DotProcessorGenerator3D(functional, dotList), 00947 lattice, field, level ); 00948 } 00949 00950 00951 /* *************** DotProcessing3D_LT ****************************************** */ 00952 00953 template<typename T1, template<typename U> class Descriptor, typename T2, int nDim> 00954 void applyProcessingFunctional ( 00955 DotProcessingFunctional3D_LT<T1,Descriptor,T2,nDim>* functional, 00956 DotList3D const& dotList, 00957 MultiBlockLattice3D<T1,Descriptor>& lattice, 00958 MultiTensorField3D<T2,nDim>& field ) 00959 { 00960 executeDataProcessor( DotProcessorGenerator3D(functional, dotList), 00961 lattice, field ); 00962 } 00963 00964 template<typename T1, template<typename U> class Descriptor, typename T2, int nDim> 00965 void integrateProcessingFunctional ( 00966 DotProcessingFunctional3D_LT<T1,Descriptor,T2,nDim>* functional, 00967 DotList3D const& dotList, 00968 MultiBlockLattice3D<T1,Descriptor>& lattice, 00969 MultiTensorField3D<T2,nDim>& field, plint level) 00970 { 00971 addInternalProcessor( DotProcessorGenerator3D(functional, dotList), 00972 lattice, field, level ); 00973 } 00974 00975 00976 /* *************** DotProcessing3D_LN ****************************************** */ 00977 00978 template<typename T1, template<typename U> class Descriptor, typename T2> 00979 void applyProcessingFunctional ( 00980 DotProcessingFunctional3D_LN<T1,Descriptor,T2>* functional, 00981 DotList3D const& dotList, 00982 MultiBlockLattice3D<T1,Descriptor>& lattice, 00983 MultiNTensorField3D<T2>& field ) 00984 { 00985 executeDataProcessor( DotProcessorGenerator3D(functional, dotList), 00986 lattice, field ); 00987 } 00988 00989 template<typename T1, template<typename U> class Descriptor, typename T2> 00990 void integrateProcessingFunctional ( 00991 DotProcessingFunctional3D_LN<T1,Descriptor,T2>* functional, 00992 DotList3D const& dotList, 00993 MultiBlockLattice3D<T1,Descriptor>& lattice, 00994 MultiNTensorField3D<T2>& field, plint level) 00995 { 00996 addInternalProcessor( DotProcessorGenerator3D(functional, dotList), 00997 lattice, field, level ); 00998 } 00999 01000 01001 /* *************** BoundedLatticeBoxProcessing3D **************************** */ 01002 01003 template<typename T, template<typename U> class Descriptor> 01004 void applyProcessingFunctional ( 01005 BoundedLatticeBoxProcessingFunctional3D<T,Descriptor>* functional, 01006 Box3D domain, 01007 std::vector<MultiBlockLattice3D<T,Descriptor>*> lattices, 01008 plint boundaryWidth ) 01009 { 01010 std::vector<MultiBlock3D*> multiBlocks(lattices.size()); 01011 for (pluint iLattice=0; iLattice<lattices.size(); ++iLattice) { 01012 multiBlocks[iLattice] = dynamic_cast<MultiBlock3D*>(lattices[iLattice]); 01013 } 01014 applyProcessingFunctional(functional, domain, multiBlocks, boundaryWidth); 01015 } 01016 01017 template<typename T, template<typename U> class Descriptor> 01018 void integrateProcessingFunctional ( 01019 BoundedLatticeBoxProcessingFunctional3D<T,Descriptor>* functional, 01020 Box3D domain, 01021 std::vector<MultiBlockLattice3D<T,Descriptor>*> lattices, 01022 plint boundaryWidth, plint level ) 01023 { 01024 std::vector<MultiBlock3D*> multiBlocks(lattices.size()); 01025 for (pluint iLattice=0; iLattice<lattices.size(); ++iLattice) { 01026 multiBlocks[iLattice] = dynamic_cast<MultiBlock3D*>(lattices[iLattice]); 01027 } 01028 integrateProcessingFunctional(functional, domain, multiBlocks, 01029 boundaryWidth, level); 01030 } 01031 01032 01033 /* *************** BoundedScalarFieldBoxProcessing3D ************************ */ 01034 01035 template<typename T> 01036 void applyProcessingFunctional ( 01037 BoundedScalarFieldBoxProcessingFunctional3D<T>* functional, 01038 Box3D domain, 01039 std::vector<MultiScalarField3D<T>*> fields, 01040 plint boundaryWidth ) 01041 { 01042 std::vector<MultiBlock3D*> multiBlocks(fields.size()); 01043 for (pluint iField=0; iField<fields.size(); ++iField) { 01044 multiBlocks[iField] = dynamic_cast<MultiBlock3D*>(fields[iField]); 01045 } 01046 applyProcessingFunctional(functional, domain, multiBlocks, boundaryWidth); 01047 } 01048 01049 template<typename T> 01050 void integrateProcessingFunctional ( 01051 BoundedScalarFieldBoxProcessingFunctional3D<T>* functional, 01052 Box3D domain, 01053 std::vector<MultiScalarField3D<T>*> fields, 01054 plint boundaryWidth, plint level ) 01055 { 01056 std::vector<MultiBlock3D*> multiBlocks(fields.size()); 01057 for (pluint iField=0; iField<fields.size(); ++iField) { 01058 multiBlocks[iField] = dynamic_cast<MultiBlock3D*>(fields[iField]); 01059 } 01060 integrateProcessingFunctional(functional, domain, multiBlocks, 01061 boundaryWidth, level); 01062 } 01063 01064 01065 /* *************** BoundedMultiTensorFieldBoxProcessing3D ************************ */ 01066 01067 template<typename T, int nDim> 01068 void applyProcessingFunctional ( 01069 BoundedTensorFieldBoxProcessingFunctional3D<T,nDim>* functional, 01070 Box3D domain, 01071 std::vector<MultiTensorField3D<T,nDim>*> fields, plint boundaryWidth ) 01072 { 01073 std::vector<MultiBlock3D*> multiBlocks(fields.size()); 01074 for (pluint iField=0; iField<fields.size(); ++iField) { 01075 multiBlocks[iField] = dynamic_cast<MultiBlock3D*>(fields[iField]); 01076 } 01077 applyProcessingFunctional(functional, domain, 01078 multiBlocks, boundaryWidth); 01079 } 01080 01081 template<typename T, int nDim> 01082 void integrateProcessingFunctional ( 01083 BoundedTensorFieldBoxProcessingFunctional3D<T,nDim>* functional, 01084 Box3D domain, 01085 std::vector<MultiTensorField3D<T,nDim>*> fields, 01086 plint boundaryWidth, plint level ) 01087 { 01088 std::vector<MultiBlock3D*> multiBlocks(fields.size()); 01089 for (pluint iField=0; iField<fields.size(); ++iField) { 01090 multiBlocks[iField] = dynamic_cast<MultiBlock3D*>(fields[iField]); 01091 } 01092 integrateProcessingFunctional(functional, domain, 01093 multiBlocks, boundaryWidth, level); 01094 } 01095 01096 /* *************** BoundedMultiNTensorFieldBoxProcessing3D ************************ */ 01097 01098 template<typename T> 01099 void applyProcessingFunctional ( 01100 BoundedNTensorFieldBoxProcessingFunctional3D<T>* functional, 01101 Box3D domain, 01102 std::vector<MultiNTensorField3D<T>*> fields, plint boundaryWidth ) 01103 { 01104 std::vector<MultiBlock3D*> multiBlocks(fields.size()); 01105 for (pluint iField=0; iField<fields.size(); ++iField) { 01106 multiBlocks[iField] = dynamic_cast<MultiBlock3D*>(fields[iField]); 01107 } 01108 applyProcessingFunctional(functional, domain, 01109 multiBlocks, boundaryWidth); 01110 } 01111 01112 template<typename T> 01113 void integrateProcessingFunctional ( 01114 BoundedNTensorFieldBoxProcessingFunctional3D<T>* functional, 01115 Box3D domain, 01116 std::vector<MultiNTensorField3D<T>*> fields, 01117 plint boundaryWidth, plint level ) 01118 { 01119 std::vector<MultiBlock3D*> multiBlocks(fields.size()); 01120 for (pluint iField=0; iField<fields.size(); ++iField) { 01121 multiBlocks[iField] = dynamic_cast<MultiBlock3D*>(fields[iField]); 01122 } 01123 integrateProcessingFunctional(functional, domain, 01124 multiBlocks, boundaryWidth, level); 01125 } 01126 01127 /* *************** BoundedBoxProcessing3D_L ********************************* */ 01128 01129 template<typename T, template<typename U> class Descriptor> 01130 void applyProcessingFunctional ( 01131 BoundedBoxProcessingFunctional3D_L<T,Descriptor>* functional, 01132 Box3D domain, MultiBlockLattice3D<T,Descriptor>& lattice, plint boundaryWidth ) 01133 { 01134 std::vector<MultiBlock3D*> multiBlocks(1); 01135 multiBlocks[0] = dynamic_cast<MultiBlock3D*>(&lattice); 01136 applyProcessingFunctional(functional, domain, multiBlocks, boundaryWidth); 01137 } 01138 01139 template<typename T, template<typename U> class Descriptor> 01140 void integrateProcessingFunctional ( 01141 BoundedBoxProcessingFunctional3D_L<T,Descriptor>* functional, 01142 Box3D domain, MultiBlockLattice3D<T,Descriptor>& lattice, 01143 plint boundaryWidth, plint level ) 01144 { 01145 std::vector<MultiBlock3D*> multiBlocks(1); 01146 multiBlocks[0] = dynamic_cast<MultiBlock3D*>(&lattice); 01147 integrateProcessingFunctional(functional, domain, multiBlocks, 01148 boundaryWidth, level); 01149 } 01150 01151 01152 /* *************** BoundedBoxProcessing3D_S ********************************* */ 01153 01154 template<typename T> 01155 void applyProcessingFunctional ( 01156 BoundedBoxProcessingFunctional3D_S<T>* functional, 01157 Box3D domain, MultiScalarField3D<T>& field, plint boundaryWidth ) 01158 { 01159 std::vector<MultiBlock3D*> multiBlocks(1); 01160 multiBlocks[0] = dynamic_cast<MultiBlock3D*>(&field); 01161 applyProcessingFunctional(functional, domain, multiBlocks, boundaryWidth); 01162 } 01163 01164 template<typename T> 01165 void integrateProcessingFunctional ( 01166 BoundedBoxProcessingFunctional3D_S<T>* functional, 01167 Box3D domain, MultiScalarField3D<T>& field, 01168 plint boundaryWidth, plint level ) 01169 { 01170 std::vector<MultiBlock3D*> multiBlocks(1); 01171 multiBlocks[0] = dynamic_cast<MultiBlock3D*>(&field); 01172 integrateProcessingFunctional(functional, domain, multiBlocks, 01173 boundaryWidth, level); 01174 } 01175 01176 01177 /* *************** BoundedBoxProcessing3D_T ********************************* */ 01178 01179 template<typename T, int nDim> 01180 void applyProcessingFunctional ( 01181 BoundedBoxProcessingFunctional3D_T<T,nDim>* functional, 01182 Box3D domain, MultiTensorField3D<T,nDim>& field, plint boundaryWidth ) 01183 { 01184 std::vector<MultiBlock3D*> multiBlocks(1); 01185 multiBlocks[0] = dynamic_cast<MultiBlock3D*>(&field); 01186 applyProcessingFunctional(functional, domain, multiBlocks, boundaryWidth); 01187 } 01188 01189 template<typename T, int nDim> 01190 void integrateProcessingFunctional ( 01191 BoundedBoxProcessingFunctional3D_T<T,nDim>* functional, 01192 Box3D domain, MultiTensorField3D<T,nDim>& field, 01193 plint boundaryWidth, plint level ) 01194 { 01195 std::vector<MultiBlock3D*> multiBlocks(1); 01196 multiBlocks[0] = dynamic_cast<MultiBlock3D*>(&field); 01197 integrateProcessingFunctional(functional, domain, multiBlocks, 01198 boundaryWidth, level); 01199 } 01200 01201 /* *************** BoundedBoxProcessing3D_N ********************************* */ 01202 01203 template<typename T> 01204 void applyProcessingFunctional ( 01205 BoundedBoxProcessingFunctional3D_N<T>* functional, 01206 Box3D domain, MultiNTensorField3D<T>& field, plint boundaryWidth ) 01207 { 01208 std::vector<MultiBlock3D*> multiBlocks(1); 01209 multiBlocks[0] = dynamic_cast<MultiBlock3D*>(&field); 01210 applyProcessingFunctional(functional, domain, multiBlocks, boundaryWidth); 01211 } 01212 01213 template<typename T> 01214 void integrateProcessingFunctional ( 01215 BoundedBoxProcessingFunctional3D_N<T>* functional, 01216 Box3D domain, MultiNTensorField3D<T>& field, 01217 plint boundaryWidth, plint level ) 01218 { 01219 std::vector<MultiBlock3D*> multiBlocks(1); 01220 multiBlocks[0] = dynamic_cast<MultiBlock3D*>(&field); 01221 integrateProcessingFunctional(functional, domain, multiBlocks, 01222 boundaryWidth, level); 01223 } 01224 01225 /* *************** BoundedMaskedBoxProcessing3D_N ********************************* */ 01226 01227 template<typename T> 01228 void applyProcessingFunctional ( 01229 BoundedMaskedBoxProcessingFunctional3D_N<T>* functional, 01230 Box3D domain, 01231 MultiNTensorField3D<T>& field, 01232 MultiNTensorField3D<int>& mask, 01233 plint boundaryWidth ) 01234 { 01235 std::vector<MultiBlock3D*> multiBlocks(2); 01236 multiBlocks[0] = dynamic_cast<MultiBlock3D*>(&field); 01237 multiBlocks[1] = dynamic_cast<MultiBlock3D*>(&mask); 01238 applyProcessingFunctional(functional, domain, multiBlocks, boundaryWidth); 01239 } 01240 01241 template<typename T> 01242 void integrateProcessingFunctional ( 01243 BoundedMaskedBoxProcessingFunctional3D_N<T>* functional, 01244 Box3D domain, 01245 MultiNTensorField3D<T>& field, 01246 MultiNTensorField3D<int>& mask, 01247 plint boundaryWidth, plint level ) 01248 { 01249 std::vector<MultiBlock3D*> multiBlocks(2); 01250 multiBlocks[0] = dynamic_cast<MultiBlock3D*>(&field); 01251 multiBlocks[1] = dynamic_cast<MultiBlock3D*>(&mask); 01252 integrateProcessingFunctional(functional, domain, multiBlocks, 01253 boundaryWidth, level); 01254 } 01255 01256 /* *************** BoundedBoxProcessing3D_LL********************************* */ 01257 01258 template<typename T1, template<typename U1> class Descriptor1, 01259 typename T2, template<typename U2> class Descriptor2> 01260 void applyProcessingFunctional ( 01261 BoundedBoxProcessingFunctional3D_LL<T1,Descriptor1,T2,Descriptor2>* functional, 01262 Box3D domain, 01263 MultiBlockLattice3D<T1,Descriptor1>& lattice1, 01264 MultiBlockLattice3D<T2,Descriptor2>& lattice2, 01265 plint boundaryWidth ) 01266 { 01267 std::vector<MultiBlock3D*> multiBlocks(2); 01268 multiBlocks[0] = dynamic_cast<MultiBlock3D*>(&lattice1); 01269 multiBlocks[1] = dynamic_cast<MultiBlock3D*>(&lattice2); 01270 applyProcessingFunctional(functional, domain, multiBlocks, boundaryWidth); 01271 } 01272 01273 template<typename T1, template<typename U1> class Descriptor1, 01274 typename T2, template<typename U2> class Descriptor2> 01275 void integrateProcessingFunctional ( 01276 BoundedBoxProcessingFunctional3D_LL<T1,Descriptor1,T2,Descriptor2>* functional, 01277 Box3D domain, 01278 MultiBlockLattice3D<T1,Descriptor1>& lattice1, 01279 MultiBlockLattice3D<T2,Descriptor2>& lattice2, 01280 plint boundaryWidth, plint level ) 01281 { 01282 std::vector<MultiBlock3D*> multiBlocks(2); 01283 multiBlocks[0] = dynamic_cast<MultiBlock3D*>(&lattice1); 01284 multiBlocks[1] = dynamic_cast<MultiBlock3D*>(&lattice2); 01285 integrateProcessingFunctional(functional, domain, multiBlocks, 01286 boundaryWidth, level); 01287 } 01288 01289 01290 /* *************** BoundedBoxProcessing3D_SS ****************************************** */ 01291 01292 template<typename T1, typename T2> 01293 void applyProcessingFunctional ( 01294 BoundedBoxProcessingFunctional3D_SS<T1,T2>* functional, 01295 Box3D domain, 01296 MultiScalarField3D<T1>& field1, 01297 MultiScalarField3D<T2>& field2, 01298 plint boundaryWidth ) 01299 { 01300 std::vector<MultiBlock3D*> multiBlocks(2); 01301 multiBlocks[0] = dynamic_cast<MultiBlock3D*>(&field1); 01302 multiBlocks[1] = dynamic_cast<MultiBlock3D*>(&field2); 01303 applyProcessingFunctional(functional, domain, multiBlocks, boundaryWidth); 01304 } 01305 01306 template<typename T1, typename T2> 01307 void integrateProcessingFunctional ( 01308 BoundedBoxProcessingFunctional3D_SS<T1,T2>* functional, 01309 Box3D domain, 01310 MultiScalarField3D<T1>& field1, 01311 MultiScalarField3D<T2>& field2, 01312 plint boundaryWidth, plint level ) 01313 { 01314 std::vector<MultiBlock3D*> multiBlocks(2); 01315 multiBlocks[0] = dynamic_cast<MultiBlock3D*>(&field1); 01316 multiBlocks[1] = dynamic_cast<MultiBlock3D*>(&field2); 01317 integrateProcessingFunctional(functional, domain, multiBlocks, 01318 boundaryWidth, level); 01319 } 01320 01321 /* *************** BoundedBoxProcessing3D_TT ********************************** */ 01322 01323 template<typename T1, int nDim1, typename T2, int nDim2> 01324 void applyProcessingFunctional ( 01325 BoundedBoxProcessingFunctional3D_TT<T1,nDim1,T2,nDim2>* functional, 01326 Box3D domain, 01327 MultiTensorField3D<T1,nDim1>& field1, 01328 MultiTensorField3D<T2,nDim2>& field2, 01329 plint boundaryWidth ) 01330 { 01331 std::vector<MultiBlock3D*> multiBlocks(2); 01332 multiBlocks[0] = dynamic_cast<MultiBlock3D*>(&field1); 01333 multiBlocks[1] = dynamic_cast<MultiBlock3D*>(&field2); 01334 applyProcessingFunctional(functional, domain, multiBlocks, boundaryWidth); 01335 } 01336 01337 template<typename T1, int nDim1, typename T2, int nDim2> 01338 void integrateProcessingFunctional ( 01339 BoundedBoxProcessingFunctional3D_TT<T1,nDim1,T2,nDim2>* functional, 01340 Box3D domain, 01341 MultiTensorField3D<T1,nDim1>& field1, 01342 MultiTensorField3D<T2,nDim2>& field2, 01343 plint boundaryWidth, plint level ) 01344 { 01345 std::vector<MultiBlock3D*> multiBlocks(2); 01346 multiBlocks[0] = dynamic_cast<MultiBlock3D*>(&field1); 01347 multiBlocks[1] = dynamic_cast<MultiBlock3D*>(&field2); 01348 integrateProcessingFunctional(functional, domain, multiBlocks, 01349 boundaryWidth, level); 01350 } 01351 01352 01353 /* *************** BoundedBoxProcessing3D_NN ********************************** */ 01354 01355 template<typename T1, typename T2> 01356 void applyProcessingFunctional ( 01357 BoundedBoxProcessingFunctional3D_NN<T1,T2>* functional, 01358 Box3D domain, 01359 MultiNTensorField3D<T1>& field1, 01360 MultiNTensorField3D<T2>& field2, 01361 plint boundaryWidth ) 01362 { 01363 std::vector<MultiBlock3D*> multiBlocks(2); 01364 multiBlocks[0] = dynamic_cast<MultiBlock3D*>(&field1); 01365 multiBlocks[1] = dynamic_cast<MultiBlock3D*>(&field2); 01366 applyProcessingFunctional(functional, domain, multiBlocks, boundaryWidth); 01367 } 01368 01369 template<typename T1, typename T2> 01370 void integrateProcessingFunctional ( 01371 BoundedBoxProcessingFunctional3D_NN<T1,T2>* functional, 01372 Box3D domain, 01373 MultiNTensorField3D<T1>& field1, 01374 MultiNTensorField3D<T2>& field2, 01375 plint boundaryWidth, plint level ) 01376 { 01377 std::vector<MultiBlock3D*> multiBlocks(2); 01378 multiBlocks[0] = dynamic_cast<MultiBlock3D*>(&field1); 01379 multiBlocks[1] = dynamic_cast<MultiBlock3D*>(&field2); 01380 integrateProcessingFunctional(functional, domain, multiBlocks, 01381 boundaryWidth, level); 01382 } 01383 01384 01385 /* *************** BoundedMaskedBoxProcessing3D_NN ********************************** */ 01386 01387 template<typename T1, typename T2> 01388 void applyProcessingFunctional ( 01389 BoundedMaskedBoxProcessingFunctional3D_NN<T1,T2>* functional, 01390 Box3D domain, 01391 MultiNTensorField3D<T1>& field1, 01392 MultiNTensorField3D<T2>& field2, 01393 MultiNTensorField3D<int>& mask, 01394 plint boundaryWidth ) 01395 { 01396 std::vector<MultiBlock3D*> multiBlocks(3); 01397 multiBlocks[0] = dynamic_cast<MultiBlock3D*>(&field1); 01398 multiBlocks[1] = dynamic_cast<MultiBlock3D*>(&field2); 01399 multiBlocks[2] = dynamic_cast<MultiBlock3D*>(&mask); 01400 applyProcessingFunctional(functional, domain, multiBlocks, boundaryWidth); 01401 } 01402 01403 template<typename T1, typename T2> 01404 void integrateProcessingFunctional ( 01405 BoundedMaskedBoxProcessingFunctional3D_NN<T1,T2>* functional, 01406 Box3D domain, 01407 MultiNTensorField3D<T1>& field1, 01408 MultiNTensorField3D<T2>& field2, 01409 MultiNTensorField3D<int>& mask, 01410 plint boundaryWidth, plint level ) 01411 { 01412 std::vector<MultiBlock3D*> multiBlocks(3); 01413 multiBlocks[0] = dynamic_cast<MultiBlock3D*>(&field1); 01414 multiBlocks[1] = dynamic_cast<MultiBlock3D*>(&field2); 01415 multiBlocks[2] = dynamic_cast<MultiBlock3D*>(&mask); 01416 integrateProcessingFunctional(functional, domain, multiBlocks, 01417 boundaryWidth, level); 01418 } 01419 01420 01421 /* *************** BoundedBoxProcessing3D_ST ******************************** */ 01422 01423 template<typename T1, typename T2, int nDim> 01424 void applyProcessingFunctional ( 01425 BoundedBoxProcessingFunctional3D_ST<T1,T2,nDim>* functional, 01426 Box3D domain, 01427 MultiScalarField3D<T1>& field1, 01428 MultiTensorField3D<T2,nDim>& field2, 01429 plint boundaryWidth ) 01430 { 01431 std::vector<MultiBlock3D*> multiBlocks(2); 01432 multiBlocks[0] = dynamic_cast<MultiBlock3D*>(&field1); 01433 multiBlocks[1] = dynamic_cast<MultiBlock3D*>(&field2); 01434 applyProcessingFunctional(functional, domain, multiBlocks, boundaryWidth); 01435 } 01436 01437 template<typename T1, typename T2, int nDim> 01438 void integrateProcessingFunctional ( 01439 BoundedBoxProcessingFunctional3D_ST<T1,T2,nDim>* functional, 01440 Box3D domain, 01441 MultiScalarField3D<T1>& field1, 01442 MultiTensorField3D<T2,nDim>& field2, 01443 plint boundaryWidth, plint level ) 01444 { 01445 std::vector<MultiBlock3D*> multiBlocks(2); 01446 multiBlocks[0] = dynamic_cast<MultiBlock3D*>(&field1); 01447 multiBlocks[1] = dynamic_cast<MultiBlock3D*>(&field2); 01448 integrateProcessingFunctional(functional, domain, multiBlocks, 01449 boundaryWidth, level); 01450 } 01451 01452 01453 /* *************** BoundedBoxProcessing3D_SN ******************************** */ 01454 01455 template<typename T1, typename T2> 01456 void applyProcessingFunctional ( 01457 BoundedBoxProcessingFunctional3D_SN<T1,T2>* functional, 01458 Box3D domain, 01459 MultiScalarField3D<T1>& field1, 01460 MultiNTensorField3D<T2>& field2, 01461 plint boundaryWidth ) 01462 { 01463 std::vector<MultiBlock3D*> multiBlocks(2); 01464 multiBlocks[0] = dynamic_cast<MultiBlock3D*>(&field1); 01465 multiBlocks[1] = dynamic_cast<MultiBlock3D*>(&field2); 01466 applyProcessingFunctional(functional, domain, multiBlocks, boundaryWidth); 01467 } 01468 01469 template<typename T1, typename T2> 01470 void integrateProcessingFunctional ( 01471 BoundedBoxProcessingFunctional3D_SN<T1,T2>* functional, 01472 Box3D domain, 01473 MultiScalarField3D<T1>& field1, 01474 MultiNTensorField3D<T2>& field2, 01475 plint boundaryWidth, plint level ) 01476 { 01477 std::vector<MultiBlock3D*> multiBlocks(2); 01478 multiBlocks[0] = dynamic_cast<MultiBlock3D*>(&field1); 01479 multiBlocks[1] = dynamic_cast<MultiBlock3D*>(&field2); 01480 integrateProcessingFunctional(functional, domain, multiBlocks, 01481 boundaryWidth, level); 01482 } 01483 01484 01485 /* *************** BoundedBoxProcessing3D_LS ******************************** */ 01486 01487 template<typename T1, template<typename U> class Descriptor, typename T2> 01488 void applyProcessingFunctional ( 01489 BoundedBoxProcessingFunctional3D_LS<T1,Descriptor,T2>* functional, 01490 Box3D domain, 01491 MultiBlockLattice3D<T1,Descriptor>& lattice, 01492 MultiScalarField3D<T2>& field, 01493 plint boundaryWidth ) 01494 { 01495 std::vector<MultiBlock3D*> multiBlocks(2); 01496 multiBlocks[0] = dynamic_cast<MultiBlock3D*>(&lattice); 01497 multiBlocks[1] = dynamic_cast<MultiBlock3D*>(&field); 01498 applyProcessingFunctional(functional, domain, multiBlocks, boundaryWidth); 01499 } 01500 01501 template<typename T1, template<typename U> class Descriptor, typename T2> 01502 void integrateProcessingFunctional ( 01503 BoundedBoxProcessingFunctional3D_LS<T1,Descriptor,T2>* functional, 01504 Box3D domain, 01505 MultiBlockLattice3D<T1,Descriptor>& lattice, 01506 MultiScalarField3D<T2>& field, 01507 plint boundaryWidth, plint level ) 01508 { 01509 std::vector<MultiBlock3D*> multiBlocks(2); 01510 multiBlocks[0] = dynamic_cast<MultiBlock3D*>(&lattice); 01511 multiBlocks[1] = dynamic_cast<MultiBlock3D*>(&field); 01512 integrateProcessingFunctional(functional, domain, multiBlocks, 01513 boundaryWidth, level); 01514 } 01515 01516 01517 /* *************** BoundedBoxProcessing3D_LT ****************************************** */ 01518 01519 template<typename T1, template<typename U> class Descriptor, typename T2, int nDim> 01520 void applyProcessingFunctional ( 01521 BoundedBoxProcessingFunctional3D_LT<T1,Descriptor,T2,nDim>* functional, 01522 Box3D domain, 01523 MultiBlockLattice3D<T1,Descriptor>& lattice, 01524 MultiTensorField3D<T2,nDim>& field, 01525 plint boundaryWidth ) 01526 { 01527 std::vector<MultiBlock3D*> multiBlocks(2); 01528 multiBlocks[0] = dynamic_cast<MultiBlock3D*>(&lattice); 01529 multiBlocks[1] = dynamic_cast<MultiBlock3D*>(&field); 01530 applyProcessingFunctional(functional, domain, multiBlocks, boundaryWidth); 01531 } 01532 01533 template<typename T1, template<typename U> class Descriptor, typename T2, int nDim> 01534 void integrateProcessingFunctional ( 01535 BoundedBoxProcessingFunctional3D_LT<T1,Descriptor,T2,nDim>* functional, 01536 Box3D domain, 01537 MultiBlockLattice3D<T1,Descriptor>& lattice, 01538 MultiTensorField3D<T2,nDim>& field, 01539 plint boundaryWidth, plint level ) 01540 { 01541 std::vector<MultiBlock3D*> multiBlocks(2); 01542 multiBlocks[0] = dynamic_cast<MultiBlock3D*>(&lattice); 01543 multiBlocks[1] = dynamic_cast<MultiBlock3D*>(&field); 01544 integrateProcessingFunctional(functional, domain, multiBlocks, 01545 boundaryWidth, level); 01546 } 01547 01548 01549 /* *************** BoundedBoxProcessing3D_LN ****************************************** */ 01550 01551 template<typename T1, template<typename U> class Descriptor, typename T2> 01552 void applyProcessingFunctional ( 01553 BoundedBoxProcessingFunctional3D_LN<T1,Descriptor,T2>* functional, 01554 Box3D domain, 01555 MultiBlockLattice3D<T1,Descriptor>& lattice, 01556 MultiNTensorField3D<T2>& field, 01557 plint boundaryWidth ) 01558 { 01559 std::vector<MultiBlock3D*> multiBlocks(2); 01560 multiBlocks[0] = dynamic_cast<MultiBlock3D*>(&lattice); 01561 multiBlocks[1] = dynamic_cast<MultiBlock3D*>(&field); 01562 applyProcessingFunctional(functional, domain, multiBlocks, boundaryWidth); 01563 } 01564 01565 template<typename T1, template<typename U> class Descriptor, typename T2> 01566 void integrateProcessingFunctional ( 01567 BoundedBoxProcessingFunctional3D_LN<T1,Descriptor,T2>* functional, 01568 Box3D domain, 01569 MultiBlockLattice3D<T1,Descriptor>& lattice, 01570 MultiNTensorField3D<T2>& field, 01571 plint boundaryWidth, plint level ) 01572 { 01573 std::vector<MultiBlock3D*> multiBlocks(2); 01574 multiBlocks[0] = dynamic_cast<MultiBlock3D*>(&lattice); 01575 multiBlocks[1] = dynamic_cast<MultiBlock3D*>(&field); 01576 integrateProcessingFunctional(functional, domain, multiBlocks, 01577 boundaryWidth, level); 01578 } 01579 01580 /* *************** BoundedMaskedBoxProcessing3D_LN ****************************************** */ 01581 01582 template<typename T1, template<typename U> class Descriptor, typename T2> 01583 void applyProcessingFunctional ( 01584 BoundedMaskedBoxProcessingFunctional3D_LN<T1,Descriptor,T2>* functional, 01585 Box3D domain, 01586 MultiBlockLattice3D<T1,Descriptor>& lattice, 01587 MultiNTensorField3D<T2>& field, 01588 MultiNTensorField3D<int>& mask, 01589 plint boundaryWidth ) 01590 { 01591 std::vector<MultiBlock3D*> multiBlocks(3); 01592 multiBlocks[0] = dynamic_cast<MultiBlock3D*>(&lattice); 01593 multiBlocks[1] = dynamic_cast<MultiBlock3D*>(&field); 01594 multiBlocks[2] = dynamic_cast<MultiBlock3D*>(&mask); 01595 applyProcessingFunctional(functional, domain, multiBlocks, boundaryWidth); 01596 } 01597 01598 template<typename T1, template<typename U> class Descriptor, typename T2> 01599 void integrateProcessingFunctional ( 01600 BoundedMaskedBoxProcessingFunctional3D_LN<T1,Descriptor,T2>* functional, 01601 Box3D domain, 01602 MultiBlockLattice3D<T1,Descriptor>& lattice, 01603 MultiNTensorField3D<T2>& field, 01604 MultiNTensorField3D<int>& mask, 01605 plint boundaryWidth, plint level ) 01606 { 01607 std::vector<MultiBlock3D*> multiBlocks(3); 01608 multiBlocks[0] = dynamic_cast<MultiBlock3D*>(&lattice); 01609 multiBlocks[1] = dynamic_cast<MultiBlock3D*>(&field); 01610 multiBlocks[2] = dynamic_cast<MultiBlock3D*>(&mask); 01611 integrateProcessingFunctional(functional, domain, multiBlocks, 01612 boundaryWidth, level); 01613 } 01614 01615 } // namespace plb 01616 01617 #endif // MULTI_DATA_PROCESSOR_WRAPPER_3D_HH
1.6.3
1.6.3