00001 #ifdef CH_LANG_CC 00002 /* 00003 * _______ __ 00004 * / ___/ / ___ __ _ / / ___ 00005 * / /__/ _ \/ _ \/ V \/ _ \/ _ \ 00006 * \___/_//_/\___/_/_/_/_.__/\___/ 00007 * Please refer to Copyright.txt, in Chombo's root directory. 00008 */ 00009 #endif 00010 00011 // Norms.H 00012 // petermc, 12 Aug 2002 00013 // petermc, 17 Oct 2005, put integral functions into NodeIntegrals.H 00014 00015 #ifndef _NODENORMS_H_ 00016 #define _NODENORMS_H_ 00017 00018 #include "LevelData.H" 00019 #include "NodeFArrayBox.H" 00020 #include "Vector.H" 00021 #include "IntVectSet.H" 00022 #include "NamespaceHeader.H" 00023 00024 /// Computes L^p norm of a subbox of a NodeFArrayBox. 00025 /** Computes L^p norm of the data in a subbox of <i>a_nfab</i>. 00026 */ 00027 Real norm(/// the data on which to take the norm 00028 const NodeFArrayBox& a_nfab, 00029 /// mesh spacing at this level 00030 const Real a_dx, 00031 /// CELL-centered subbox over which to take norm 00032 const Box& a_subbox, 00033 /// norm to take, or 0 for max norm 00034 const int a_p, 00035 /// starting component 00036 const int a_startComp = 0, 00037 /// number of components 00038 const int a_numComp = 1); 00039 00040 /// Computes max norm of a subbox of a NodeFArrayBox. 00041 /** Computes max norm of the data in a subbox of <i>a_nfab</i>. 00042 */ 00043 Real maxnorm(/// the data on which to take the norm 00044 const NodeFArrayBox& a_nfab, 00045 /// CELL-centered subbox over which to take norm 00046 const Box& a_subbox, 00047 /// starting component 00048 const int a_startComp = 0, 00049 /// number of components 00050 const int a_numComp = 1); 00051 00052 /// Computes L^p norm of a BoxLayoutData<NodeFArrayBox>. 00053 /** Computes L^p norm of <i>a_layout</i>. 00054 Ignores ghost cells for LevelData. 00055 00056 This is an internal function that should NOT normally 00057 be called by the user. 00058 */ 00059 Real norm(/// the data on which to take the norm 00060 const BoxLayoutData<NodeFArrayBox>& a_layout, 00061 /// mesh spacing at this level 00062 const Real a_dx, 00063 /// norm to take, or 0 for max norm 00064 const int a_p, 00065 /// interval of components to use 00066 const Interval& a_interval, 00067 /// verbosity, whether to print norms of each box 00068 bool a_verbose = false); 00069 00070 /// Computes L^p norm of a BoxLayoutData<NodeFArrayBox>. 00071 /** Computes L^p norm of <i>a_layout</i>. 00072 Ignores ghost cells for LevelData. 00073 00074 This function uses the masks. 00075 */ 00076 Real norm(/// the data on which to take the norm 00077 const BoxLayoutData<NodeFArrayBox>& a_layout, 00078 /// mask for the data 00079 const LevelData<NodeFArrayBox>& a_mask, 00080 /// domain of this level 00081 const ProblemDomain& a_domain, 00082 /// mesh spacing at this level 00083 const Real a_dx, 00084 /// norm to take, or 0 for max norm 00085 const int a_p, 00086 /// interval of components to use 00087 const Interval& a_interval, 00088 /// verbosity, whether to print norms of each box 00089 bool a_verbose = false); 00090 00091 /// Computes max norm of a BoxLayoutData<NodeFArrayBox>. 00092 /** Computes max norm of <i>a_layout</i>. 00093 Ignores ghost cells for LevelData. 00094 00095 This function uses the masks. 00096 */ 00097 Real maxnorm(/// the data on which to take the norm 00098 const BoxLayoutData<NodeFArrayBox>& a_layout, 00099 /// mask for the data 00100 const LevelData<NodeFArrayBox>& a_mask, 00101 /// domain of the data 00102 const ProblemDomain& a_domain, 00103 /// interval of components to use 00104 const Interval& a_interval, 00105 /// verbosity, whether to print norms of each box 00106 bool a_verbose = false); 00107 00108 /// Computes max norm of a BoxLayoutData<NodeFArrayBox>. 00109 /** Computes max norm of <i>a_layout</i>. 00110 Ignores ghost cells for LevelData. 00111 00112 This is an internal function that should NOT normally 00113 be called by the user. 00114 */ 00115 Real maxnorm(/// the data on which to take the norm 00116 const BoxLayoutData<NodeFArrayBox>& a_layout, 00117 /// components to use in computing norm 00118 const Interval& a_interval, 00119 /// verbosity, whether to print norms of each box 00120 bool a_verbose = false); 00121 00122 /// Computes norm of multilevel array, counting only valid nodes at each level. 00123 /** 00124 Computes norm of multilevel array <i>a_phi</i>. 00125 Only the valid nodes at each level are counted. 00126 The valid nodes at a level are those that are not covered 00127 by the interior of any finer level. 00128 */ 00129 Real norm(/// multilevel data on which to take the norm 00130 const Vector<LevelData<NodeFArrayBox>* >& a_phi, 00131 /// CELL-centered physical domain on each level 00132 const Vector<ProblemDomain>& a_domain, 00133 /// refinement ratios between successive levels 00134 const Vector<int>& a_nRefFine, 00135 /// mesh spacing at base level <i>a_lBase</i> 00136 const Real a_dxCrse, 00137 /// components to use in computing norm 00138 const Interval& a_comps, 00139 /// norm to take, or 0 for max norm 00140 const int a_p, 00141 /// index of base level to use in Vectors 00142 const int a_lBase, 00143 /// verbosity, whether to print norms of each box 00144 bool a_verbose = false); 00145 00146 /// Computes norm of multilevel array, counting only valid nodes at each level. 00147 /** 00148 Computes norm of multilevel array <i>a_phi</i>. 00149 Only the valid nodes at each level are counted. 00150 The valid nodes at a level are those that are not covered 00151 by the interior of any finer level. 00152 00153 a_IVSVext and a_IVSVintFinerCoarsened can be found by: 00154 exteriorAndInteriorNodes(a_IVSVext, a_IVSVintFinerCoarsened, 00155 layouts, a_domain, a_nRefFine); 00156 where layouts is Vector<DisjointBoxLayout> on which the data in 00157 a_phi live. 00158 */ 00159 Real norm(/// multilevel data on which to take the norm 00160 const Vector<LevelData<NodeFArrayBox>* >& a_phi, 00161 /// CELL-centered physical domain on each level 00162 const Vector<ProblemDomain>& a_domain, 00163 /// exterior boundary nodes at all level 00164 const Vector<LayoutData< Vector<Box> >* >& a_IVSVext, 00165 /// interior boundary nodes of coarsened finer-level grids at all levels except finest 00166 const Vector<LayoutData< Vector<Box> >* >& a_IVSVintFinerCoarsened, 00167 /// coarsened finer-level grids at all levels except finest 00168 const Vector<DisjointBoxLayout>& a_layoutsFinerCoarsened, 00169 /// refinement ratios between successive levels 00170 const Vector<int>& a_nRefFine, 00171 /// mesh spacing at base level <i>a_lBase</i> 00172 const Real a_dxCrse, 00173 /// components to use in computing norm 00174 const Interval& a_comps, 00175 /// norm to take, or 0 for max norm 00176 const int a_p, 00177 /// index of base level to use in Vectors 00178 const int a_lBase, 00179 /// verbosity, whether to print norms of each box 00180 bool a_verbose = false); 00181 00182 /// Computes norm of multilevel array, counting only valid nodes at each level. 00183 /** 00184 Computes norm of multilevel array <i>a_phi</i>. 00185 Only the valid nodes at each level are counted. 00186 The valid nodes at a level are those that are not covered 00187 by the interior of any finer level. 00188 00189 a_IVSVext and a_IVSVintFinerCoarsened can be found by: 00190 exteriorAndInteriorNodes(a_IVSVext, a_IVSVintFinerCoarsened, 00191 layouts, a_domain, a_nRefFine); 00192 where layouts is Vector<DisjointBoxLayout> on which the data in 00193 a_phi live. 00194 */ 00195 Real norm(/// multilevel data on which to take the norm 00196 const Vector<LevelData<NodeFArrayBox>* >& a_phi, 00197 /// CELL-centered physical domain on each level 00198 const Vector<ProblemDomain>& a_domain, 00199 /// exterior boundary nodes at all level 00200 const Vector<LayoutData< Vector<IntVectSet> >* >& a_IVSVext, 00201 /// interior boundary nodes of coarsened finer-level grids at all levels except finest 00202 const Vector<LayoutData< Vector<IntVectSet> >* >& a_IVSVintFinerCoarsened, 00203 /// coarsened finer-level grids at all levels except finest 00204 const Vector<DisjointBoxLayout>& a_layoutsFinerCoarsened, 00205 /// refinement ratios between successive levels 00206 const Vector<int>& a_nRefFine, 00207 /// mesh spacing at base level <i>a_lBase</i> 00208 const Real a_dxCrse, 00209 /// components to use in computing norm 00210 const Interval& a_comps, 00211 /// norm to take, or 0 for max norm 00212 const int a_p, 00213 /// index of base level to use in Vectors 00214 const int a_lBase, 00215 /// verbosity, whether to print norms of each box 00216 bool a_verbose = false); 00217 00218 /// Computes norm of multilevel array, counting only valid nodes at each level. 00219 /** 00220 Computes norm of multilevel array <i>a_phi</i>. 00221 Only the valid nodes at each level are counted, with the mask vector. 00222 The valid nodes at a level are those that are not covered 00223 by the interior of any finer level. 00224 */ 00225 Real norm(/// multilevel data on which to take the norm 00226 const Vector<LevelData<NodeFArrayBox>* >& a_phi, 00227 /// mask at each level 00228 const Vector<LevelData<NodeFArrayBox>* >& a_mask, 00229 /// domain at each level 00230 const Vector<ProblemDomain>& a_vectPD, 00231 /// refinement ratios between successive levels 00232 const Vector<int>& a_nRefFine, 00233 /// mesh spacing at base level <i>a_lBase</i> 00234 const Real a_dxCrse, 00235 /// components to use in computing norm 00236 const Interval& a_comps, 00237 /// norm to take, or 0 for max norm 00238 const int a_p, 00239 /// index of base level to use in Vectors 00240 const int a_lBase, 00241 /// verbosity, whether to print norms of each box 00242 bool a_verbose = false); 00243 00244 /// Computes norm of multilevel array, counting only valid nodes at each level. 00245 /** 00246 Computes norm of multilevel array <i>a_phi</i>. 00247 Only the valid nodes at each level are counted. 00248 The valid nodes at a level are those that are not covered 00249 by the interior of any finer level. 00250 */ 00251 Real norm(/// multilevel data on which to take the norm 00252 const Vector<LevelData<NodeFArrayBox>* >& a_phi, 00253 /// CELL-centered physical domain on each level 00254 const Vector<Box>& a_domain, 00255 /// refinement ratios between successive levels 00256 const Vector<int>& a_nRefFine, 00257 /// mesh spacing at base level <i>a_lBase</i> 00258 const Real a_dxCrse, 00259 /// components to use in computing norm 00260 const Interval& a_comps, 00261 /// norm to take, or 0 for max norm 00262 const int a_p, 00263 /// index of base level to use in Vectors 00264 const int a_lBase, 00265 /// verbosity, whether to print norms of each box 00266 bool a_verbose = false); 00267 00268 /// Computes norm of single-level array, counting only valid nodes. 00269 /** 00270 Computes norm of single-level array <i>a_phi</i>. 00271 Only the valid nodes at this level are counted. 00272 The valid nodes are the interior nodes of this level that are not 00273 projections of interior nodes of the finer level, if any. 00274 00275 This function computes exterior boundary nodes, and interior boundary 00276 nodes of the coarsened finer level, if any. It is more efficient 00277 to precompute these boundary-node objects and call one of the other 00278 norm functions below. 00279 */ 00280 Real norm(/// the data on which to take the norm 00281 const LevelData<NodeFArrayBox>& a_phi, 00282 /// CELL-centered physical domain on each level 00283 const ProblemDomain& a_domain, 00284 /// pointer to CELL-centered grids on the next finer level, or NULL if there is none. 00285 const DisjointBoxLayout* a_finerGridsPtr, 00286 /// refinement ratio to next finer level 00287 const int a_nRefFine, 00288 /// mesh spacing at this level 00289 const Real a_dx, 00290 /// interval of components to use 00291 const Interval& a_comps, 00292 /// norm to take, or 0 for max norm 00293 const int a_p, 00294 /// verbosity, whether to print norms of each box 00295 bool a_verbose = false); 00296 00297 /// Computes norm of single-level array, counting only valid nodes. 00298 /** 00299 Computes norm of single-level array <i>a_phi</i>. 00300 Only the valid nodes at this level are counted. 00301 The valid nodes are the interior nodes of this level that are not 00302 projections of interior nodes of the finer level, if any. 00303 00304 This function computes exterior boundary nodes, and interior boundary 00305 nodes of the coarsened finer level, if any. It is more efficient 00306 to precompute these boundary-node objects and call one of the other 00307 norm functions below. 00308 */ 00309 Real norm(/// the data on which to take the norm 00310 const LevelData<NodeFArrayBox>& a_phi, 00311 /// CELL-centered physical domain on each level 00312 const Box& a_domain, 00313 /// pointer to CELL-centered grids on the next finer level, or NULL if there is none. 00314 const DisjointBoxLayout* a_finerGridsPtr, 00315 /// refinement ratio to next finer level 00316 const int a_nRefFine, 00317 /// mesh spacing at this level 00318 const Real a_dx, 00319 /// interval of components to use 00320 const Interval& a_comps, 00321 /// norm to take, or 0 for max norm 00322 const int a_p, 00323 /// verbosity, whether to print norms of each box 00324 bool a_verbose = false); 00325 00326 /// Computes norm of single-level array, counting only valid nodes. 00327 /** 00328 Computes norm of single-level array <i>a_phi</i>. 00329 Only the valid nodes at this level are counted. 00330 The valid nodes are the interior nodes of this level that are not 00331 projections of interior nodes of the finer level, if any. 00332 00333 The <i>a_IVSVext</i> argument is obtained from the calls:<br> 00334 <tt> 00335 interiorBoundaryNodes(IVSVint, a_phi.getBoxes(), a_domain);<br> 00336 exteriorBoundaryNodes(a_IVSVext, IVSVint, a_phi.getBoxes(); 00337 </tt> 00338 00339 The <i>a_IVSVintFinerCoarsened</i> argument is obtained from the call:<br> 00340 <tt> 00341 interiorBoundaryNodes(a_IVSVintFinerCoarsened, a_phi.getBoxes(), a_finerGridsCoarsened, a_domain); 00342 </tt> 00343 */ 00344 Real norm(/// the data on which to take the norm 00345 const LevelData<NodeFArrayBox>& a_phi, 00346 /// CELL-centered physical domain on each level 00347 const ProblemDomain& a_domain, 00348 /// CELL-centered grids on the next finer level 00349 const DisjointBoxLayout& a_finerGridsCoarsened, 00350 /// exterior boundary nodes of this level 00351 const LayoutData< Vector<IntVectSet> >& a_IVSVext, 00352 /// interior boundary nodes of coarsened finer-level grids 00353 const LayoutData< Vector<IntVectSet> >& a_IVSVintFinerCoarsened, 00354 /// refinement ratio to next finer level 00355 const int a_nRefFine, 00356 /// mesh spacing at this level 00357 const Real a_dx, 00358 /// interval of components to use 00359 const Interval& a_comps, 00360 /// norm to take, or 0 for max norm 00361 const int a_p, 00362 /// verbosity, whether to print norms of each box 00363 bool a_verbose = false); 00364 00365 00366 /// Computes norm of single-level array, counting only valid nodes. 00367 /** 00368 Computes norm of single-level array <i>a_phi</i>. 00369 Only the valid nodes at this level are counted. 00370 The valid nodes are the interior nodes of this level that are not 00371 projections of interior nodes of the finer level, if any. 00372 00373 The <i>a_IVSVext</i> argument is obtained from the calls:<br> 00374 <tt> 00375 interiorBoundaryNodes(IVSVint, a_phi.getBoxes(), a_domain);<br> 00376 exteriorBoundaryNodes(a_IVSVext, IVSVint, a_phi.getBoxes(); 00377 </tt> 00378 00379 The <i>a_IVSVintFinerCoarsened</i> argument is obtained from the call:<br> 00380 <tt> 00381 interiorBoundaryNodes(a_IVSVintFinerCoarsened, a_phi.getBoxes(), a_finerGridsCoarsened, a_domain); 00382 </tt> 00383 */ 00384 Real norm(/// the data on which to take the norm 00385 const LevelData<NodeFArrayBox>& a_phi, 00386 /// CELL-centered physical domain on each level 00387 const ProblemDomain& a_domain, 00388 /// CELL-centered grids on the next finer level 00389 const DisjointBoxLayout& a_finerGridsCoarsened, 00390 /// exterior boundary nodes of this level 00391 const LayoutData< Vector<Box> >& a_IVSVext, 00392 /// interior boundary nodes of coarsened finer-level grids 00393 const LayoutData< Vector<Box> >& a_IVSVintFinerCoarsened, 00394 /// refinement ratio to next finer level 00395 const int a_nRefFine, 00396 /// mesh spacing at this level 00397 const Real a_dx, 00398 /// interval of components to use 00399 const Interval& a_comps, 00400 /// norm to take, or 0 for max norm 00401 const int a_p, 00402 /// verbosity, whether to print norms of each box 00403 bool a_verbose = false); 00404 00405 00406 /// Computes norm of single-level array, counting only valid nodes. 00407 /** 00408 Computes norm of single-level array <i>a_phi</i>. 00409 Only the valid nodes at this level are counted. 00410 The valid nodes are the interior nodes of this level that are not 00411 projections of interior nodes of the finer level, if any. 00412 00413 The <i>a_IVSVext</i> argument is obtained from the calls:<br> 00414 <tt> 00415 interiorBoundaryNodes(IVSVint, a_phi.getBoxes(), a_domain);<br> 00416 exteriorBoundaryNodes(a_IVSVext, IVSVint, a_phi.getBoxes(); 00417 </tt> 00418 00419 The <i>a_IVSVintFinerCoarsened</i> argument is obtained from the call:<br> 00420 <tt> 00421 interiorBoundaryNodes(a_IVSVintFinerCoarsened, a_phi.getBoxes(), a_finerGridsCoarsened, a_domain); 00422 </tt> 00423 */ 00424 Real norm(/// the data on which to take the norm 00425 const LevelData<NodeFArrayBox>& a_phi, 00426 /// CELL-centered physical domain on each level 00427 const Box& a_domain, 00428 /// CELL-centered grids on the next finer level 00429 const DisjointBoxLayout& a_finerGridsCoarsened, 00430 /// exterior boundary nodes of this level 00431 const LayoutData< Vector<IntVectSet> >& a_IVSVext, 00432 /// interior boundary nodes of coarsened finer-level grids 00433 const LayoutData< Vector<IntVectSet> >& a_IVSVintFinerCoarsened, 00434 /// refinement ratio to next finer level 00435 const int a_nRefFine, 00436 /// mesh spacing at this level 00437 const Real a_dx, 00438 /// interval of components to use 00439 const Interval& a_comps, 00440 /// norm to take, or 0 for max norm 00441 const int a_p, 00442 /// verbosity, whether to print norms of each box 00443 bool a_verbose = false); 00444 00445 00446 /// Computes norm of single-level array, counting only valid nodes. 00447 /** 00448 Computes norm of single-level array <i>a_phi</i>. 00449 Only the valid nodes at this level are counted. 00450 The valid nodes are the interior nodes of this level that are not 00451 projections of interior nodes of the finer level, if any. 00452 00453 The <i>a_IVSVext</i> argument is obtained from the calls:<br> 00454 <tt> 00455 interiorBoundaryNodes(IVSVint, a_phi.getBoxes(), a_domain);<br> 00456 exteriorBoundaryNodes(a_IVSVext, IVSVint, a_phi.getBoxes(); 00457 </tt> 00458 00459 The <i>a_IVSVintFinerCoarsened</i> argument is obtained from the call:<br> 00460 <tt> 00461 interiorBoundaryNodes(a_IVSVintFinerCoarsened, a_phi.getBoxes(), a_finerGridsCoarsened, a_domain); 00462 </tt> 00463 */ 00464 Real norm(/// the data on which to take the norm 00465 const LevelData<NodeFArrayBox>& a_phi, 00466 /// CELL-centered physical domain on each level 00467 const Box& a_domain, 00468 /// CELL-centered grids on the next finer level 00469 const DisjointBoxLayout& a_finerGridsCoarsened, 00470 /// exterior boundary nodes of this level 00471 const LayoutData< Vector<Box> >& a_IVSVext, 00472 /// interior boundary nodes of coarsened finer-level grids 00473 const LayoutData< Vector<Box> >& a_IVSVintFinerCoarsened, 00474 /// refinement ratio to next finer level 00475 const int a_nRefFine, 00476 /// mesh spacing at this level 00477 const Real a_dx, 00478 /// interval of components to use 00479 const Interval& a_comps, 00480 /// norm to take, or 0 for max norm 00481 const int a_p, 00482 /// verbosity, whether to print norms of each box 00483 bool a_verbose = false); 00484 00485 00486 /// Computes norm of single-level array, counting only valid nodes, with no finer level. 00487 /** 00488 Computes norm of single-level array <i>a_phi</i>, where there is no 00489 finer level. Only the valid nodes at this level are counted. 00490 The valid nodes are the interior nodes of this level. 00491 00492 The <i>a_IVSVext</i> argument is obtained from the calls:<br> 00493 <tt> 00494 interiorBoundaryNodes(IVSVint, a_phi.getBoxes(), a_domain);<br> 00495 exteriorBoundaryNodes(a_IVSVext, IVSVint, a_phi.getBoxes(); 00496 </tt> 00497 */ 00498 Real norm(/// the data on which to take the norm 00499 const LevelData<NodeFArrayBox>& a_phi, 00500 /// CELL-centered physical domain on each level 00501 const ProblemDomain& a_domain, 00502 /// exterior boundary nodes of this level 00503 const LayoutData< Vector<IntVectSet> >& a_IVSVext, 00504 /// mesh spacing at this level 00505 const Real a_dx, 00506 /// interval of components to use 00507 const Interval& a_comps, 00508 /// norm to take, or 0 for max norm 00509 const int a_p, 00510 /// verbosity, whether to print norms of each box 00511 bool a_verbose = false); 00512 00513 00514 /// Computes norm of single-level array, counting only valid nodes, with no finer level. 00515 /** 00516 Computes norm of single-level array <i>a_phi</i>, where there is no 00517 finer level. Only the valid nodes at this level are counted. 00518 The valid nodes are the interior nodes of this level. 00519 00520 The <i>a_IVSVext</i> argument is obtained from the calls:<br> 00521 <tt> 00522 interiorBoundaryNodes(IVSVint, a_phi.getBoxes(), a_domain);<br> 00523 exteriorBoundaryNodes(a_IVSVext, IVSVint, a_phi.getBoxes(); 00524 </tt> 00525 */ 00526 Real norm(/// the data on which to take the norm 00527 const LevelData<NodeFArrayBox>& a_phi, 00528 /// CELL-centered physical domain on each level 00529 const ProblemDomain& a_domain, 00530 /// exterior boundary nodes of this level 00531 const LayoutData< Vector<Box> >& a_IVSVext, 00532 /// mesh spacing at this level 00533 const Real a_dx, 00534 /// interval of components to use 00535 const Interval& a_comps, 00536 /// norm to take, or 0 for max norm 00537 const int a_p, 00538 /// verbosity, whether to print norms of each box 00539 bool a_verbose = false); 00540 00541 00542 /// Computes max norm of multilevel array, counting only valid nodes at each level. 00543 /** 00544 Computes max norm of multilevel array <i>a_phi</i>. 00545 Only the valid nodes at each level are counted. 00546 The valid nodes at a level are those that are not covered 00547 by the interior of any finer level. 00548 */ 00549 Real maxnorm(/// multilevel data on which to take the norm 00550 const Vector<LevelData<NodeFArrayBox>* >& a_phi, 00551 /// CELL-centered physical domain on each level 00552 const Vector<ProblemDomain>& a_domain, 00553 /// refinement ratios between successive levels 00554 const Vector<int>& a_nRefFine, 00555 /// components to use in computing norm 00556 const Interval& a_comps, 00557 /// index of base level to use in Vectors 00558 const int a_lBase, 00559 /// verbosity, whether to print norms of each box 00560 bool a_verbose = false); 00561 00562 /// Computes max norm of multilevel array, counting only valid nodes at each level. 00563 /** 00564 Computes max norm of multilevel array <i>a_phi</i>. 00565 Only the valid nodes at each level are counted. 00566 The valid nodes at a level are those that are not covered 00567 by the interior of any finer level. 00568 */ 00569 Real maxnorm(/// multilevel data on which to take the norm 00570 const Vector<LevelData<NodeFArrayBox>* >& a_phi, 00571 /// CELL-centered physical domain on each level 00572 const Vector<Box>& a_domain, 00573 /// refinement ratios between successive levels 00574 const Vector<int>& a_nRefFine, 00575 /// components to use in computing norm 00576 const Interval& a_comps, 00577 /// index of base level to use in Vectors 00578 const int a_lBase, 00579 /// verbosity, whether to print norms of each box 00580 bool a_verbose = false); 00581 00582 /// Computes max norm of single-level array, counting only valid nodes. 00583 /** 00584 Computes max norm of single-level array <i>a_phi</i>. 00585 Only the valid nodes at this level are counted. 00586 The valid nodes are the interior nodes of this level that are not 00587 projections of interior nodes of the finer level, if any. 00588 00589 This function computes exterior boundary nodes, and interior boundary 00590 nodes of the coarsened finer level, if any. It is more efficient 00591 to precompute these boundary-node objects and call one of the other 00592 maxnorm functions below. 00593 */ 00594 Real maxnorm(/// the data on which to take the norm 00595 const LevelData<NodeFArrayBox>& a_phi, 00596 /// CELL-centered physical domain on each level 00597 const ProblemDomain& a_domain, 00598 /// pointer to CELL-centered grids on the next finer level, or NULL if there is none. 00599 const DisjointBoxLayout* a_finerGridsPtr, 00600 /// refinement ratio to next finer level 00601 const int a_nRefFine, 00602 /// interval of components to use 00603 const Interval& a_comps, 00604 /// verbosity, whether to print norms of each box 00605 bool a_verbose = false); 00606 00607 /// Computes max norm of single-level array, counting only valid nodes. 00608 /** 00609 Computes max norm of single-level array <i>a_phi</i>. 00610 Only the valid nodes at this level are counted. 00611 The valid nodes are the interior nodes of this level that are not 00612 projections of interior nodes of the finer level, if any. 00613 00614 This function computes exterior boundary nodes, and interior boundary 00615 nodes of the coarsened finer level, if any. It is more efficient 00616 to precompute these boundary-node objects and call one of the other 00617 maxnorm functions below. 00618 */ 00619 Real maxnorm(/// the data on which to take the norm 00620 const LevelData<NodeFArrayBox>& a_phi, 00621 /// CELL-centered physical domain on each level 00622 const Box& a_domain, 00623 /// pointer to CELL-centered grids on the next finer level, or NULL if there is none. 00624 const DisjointBoxLayout* a_finerGridsPtr, 00625 /// refinement ratio to next finer level 00626 const int a_nRefFine, 00627 /// interval of components to use 00628 const Interval& a_comps, 00629 /// verbosity, whether to print norms of each box 00630 bool a_verbose = false); 00631 00632 00633 /// Computes max norm of single-level array, counting only valid nodes. 00634 /** 00635 Computes max norm of single-level array <i>a_phi</i>. 00636 Only the valid nodes at this level are counted. 00637 The valid nodes are the interior nodes of this level that are not 00638 projections of interior nodes of the finer level, if any. 00639 00640 The <i>a_IVSVext</i> argument is obtained from the calls:<br> 00641 <tt> 00642 interiorBoundaryNodes(IVSVint, a_phi.getBoxes(), a_domain);<br> 00643 exteriorBoundaryNodes(a_IVSVext, IVSVint, a_phi.getBoxes(); 00644 </tt> 00645 00646 The <i>a_IVSVintFinerCoarsened</i> argument is obtained from the calls:<br> 00647 <tt> 00648 interiorBoundaryNodes(a_IVSVintFinerCoarsened, 00649 a_phi.getBoxes(), a_finerGridsCoarsened, a_domain); 00650 </tt> 00651 */ 00652 Real maxnorm(/// the data on which to take the norm 00653 const LevelData<NodeFArrayBox>& a_phi, 00654 /// CELL-centered physical domain on each level 00655 const ProblemDomain& a_domain, 00656 /// CELL-centered grids on the next finer level 00657 const DisjointBoxLayout& a_finerGridsCoarsened, 00658 /// exterior boundary nodes of this level 00659 const LayoutData< Vector<IntVectSet> >& a_IVSVext, 00660 /// interior boundary nodes of coarsened finer-level grids 00661 const LayoutData< Vector<IntVectSet> >& a_IVSVintFinerCoarsened, 00662 /// refinement ratio to next finer level 00663 const int a_nRefFine, 00664 /// interval of components to use 00665 const Interval& a_comps, 00666 /// verbosity, whether to print norms of each box 00667 bool a_verbose = false); 00668 00669 00670 /// Computes max norm of single-level array, counting only valid nodes. 00671 /** 00672 Computes max norm of single-level array <i>a_phi</i>. 00673 Only the valid nodes at this level are counted. 00674 The valid nodes are the interior nodes of this level that are not 00675 projections of interior nodes of the finer level, if any. 00676 00677 The <i>a_IVSVext</i> argument is obtained from the calls:<br> 00678 <tt> 00679 interiorBoundaryNodes(IVSVint, a_phi.getBoxes(), a_domain);<br> 00680 exteriorBoundaryNodes(a_IVSVext, IVSVint, a_phi.getBoxes(); 00681 </tt> 00682 00683 The <i>a_IVSVintFinerCoarsened</i> argument is obtained from the calls:<br> 00684 <tt> 00685 interiorBoundaryNodes(a_IVSVintFinerCoarsened, 00686 a_phi.getBoxes(), a_finerGridsCoarsened, a_domain); 00687 </tt> 00688 */ 00689 Real maxnorm(/// the data on which to take the norm 00690 const LevelData<NodeFArrayBox>& a_phi, 00691 /// CELL-centered physical domain on each level 00692 const ProblemDomain& a_domain, 00693 /// CELL-centered grids on the next finer level 00694 const DisjointBoxLayout& a_finerGridsCoarsened, 00695 /// exterior boundary nodes of this level 00696 const LayoutData< Vector<Box> >& a_IVSVext, 00697 /// interior boundary nodes of coarsened finer-level grids 00698 const LayoutData< Vector<Box> >& a_IVSVintFinerCoarsened, 00699 /// refinement ratio to next finer level 00700 const int a_nRefFine, 00701 /// interval of components to use 00702 const Interval& a_comps, 00703 /// verbosity, whether to print norms of each box 00704 bool a_verbose = false); 00705 00706 00707 /// Computes max norm of single-level array, counting only valid nodes. 00708 /** 00709 Computes max norm of single-level array <i>a_phi</i>. 00710 Only the valid nodes at this level are counted. 00711 The valid nodes are the interior nodes of this level that are not 00712 projections of interior nodes of the finer level, if any. 00713 00714 The <i>a_IVSVext</i> argument is obtained from the calls:<br> 00715 <tt> 00716 interiorBoundaryNodes(IVSVint, a_phi.getBoxes(), a_domain);<br> 00717 exteriorBoundaryNodes(a_IVSVext, IVSVint, a_phi.getBoxes(); 00718 </tt> 00719 00720 The <i>a_IVSVintFinerCoarsened</i> argument is obtained from the calls:<br> 00721 <tt> 00722 interiorBoundaryNodes(a_IVSVintFinerCoarsened, 00723 a_phi.getBoxes(), a_finerGridsCoarsened, a_domain); 00724 </tt> 00725 */ 00726 Real maxnorm(/// the data on which to take the norm 00727 const LevelData<NodeFArrayBox>& a_phi, 00728 /// CELL-centered physical domain on each level 00729 const Box& a_domain, 00730 /// CELL-centered grids on the next finer level 00731 const DisjointBoxLayout& a_finerGridsCoarsened, 00732 /// exterior boundary nodes of this level 00733 const LayoutData< Vector<IntVectSet> >& a_IVSVext, 00734 /// interior boundary nodes of coarsened finer-level grids 00735 const LayoutData< Vector<IntVectSet> >& a_IVSVintFinerCoarsened, 00736 /// refinement ratio to next finer level 00737 const int a_nRefFine, 00738 /// interval of components to use 00739 const Interval& a_comps, 00740 /// verbosity, whether to print norms of each box 00741 bool a_verbose = false); 00742 00743 00744 /// Computes max norm of single-level array, counting only valid nodes. 00745 /** 00746 Computes max norm of single-level array <i>a_phi</i>. 00747 Only the valid nodes at this level are counted. 00748 The valid nodes are the interior nodes of this level that are not 00749 projections of interior nodes of the finer level, if any. 00750 00751 The <i>a_IVSVext</i> argument is obtained from the calls:<br> 00752 <tt> 00753 interiorBoundaryNodes(IVSVint, a_phi.getBoxes(), a_domain);<br> 00754 exteriorBoundaryNodes(a_IVSVext, IVSVint, a_phi.getBoxes(); 00755 </tt> 00756 00757 The <i>a_IVSVintFinerCoarsened</i> argument is obtained from the calls:<br> 00758 <tt> 00759 interiorBoundaryNodes(a_IVSVintFinerCoarsened, 00760 a_phi.getBoxes(), a_finerGridsCoarsened, a_domain); 00761 </tt> 00762 */ 00763 Real maxnorm(/// the data on which to take the norm 00764 const LevelData<NodeFArrayBox>& a_phi, 00765 /// CELL-centered physical domain on each level 00766 const Box& a_domain, 00767 /// CELL-centered grids on the next finer level 00768 const DisjointBoxLayout& a_finerGridsCoarsened, 00769 /// exterior boundary nodes of this level 00770 const LayoutData< Vector<Box> >& a_IVSVext, 00771 /// interior boundary nodes of coarsened finer-level grids 00772 const LayoutData< Vector<Box> >& a_IVSVintFinerCoarsened, 00773 /// refinement ratio to next finer level 00774 const int a_nRefFine, 00775 /// interval of components to use 00776 const Interval& a_comps, 00777 /// verbosity, whether to print norms of each box 00778 bool a_verbose = false); 00779 00780 00781 /// Computes max norm of single-level array, counting only valid nodes, with no finer level. 00782 /** 00783 Computes max norm of single-level array <i>a_phi</i>, where there is no 00784 finer level. 00785 00786 Only the valid nodes at this level are counted. 00787 The valid nodes are the interior nodes of this level. 00788 00789 The a_IVSVext argument is obtained from the calls:<br> 00790 <tt> 00791 interiorBoundaryNodes(IVSVint, a_phi.getBoxes(), a_domain);<br> 00792 exteriorBoundaryNodes(a_IVSVext, IVSVint, a_phi.getBoxes(); 00793 </tt> 00794 */ 00795 Real maxnorm(/// the data on which to take the norm 00796 const LevelData<NodeFArrayBox>& a_phi, 00797 /// CELL-centered physical domain on each level 00798 const ProblemDomain& a_domain, 00799 /// exterior boundary nodes of this level 00800 const LayoutData< Vector<IntVectSet> >& a_IVSVext, 00801 /// interval of components to use 00802 const Interval& a_comps, 00803 /// verbosity, whether to print norms of each box 00804 bool a_verbose = false); 00805 00806 /// Computes max norm of single-level array, counting only valid nodes, with no finer level. 00807 /** 00808 Computes max norm of single-level array <i>a_phi</i>, where there is no 00809 finer level. 00810 00811 Only the valid nodes at this level are counted. 00812 The valid nodes are the interior nodes of this level. 00813 00814 The a_IVSVext argument is obtained from the calls:<br> 00815 <tt> 00816 interiorBoundaryNodes(IVSVint, a_phi.getBoxes(), a_domain);<br> 00817 exteriorBoundaryNodes(a_IVSVext, IVSVint, a_phi.getBoxes(); 00818 </tt> 00819 */ 00820 Real maxnorm(/// the data on which to take the norm 00821 const LevelData<NodeFArrayBox>& a_phi, 00822 /// CELL-centered physical domain on each level 00823 const Box& a_domain, 00824 /// exterior boundary nodes of this level 00825 const LayoutData< Vector<Box> >& a_IVSVext, 00826 /// interval of components to use 00827 const Interval& a_comps, 00828 /// verbosity, whether to print norms of each box 00829 bool a_verbose = false); 00830 00831 #include "NamespaceFooter.H" 00832 #endif