$treeview $search $mathjax
Palabos  Version 1.1
$projectbrief
$projectbrief
$searchbox

multiGridDataProcessorWrapper3D.h

Go to the documentation of this file.
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 /* Main author: Daniel Lagrava
00026  **/
00027 
00033 #ifndef MULTI_GRID_DATA_PROCESSOR_WRAPPER_3D_H
00034 #define MULTI_GRID_DATA_PROCESSOR_WRAPPER_3D_H
00035 
00036 #include "atomicBlock/dataProcessingFunctional3D.h"
00037 
00038 namespace plb {
00039 
00040 class MultiGrid3D;
00041 template<typename T, template<typename U> class Descriptor> class MultiGridLattice3D;
00042 template<typename T> class MultiGridScalarField3D;
00043 template<typename T, int nDim> class MultiGridTensorField3D;
00044 
00045 /* *************** Generic wrappers, boxed functionals ********************** */
00046 
00049 void applyProcessingFunctional(BoxProcessingFunctional3D* functional,
00050                                Box3D domain,
00051                                std::vector<MultiGrid3D*> multiBlocks, plint referenceLevel );
00052 
00055 void integrateProcessingFunctional(BoxProcessingFunctional3D* functional,
00056                                    Box3D domain,
00057                                    std::vector<MultiGrid3D*> multiBlocks, plint referenceLevel,
00058                                    plint level=0 );
00059 
00063 template<typename T, template<typename U> class Descriptor>
00064 void applyProcessingFunctional (
00065         LatticeBoxProcessingFunctional3D<T,Descriptor>* functional,
00066         Box3D domain,
00067         std::vector<MultiGridLattice3D<T,Descriptor>*> lattices, plint referenceLevel );
00068 
00072 template<typename T, template<typename U> class Descriptor>
00073 void integrateProcessingFunctional (
00074         LatticeBoxProcessingFunctional3D<T,Descriptor>* functional,
00075         Box3D domain,
00076         std::vector<MultiGridLattice3D<T,Descriptor>*> lattices, plint referenceLevel, plint level=0 );
00077 
00081 template<typename T>
00082 void applyProcessingFunctional (
00083         ScalarFieldBoxProcessingFunctional3D<T>* functional,
00084         Box3D domain,
00085         std::vector<MultiGridScalarField3D<T>*> fields, plint referenceLevel );
00086 
00090 template<typename T>
00091 void integrateProcessingFunctional (
00092         ScalarFieldBoxProcessingFunctional3D<T>* functional,
00093         Box3D domain,
00094         std::vector<MultiGridScalarField3D<T>*> fields, plint referenceLevel, plint level=0 );
00095 
00099 template<typename T, int nDim>
00100 void applyProcessingFunctional (
00101         TensorFieldBoxProcessingFunctional3D<T,nDim>* functional,
00102         Box3D domain,
00103         std::vector<MultiGridTensorField3D<T,nDim>*> fields, plint referenceLevel );
00104 
00108 template<typename T, int nDim>
00109 void integrateProcessingFunctional (
00110         TensorFieldBoxProcessingFunctional3D<T,nDim>* functional,
00111         Box3D domain,
00112         std::vector<MultiGridTensorField3D<T,nDim>*> fields, plint referenceLevel, plint level=0 );
00113 
00114 
00115 /* *************** Typed wrappers with a single argument, boxed functionals * */
00116 
00117 template<typename T, template<typename U> class Descriptor>
00118 void applyProcessingFunctional(BoxProcessingFunctional3D_L<T,Descriptor>* functional,
00119                                Box3D domain, MultiGridLattice3D<T,Descriptor>& lattice,
00120                                plint referenceLevel);
00121 
00122 template<typename T, template<typename U> class Descriptor>
00123 void integrateProcessingFunctional(BoxProcessingFunctional3D_L<T,Descriptor>* functional,
00124                                    Box3D domain, MultiGridLattice3D<T,Descriptor>& lattice,
00125                                    plint referenceLevel, plint level=0);
00126 
00127 template<typename T>
00128 void applyProcessingFunctional(BoxProcessingFunctional3D_S<T>* functional,
00129                                Box3D domain, MultiGridScalarField3D<T>& field, plint referenceLevel);
00130 template<typename T>
00131 void integrateProcessingFunctional(BoxProcessingFunctional3D_S<T>* functional,
00132                                    Box3D domain, MultiGridScalarField3D<T>& field, plint referenceLevel,
00133                                    plint level=0);
00134 
00135 template<typename T, int nDim>
00136 void applyProcessingFunctional(BoxProcessingFunctional3D_T<T,nDim>* functional,
00137                                Box3D domain, MultiGridTensorField3D<T,nDim>& field, plint referenceLevel);
00138 template<typename T, int nDim>
00139 void integrateProcessingFunctional(BoxProcessingFunctional3D_T<T,nDim>* functional,
00140                                    Box3D domain, MultiGridTensorField3D<T,nDim>& field,
00141                                    plint referenceLevel, plint level=0);
00142 
00143 /* *************** Typed wrappers with two arguments ************************ */
00144 
00145 template<typename T1, template<typename U1> class Descriptor1,
00146          typename T2, template<typename U2> class Descriptor2>
00147 void applyProcessingFunctional (
00148         BoxProcessingFunctional3D_LL<T1,Descriptor1,T2,Descriptor2>* functional,
00149         Box3D domain,
00150         MultiGridLattice3D<T1,Descriptor1>& lattice1,
00151         MultiGridLattice3D<T2,Descriptor2>& lattice2, plint referenceLevel );
00152 
00153 template<typename T1, template<typename U1> class Descriptor1,
00154          typename T2, template<typename U2> class Descriptor2>
00155 void integrateProcessingFunctional (
00156         BoxProcessingFunctional3D_LL<T1,Descriptor1,T2,Descriptor2>* functional,
00157         Box3D domain,
00158         MultiGridLattice3D<T1,Descriptor1>& lattice1,
00159         MultiGridLattice3D<T2,Descriptor2>& lattice2, plint referenceLevel, plint level=0 );
00160 
00161 template<typename T1, typename T2>
00162 void applyProcessingFunctional(BoxProcessingFunctional3D_SS<T1,T2>* functional,
00163                                Box3D domain,
00164                                MultiGridScalarField3D<T1>& field1,
00165                                MultiGridScalarField3D<T2>& field2, plint referenceLevel);
00166 
00167 template<typename T1, typename T2>
00168 void integrateProcessingFunctional(BoxProcessingFunctional3D_SS<T1,T2>* functional,
00169                                    Box3D domain,
00170                                    MultiGridScalarField3D<T1>& field1,
00171                                    MultiGridScalarField3D<T2>& field2, plint referenceLevel, plint level=0);
00172 
00173 template<typename T1, int nDim1, typename T2, int nDim2>
00174 void applyProcessingFunctional (
00175         BoxProcessingFunctional3D_TT<T1,nDim1,T2,nDim2>* functional,
00176         Box3D domain,
00177         MultiGridTensorField3D<T1,nDim1>& field1,
00178         MultiGridTensorField3D<T2,nDim2>& field2, plint referenceLevel );
00179 
00180 template<typename T1, int nDim1, typename T2, int nDim2>
00181 void integrateProcessingFunctional (
00182         BoxProcessingFunctional3D_TT<T1,nDim1,T2,nDim2>* functional, Box3D domain,
00183         MultiGridTensorField3D<T1,nDim1>& field1,
00184         MultiGridTensorField3D<T2,nDim2>& field2, plint referenceLevel, plint level=0 );
00185 
00186 
00187 template<typename T1, typename T2, int nDim>
00188 void applyProcessingFunctional(BoxProcessingFunctional3D_ST<T1,T2,nDim>* functional,
00189                                Box3D domain,
00190                                MultiGridScalarField3D<T1>& field1,
00191                                MultiGridTensorField3D<T2,nDim>& field2, plint referenceLevel);
00192 
00193 template<typename T1, typename T2, int nDim>
00194 void integrateProcessingFunctional(BoxProcessingFunctional3D_ST<T1,T2,nDim>* functional,
00195                                    Box3D domain,
00196                                    MultiGridScalarField3D<T1>& field1,
00197                                    MultiGridTensorField3D<T2,nDim>& field2, plint referenceLevel, plint level=0);
00198 
00199 
00200 template<typename T1, template<typename U> class Descriptor, typename T2>
00201 void applyProcessingFunctional (
00202         BoxProcessingFunctional3D_LS<T1,Descriptor,T2>* functional,
00203         Box3D domain,
00204         MultiGridLattice3D<T1,Descriptor>& lattice,
00205         MultiGridScalarField3D<T2>& field, plint referenceLevel );
00206 
00207 template<typename T1, template<typename U> class Descriptor, typename T2>
00208 void integrateProcessingFunctional (
00209         BoxProcessingFunctional3D_LS<T1,Descriptor,T2>* functional,
00210         Box3D domain,
00211         MultiGridLattice3D<T1,Descriptor>& lattice,
00212         MultiGridScalarField3D<T2>& field, plint referenceLevel, plint level=0 );
00213 
00214 template<typename T1, template<typename U> class Descriptor, typename T2, int nDim>
00215 void applyProcessingFunctional (
00216         BoxProcessingFunctional3D_LT<T1,Descriptor,T2,nDim>* functional,
00217         Box3D domain,
00218         MultiGridLattice3D<T1,Descriptor>& lattice,
00219         MultiGridTensorField3D<T2,nDim>& field, plint referenceLevel );
00220 
00221 template<typename T1, template<typename U> class Descriptor, typename T2, int nDim>
00222 void integrateProcessingFunctional (
00223         BoxProcessingFunctional3D_LT<T1,Descriptor,T2,nDim>* functional,
00224         Box3D domain,
00225         MultiGridLattice3D<T1,Descriptor>& lattice,
00226         MultiGridTensorField3D<T2,nDim>& field, plint referenceLevel, plint level=0 );
00227 
00228 
00229 /* *************** Generic wrappers, dotted functionals ********************* */
00230 
00231 void applyProcessingFunctional(DotProcessingFunctional3D* functional,
00232                                DotList3D const& dotList,
00233                                std::vector<MultiGrid3D*> multiBlocks, plint referenceLevel);
00234 
00235 void integrateProcessingFunctional(DotProcessingFunctional3D* functional,
00236                                    DotList3D const& dotList,
00237                                    std::vector<MultiGrid3D*> multiBlocks,
00238                                    plint referenceLevel, plint level=0);
00239 
00240 template<typename T, template<typename U> class Descriptor>
00241 void applyProcessingFunctional (
00242         LatticeDotProcessingFunctional3D<T,Descriptor>* functional,
00243         DotList3D const& dotList,
00244         std::vector<MultiGridLattice3D<T,Descriptor>*> lattices, plint referenceLevel );
00245 
00246 template<typename T, template<typename U> class Descriptor>
00247 void integrateProcessingFunctional (
00248         LatticeDotProcessingFunctional3D<T,Descriptor>* functional,
00249         DotList3D const& dotList,
00250         std::vector<MultiGridLattice3D<T,Descriptor>*> lattices, plint referenceLevel, plint level=0 );
00251 
00252 template<typename T>
00253 void applyProcessingFunctional (
00254         ScalarFieldDotProcessingFunctional3D<T>* functional,
00255         DotList3D const& dotList,
00256         std::vector<MultiGridScalarField3D<T>*> fields, plint referenceLevel );
00257 
00258 template<typename T>
00259 void integrateProcessingFunctional (
00260         ScalarFieldDotProcessingFunctional3D<T>* functional,
00261         DotList3D const& dotList,
00262         std::vector<MultiGridScalarField3D<T>*> fields, plint referenceLevel, plint level=0 );
00263 
00264 template<typename T, int nDim>
00265 void applyProcessingFunctional (
00266         TensorFieldDotProcessingFunctional3D<T,nDim>* functional,
00267         DotList3D const& dotList,
00268         std::vector<MultiGridTensorField3D<T,nDim>*> fields, plint referenceLevel );
00269 
00270 template<typename T, int nDim>
00271 void integrateProcessingFunctional (
00272         TensorFieldDotProcessingFunctional3D<T,nDim>* functional,
00273         DotList3D const& dotList,
00274         std::vector<MultiGridTensorField3D<T,nDim>*> fields, plint referenceLevel, plint level=0 );
00275 
00276 
00277 /* *************** Typed wrappers with a single argument, dotted functionals* */
00278 
00279 template<typename T, template<typename U> class Descriptor>
00280 void applyProcessingFunctional (
00281         DotProcessingFunctional3D_L<T,Descriptor>* functional,
00282         DotList3D const& dotList,
00283         MultiGridLattice3D<T,Descriptor>& lattice, plint referenceLevel );
00284 
00285 template<typename T, template<typename U> class Descriptor>
00286 void integrateProcessingFunctional (
00287         DotProcessingFunctional3D_L<T,Descriptor>* functional,
00288         DotList3D const& dotList,
00289         MultiGridLattice3D<T,Descriptor>& lattice, plint referenceLevel, plint level=0 );
00290 
00291 template<typename T>
00292 void applyProcessingFunctional(DotProcessingFunctional3D_S<T>* functional,
00293                                DotList3D const& dotList,
00294                                MultiGridScalarField3D<T>& field, plint referenceLevel);
00295 
00296 template<typename T>
00297 void integrateProcessingFunctional(DotProcessingFunctional3D_S<T>* functional,
00298                                    DotList3D const& dotList,
00299                                    MultiGridScalarField3D<T>& field, plint referenceLevel, plint level=0);
00300 
00301 template<typename T, int nDim>
00302 void applyProcessingFunctional(DotProcessingFunctional3D_T<T,nDim>* functional,
00303                                DotList3D const& dotList,
00304                                MultiGridTensorField3D<T,nDim>& field, plint referenceLevel);
00305 
00306 template<typename T, int nDim>
00307 void integrateProcessingFunctional(DotProcessingFunctional3D_T<T,nDim>* functional,
00308                                    DotList3D const& dotList,
00309                                    MultiGridTensorField3D<T,nDim>& field, plint referenceLevel, plint level=0);
00310 
00311 /* *************** Typed wrappers with two arguments, dotted functionals* *****/
00312 
00314 template<typename T1, template<typename U1> class Descriptor1,
00315          typename T2, template<typename U2> class Descriptor2>
00316 void applyProcessingFunctional (
00317         DotProcessingFunctional3D_LL<T1,Descriptor1,T2,Descriptor2>* functional,
00318         DotList3D const& dotList,
00319         MultiGridLattice3D<T1,Descriptor1>& lattice1,
00320         MultiGridLattice3D<T2,Descriptor2>& lattice2, plint referenceLevel );
00321 
00322 template<typename T1, template<typename U1> class Descriptor1,
00323          typename T2, template<typename U2> class Descriptor2>
00324 void integrateProcessingFunctional (
00325         DotProcessingFunctional3D_LL<T1,Descriptor1,T2,Descriptor2>* functional,
00326         DotList3D const& dotList,
00327         MultiGridLattice3D<T1,Descriptor1>& lattice1,
00328         MultiGridLattice3D<T2,Descriptor2>& lattice2, plint referenceLevel, plint level=0 );
00329 
00330 template<typename T1, typename T2>
00331 void applyProcessingFunctional(DotProcessingFunctional3D_SS<T1,T2>* functional,
00332                                DotList3D const& dotList,
00333                                MultiGridScalarField3D<T1>& field1,
00334                                MultiGridScalarField3D<T2>& field2, plint referenceLevel);
00335 
00336 template<typename T1, typename T2>
00337 void integrateProcessingFunctional(DotProcessingFunctional3D_SS<T1,T2>* functional,
00338                                    DotList3D const& dotList,
00339                                    MultiGridScalarField3D<T1>& field1,
00340                                    MultiGridScalarField3D<T2>& field2, plint referenceLevel, plint level=0);
00341 
00343 template<typename T1, int nDim1, typename T2, int nDim2>
00344 void applyProcessingFunctional (
00345         DotProcessingFunctional3D_TT<T1,nDim1,T2,nDim2>* functional,
00346         DotList3D const& dotList,
00347         MultiGridTensorField3D<T1,nDim1>& field1,
00348         MultiGridTensorField3D<T2,nDim2>& field2, plint referenceLevel );
00349 
00350 template<typename T1, int nDim1, typename T2, int nDim2>
00351 void integrateProcessingFunctional (
00352         DotProcessingFunctional3D_TT<T1,nDim1,T2,nDim2>* functional,
00353         DotList3D const& dotList,
00354         MultiGridTensorField3D<T1,nDim1>& field1,
00355         MultiGridTensorField3D<T2,nDim2>& field2, plint referenceLevel, plint level=0 );
00356 
00357 template<typename T1, int nDim1, typename T2, int nDim2>
00358 void applyProcessingFunctional (
00359         DotProcessingFunctional3D_TT<T1,nDim1,T2,nDim2>* functional,
00360         DotList3D const& dotList,
00361         MultiGridTensorField3D<T1,nDim1>& field1,
00362         MultiGridTensorField3D<T2,nDim2>& field2, plint referenceLevel );
00363 
00364 
00365 template<typename T1, typename T2, int nDim>
00366 void applyProcessingFunctional (
00367         DotProcessingFunctional3D_ST<T1,T2,nDim>* functional,
00368         DotList3D const& dotList,
00369         MultiGridScalarField3D<T1>& field1,
00370         MultiGridTensorField3D<T2,nDim>& field2, plint referenceLevel );
00371 
00372 template<typename T1, typename T2, int nDim>
00373 void integrateProcessingFunctional (
00374         DotProcessingFunctional3D_ST<T1,T2,nDim>* functional,
00375         DotList3D const& dotList,
00376         MultiGridScalarField3D<T1>& field1,
00377         MultiGridTensorField3D<T2,nDim>& field2, plint referenceLevel, plint level=0 );
00378 
00379 template<typename T1, template<typename U> class Descriptor, typename T2>
00380 void applyProcessingFunctional (
00381         DotProcessingFunctional3D_LS<T1,Descriptor,T2>* functional,
00382         DotList3D const& dotList,
00383         MultiGridLattice3D<T1,Descriptor>& lattice,
00384         MultiGridScalarField3D<T2>& field, plint referenceLevel );
00385 
00386 template<typename T1, template<typename U> class Descriptor, typename T2>
00387 void integrateProcessingFunctional (
00388         DotProcessingFunctional3D_LS<T1,Descriptor,T2>* functional,
00389         DotList3D const& dotList,
00390         MultiGridLattice3D<T1,Descriptor>& lattice,
00391         MultiGridScalarField3D<T2>& field, plint referenceLevel, plint level=0 );
00392 
00393 template<typename T1, template<typename U> class Descriptor, typename T2, int nDim>
00394 void applyProcessingFunctional (
00395         DotProcessingFunctional3D_LT<T1,Descriptor,T2,nDim>* functional,
00396         DotList3D const& dotList,
00397         MultiGridLattice3D<T1,Descriptor>& lattice,
00398         MultiGridTensorField3D<T2,nDim>& field, plint referenceLevel );
00399 
00400 template<typename T1, template<typename U> class Descriptor, typename T2, int nDim>
00401 void integrateProcessingFunctional (
00402         DotProcessingFunctional3D_LT<T1,Descriptor,T2,nDim>* functional,
00403         DotList3D const& dotList,
00404         MultiGridLattice3D<T1,Descriptor>& lattice,
00405         MultiGridTensorField3D<T2,nDim>& field, plint referenceLevel, plint level=0 );
00406 
00407 
00408 /* *************** Generic wrappers, bounded and boxed functionals ********** */
00409 
00410 void applyProcessingFunctional(BoundedBoxProcessingFunctional3D* functional,
00411                                Box3D domain, std::vector<MultiGrid3D*> multiBlocks, plint referenceLevel,
00412                                plint boundaryWidth );
00413 
00414 void integrateProcessingFunctional (
00415         BoundedBoxProcessingFunctional3D* functional,
00416         Box3D domain, std::vector<MultiGrid3D*> multiBlocks,
00417         plint boundaryWidth, plint referenceLevel, plint level=0 );
00418 
00419 
00420 template<typename T, template<typename U> class Descriptor>
00421 void applyProcessingFunctional (
00422         BoundedLatticeBoxProcessingFunctional3D<T,Descriptor>* functional,
00423         Box3D domain,
00424         std::vector<MultiGridLattice3D<T,Descriptor>*> lattices, plint referenceLevel,
00425         plint boundaryWidth = Descriptor<T>::boundaryWidth );
00426 
00427 template<typename T, template<typename U> class Descriptor>
00428 void integrateProcessingFunctional (
00429         BoundedLatticeBoxProcessingFunctional3D<T,Descriptor>* functional,
00430         Box3D domain, std::vector<MultiGridLattice3D<T,Descriptor>*> lattices, plint referenceLevel,
00431         plint boundaryWidth = Descriptor<T>::boundaryWidth, plint level=0 );
00432 
00433 template<typename T>
00434 void applyProcessingFunctional (
00435         BoundedScalarFieldBoxProcessingFunctional3D<T>* functional,
00436         Box3D domain, std::vector<MultiGridScalarField3D<T>*> fields, plint referenceLevel,
00437         plint boundaryWidth );
00438 
00439 template<typename T>
00440 void integrateProcessingFunctional (
00441         BoundedScalarFieldBoxProcessingFunctional3D<T>* functional,
00442         Box3D domain, std::vector<MultiGridScalarField3D<T>*> fields, plint referenceLevel,
00443         plint boundaryWidth );
00444 
00445 template<typename T, int nDim>
00446 void applyProcessingFunctional (
00447         BoundedTensorFieldBoxProcessingFunctional3D<T,nDim>* functional,
00448         Box3D domain, std::vector<MultiGridTensorField3D<T,nDim>*> fields, plint referenceLevel,
00449         plint boundaryWidth );
00450 
00451 template<typename T, int nDim>
00452 void integrateProcessingFunctional (
00453         BoundedTensorFieldBoxProcessingFunctional3D<T,nDim>* functional,
00454         Box3D domain,
00455         std::vector<MultiGridTensorField3D<T,nDim>*> fields, plint referenceLevel, plint boundaryWidth );
00456 
00457 /* ** Typed wrappers with a single argument, bounded and boxed functionals * */
00458 
00459 template<typename T, template<typename U> class Descriptor>
00460 void applyProcessingFunctional (
00461         BoundedBoxProcessingFunctional3D_L<T,Descriptor>* functional,
00462         Box3D domain,
00463         MultiGridLattice3D<T,Descriptor>& lattice, plint referenceLevel,
00464         plint boundaryWidth = Descriptor<T>::boundaryWidth );
00465 
00466 template<typename T, template<typename U> class Descriptor>
00467 void integrateProcessingFunctional (
00468         BoundedBoxProcessingFunctional3D_L<T,Descriptor>* functional,
00469         Box3D domain,
00470         MultiGridLattice3D<T,Descriptor>& lattice, plint referenceLevel,
00471         plint boundaryWidth = Descriptor<T>::boundaryWidth, plint level=0 );
00472 
00473 template<typename T>
00474 void applyProcessingFunctional(BoundedBoxProcessingFunctional3D_S<T>* functional,
00475                                Box3D domain, MultiGridScalarField3D<T>& field, plint referenceLevel,
00476                                plint boundaryWidth);
00477 
00478 template<typename T>
00479 void integrateProcessingFunctional(BoundedBoxProcessingFunctional3D_S<T>* functional,
00480                                    Box3D domain, MultiGridScalarField3D<T>& field, plint referenceLevel,
00481                                    plint boundaryWidth, plint level=0);
00482 
00483 template<typename T, int nDim>
00484 void applyProcessingFunctional(BoundedBoxProcessingFunctional3D_T<T,nDim>* functional,
00485                                Box3D domain, MultiGridTensorField3D<T,nDim>& field, plint referenceLevel,
00486                                plint boundaryWidth);
00487 
00488 template<typename T, int nDim>
00489 void integrateProcessingFunctional (
00490         BoundedBoxProcessingFunctional3D_T<T,nDim>* functional,
00491         Box3D domain,
00492         MultiGridTensorField3D<T,nDim>& field, plint referenceLevel,
00493         plint boundaryWidth, plint level=0 );
00494 
00495 
00496 /* ** Typed wrappers with two arguments, bounded and boxed functionals *** */
00497 
00498 template<typename T1, template<typename U1> class Descriptor1,
00499          typename T2, template<typename U2> class Descriptor2>
00500 void applyProcessingFunctional (
00501         BoundedBoxProcessingFunctional3D_LL<T1,Descriptor1,T2,Descriptor2>* functional,
00502         Box3D domain,
00503         MultiGridLattice3D<T1,Descriptor1>& lattice1,
00504         MultiGridLattice3D<T2,Descriptor2>& lattice2, plint referenceLevel,
00505         plint boundaryWidth = Descriptor1<T1>::boundaryWidth );
00506 
00507 template<typename T1, template<typename U1> class Descriptor1,
00508          typename T2, template<typename U2> class Descriptor2>
00509 void integrateProcessingFunctional (
00510         BoundedBoxProcessingFunctional3D_LL<T1,Descriptor1,T2,Descriptor2>* functional,
00511         Box3D domain,
00512         MultiGridLattice3D<T1,Descriptor1>& lattice1,
00513         MultiGridLattice3D<T2,Descriptor2>& lattice2, plint referenceLevel,
00514         plint boundaryWidth = Descriptor1<T1>::boundaryWidth, plint level=0 );
00515 
00516 template<typename T1, typename T2>
00517 void applyProcessingFunctional (
00518         BoundedBoxProcessingFunctional3D_SS<T1,T2>* functional,
00519         Box3D domain,
00520         MultiGridScalarField3D<T1>& field1,
00521         MultiGridScalarField3D<T2>& field2, plint referenceLevel,
00522         plint boundaryWidth );
00523 
00524 template<typename T1, typename T2>
00525 void integrateProcessingFunctional (
00526         BoundedBoxProcessingFunctional3D_SS<T1,T2>* functional,
00527         Box3D domain,
00528         MultiGridScalarField3D<T1>& field1,
00529         MultiGridScalarField3D<T2>& field2, plint referenceLevel,
00530         plint boundaryWidth, plint level=0 );
00531 
00532 template<typename T1, int nDim1, typename T2, int nDim2>
00533 void applyProcessingFunctional (
00534         BoundedBoxProcessingFunctional3D_TT<T1,nDim1,T2,nDim2>* functional,
00535         Box3D domain,
00536         MultiGridTensorField3D<T1,nDim1>& field1,
00537         MultiGridTensorField3D<T2,nDim2>& field2, plint referenceLevel,
00538         plint boundaryWidth );
00539 
00540 template<typename T1, int nDim1, typename T2, int nDim2>
00541 void integrateProcessingFunctional (
00542         BoundedBoxProcessingFunctional3D_TT<T1,nDim1,T2,nDim2>* functional,
00543         Box3D domain,
00544         MultiGridTensorField3D<T1,nDim1>& field1,
00545         MultiGridTensorField3D<T2,nDim2>& field2, plint referenceLevel,
00546         plint boundaryWidth, plint level=0 );
00547 
00548 
00549 template<typename T1, typename T2, int nDim>
00550 void applyProcessingFunctional (
00551         BoundedBoxProcessingFunctional3D_ST<T1,T2,nDim>* functional,
00552         Box3D domain,
00553         MultiGridScalarField3D<T1>& field1,
00554         MultiGridTensorField3D<T2,nDim>& field2, plint referenceLevel,
00555         plint boundaryWidth );
00556 
00557 template<typename T1, typename T2, int nDim>
00558 void integrateProcessingFunctional (
00559         BoundedBoxProcessingFunctional3D_ST<T1,T2,nDim>* functional,
00560         Box3D domain,
00561         MultiGridScalarField3D<T1>& field1,
00562         MultiGridTensorField3D<T2,nDim>& field2, plint referenceLevel,
00563         plint boundaryWidth, plint level=0 );
00564 
00565 
00566 template<typename T1, template<typename U> class Descriptor, typename T2>
00567 void applyProcessingFunctional (
00568         BoundedBoxProcessingFunctional3D_LS<T1,Descriptor,T2>* functional,
00569         Box3D domain,
00570         MultiGridLattice3D<T1,Descriptor>& lattice,
00571         MultiGridScalarField3D<T2>& field, plint referenceLevel,
00572         plint boundaryWidth = Descriptor<T1>::boundaryWidth );
00573 
00574 template<typename T1, template<typename U> class Descriptor, typename T2>
00575 void integrateProcessingFunctional (
00576         BoundedBoxProcessingFunctional3D_LS<T1,Descriptor,T2>* functional,
00577         Box3D domain,
00578         MultiGridLattice3D<T1,Descriptor>& lattice,
00579         MultiGridScalarField3D<T2>& field, plint referenceLevel,
00580         plint boundaryWidth = Descriptor<T1>::boundaryWidth, plint level=0 );
00581 
00582 template<typename T1, template<typename U> class Descriptor, typename T2, int nDim>
00583 void applyProcessingFunctional (
00584         BoundedBoxProcessingFunctional3D_LT<T1,Descriptor,T2,nDim>* functional,
00585         Box3D domain,
00586         MultiGridLattice3D<T1,Descriptor>& lattice,
00587         MultiGridTensorField3D<T2,nDim>& field, plint referenceLevel,
00588         plint boundaryWidth = Descriptor<T1>::boundaryWidth );
00589 
00590 template<typename T1, template<typename U> class Descriptor, typename T2, int nDim>
00591 void integrateProcessingFunctional (
00592         BoundedBoxProcessingFunctional3D_LT<T1,Descriptor,T2,nDim>* functional,
00593         Box3D domain,
00594         MultiGridLattice3D<T1,Descriptor>& lattice,
00595         MultiGridTensorField3D<T2,nDim>& field, plint referenceLevel,
00596         plint boundaryWidth = Descriptor<T1>::boundaryWidth, plint level=0 );
00597 
00598 }  // namespace plb
00599 
00600 #endif  // MULTI_GRID_DATA_PROCESSOR_WRAPPER_3D_H