00001 #ifdef CH_LANG_CC
00002
00003
00004
00005
00006
00007
00008
00009 #endif
00010
00011
00012
00013
00014 #ifndef _NODESETOPERATIONS_H_
00015 #define _NODESETOPERATIONS_H_
00016
00017 #include "NodeFArrayBox.H"
00018 #include "LevelData.H"
00019 #include "IntVectSet.H"
00020 #include "NamespaceHeader.H"
00021
00023
00051 void interiorNodes(
00052 IntVectSet& a_ivs,
00054 const ProblemDomain& a_base_domain,
00056 const DisjointBoxLayout& a_boxes,
00058 const Box& a_box);
00059
00060
00062
00090 void interiorNodes(
00091 IntVectSet& a_ivs,
00093 const Box& a_base_domain,
00095 const DisjointBoxLayout& a_boxes,
00097 const Box& a_box);
00098
00099
00101
00138 void interiorBoundaryNodes(
00139 LayoutData< Vector<IntVectSet> >& a_IVSV,
00141 const DisjointBoxLayout& a_boxes,
00143 const ProblemDomain& a_domain);
00144
00145
00147
00184 void interiorBoundaryNodes(
00185 LayoutData< Vector<IntVectSet> >& a_IVSV,
00187 const DisjointBoxLayout& a_boxes,
00189 const Box& a_domain);
00190
00191
00193
00205 void interiorBoundaryNodes(
00206 LayoutData< Vector<IntVectSet> >& a_IVSV,
00208 const DisjointBoxLayout& a_dest,
00210 const DisjointBoxLayout& a_src,
00212 const ProblemDomain& a_domain);
00213
00214
00216
00228 void interiorBoundaryNodes(
00229 LayoutData< Vector<IntVectSet> >& a_IVSV,
00231 const DisjointBoxLayout& a_dest,
00233 const DisjointBoxLayout& a_src,
00235 const Box& a_domain);
00236
00237
00239
00277 void exteriorBoundaryNodes(
00278 LayoutData< Vector<IntVectSet> >& a_exterior,
00280 const LayoutData< Vector<IntVectSet> >& a_interior,
00282 const DisjointBoxLayout& a_boxes);
00283
00284
00286
00302 void zeroBoundaryNodes(
00303 BoxLayoutData<NodeFArrayBox>& a_dest,
00305 const LayoutData< Vector<IntVectSet> >& a_IVSV);
00306
00308
00356 void copyInteriorNodes(
00357 LevelData<NodeFArrayBox>& a_dest,
00359 const LevelData<NodeFArrayBox>& a_src,
00361 const LayoutData< Vector<IntVectSet> >& a_IVSV);
00362
00364
00367 void
00368 fullIntVectSets(
00369 LayoutData< BitSet >& a_IVSVfull,
00371 const LayoutData< Vector<IntVectSet> >& a_IVSV);
00372
00373
00374
00375
00376
00377
00379
00416 void interiorBoundaryNodes(
00417 LayoutData< Vector<Box> >& a_IVSV,
00419 const DisjointBoxLayout& a_boxes,
00421 const Box& a_domain);
00422
00423
00425
00462 void interiorBoundaryNodes(
00463 LayoutData< Vector<Box> >& a_IVSV,
00465 const DisjointBoxLayout& a_boxes,
00467 const ProblemDomain& a_domain);
00468
00469
00471
00483 void interiorBoundaryNodes(
00484 LayoutData< Vector<Box> >& a_IVSV,
00486 const DisjointBoxLayout& a_dest,
00488 const DisjointBoxLayout& a_src,
00490 const Box& a_domain);
00491
00492
00494
00506 void interiorBoundaryNodes(
00507 LayoutData< Vector<Box> >& a_IVSV,
00509 const DisjointBoxLayout& a_dest,
00511 const DisjointBoxLayout& a_src,
00513 const ProblemDomain& a_domain);
00514
00515
00517
00555 void exteriorBoundaryNodes(
00556 LayoutData< Vector<Box> >& a_exterior,
00558 const LayoutData< Vector<Box> >& a_interior,
00560 const DisjointBoxLayout& a_boxes);
00561
00563
00611 void copyInteriorNodes(
00612 LevelData<NodeFArrayBox>& a_dest,
00614 const LevelData<NodeFArrayBox>& a_src,
00616 const LayoutData< Vector<Box> >& a_IVSV);
00617
00618
00620
00636 void zeroBoundaryNodes(
00637 BoxLayoutData<NodeFArrayBox>& a_dest,
00639 const LayoutData< Vector<Box> >& a_IVSV);
00640
00641
00642
00643
00644
00646
00647
00648
00649 void appendBoxes(Vector<Box>& a_boxes,
00650 const Vector<Box>& a_new);
00651
00653
00654
00655
00656 void removeBoxFromBoxes(Vector<Box>& a_boxes,
00657 const Box& a_remove);
00658
00660
00661
00662
00663 void removeBoxesFromBox(Vector<Box>& a_boxes,
00664 const Vector<Box>& a_remove,
00665 const Box& a_base);
00666
00668
00669
00670
00671 void removeBoxFromBox(Vector<Box>& a_boxes,
00672 const Box& a_remove,
00673 const Box& a_base);
00674
00676
00677
00678
00679 void removeBoxesFromBoxes(Vector<Box>& a_boxes,
00680 const Vector<Box>& a_remove);
00681
00683
00684
00685
00686
00687 void intersectBoxes(Vector<Box>& a_boxes,
00688 const Vector<Box>& a_new);
00689
00691
00692
00693
00694 void intersectBoxes(Vector<Box>& a_boxes,
00695 const Box& a_new);
00696
00698
00699
00700
00701 void shiftBoxes(Vector<Box>& a_boxes,
00702 const IntVect& a_offset);
00703
00705
00706
00707
00708 void cellsToNodes(Vector<Box>& a_boxes);
00709
00711
00712
00713
00714 void nodesToCells(Vector<Box>& a_boxes);
00715
00717
00718
00719
00720
00721
00722 void exteriorAndInteriorNodes(
00724 Vector< LayoutData< Vector<Box> >* >& a_exterior,
00726 Vector< LayoutData< Vector<Box> >* >& a_intFinerCoarsened,
00728 const Vector<DisjointBoxLayout>& a_layouts,
00730 const Vector<ProblemDomain>& a_domain,
00732 const Vector<int>& a_nRefFine);
00733
00734
00736
00737
00738
00739
00740
00741 void exteriorAndInteriorNodes(
00743 Vector< LayoutData< Vector<IntVectSet> >* >& a_exterior,
00745 Vector< LayoutData< Vector<IntVectSet> >* >& a_intFinerCoarsened,
00747 const Vector<DisjointBoxLayout>& a_layouts,
00749 const Vector<ProblemDomain>& a_domain,
00751 const Vector<int>& a_nRefFine);
00752
00753
00755
00759 void getMaskInteriorNodes(
00760 LevelData<NodeFArrayBox>& a_mask,
00762 const DisjointBoxLayout& a_dest,
00764 const DisjointBoxLayout* a_srcPtr,
00766 const Box& a_domain,
00768 int a_onoff = 1);
00769
00770
00772
00776 void getMaskInteriorNodes(
00777 LevelData<NodeFArrayBox>& a_mask,
00779 const DisjointBoxLayout& a_dest,
00781 const DisjointBoxLayout* a_srcPtr,
00783 const ProblemDomain& a_domain,
00785 int a_onoff = 1);
00786
00787
00789
00793 void getMaskInteriorNodes(
00794 LevelData<NodeFArrayBox>& a_mask,
00796 const DisjointBoxLayout& a_dest,
00798 const Box& a_domain);
00799
00800
00802
00806 void getMaskValidNodes(
00807 LevelData<NodeFArrayBox>& a_mask,
00809 const DisjointBoxLayout& a_layout,
00811 const DisjointBoxLayout* a_finerCoarsenedPtr,
00813 const ProblemDomain& a_domain);
00814
00815
00817
00821 void getMaskValidNodes(
00822 LevelData<NodeFArrayBox>& a_mask,
00824 const DisjointBoxLayout& a_layout,
00826 const DisjointBoxLayout* a_finerCoarsenedPtr,
00828 const Box& a_domain);
00829
00830
00832
00833
00834
00835 void getMaskValidNodes(
00837 Vector< LevelData<NodeFArrayBox>* >& a_masks,
00839 const Vector<DisjointBoxLayout>& a_layouts,
00841 const Vector<ProblemDomain>& a_domain,
00843 const Vector<int>& a_nRefFine);
00844
00845
00847
00850 void getSurroundingNodes(BoxLayout& a_gridsNodes,
00851 const BoxLayout& a_gridsCells);
00852
00853
00855
00858 void getEnclosedCells(BoxLayout& a_gridsCells,
00859 const BoxLayout& a_gridsNodes);
00860
00861
00862 #include "NamespaceFooter.H"
00863 #endif