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