parallel_mesh_iterators.C
Go to the documentation of this file.00001 // The libParallelMesh Finite Element Library. 00002 // Copyright (C) 2002-2012 Benjamin S. Kirk, John W. Peterson, Roy H. Stogner 00003 00004 // This library is free software; you can redistribute it and/or 00005 // modify it under the terms of the GNU Lesser General Public 00006 // License as published by the Free Software Foundation; either 00007 // version 2.1 of the License, or (at your option) any later version. 00008 00009 // This library is distributed in the hope that it will be useful, 00010 // but WITHOUT ANY WARRANTY; without even the implied warranty of 00011 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00012 // Lesser General Public License for more details. 00013 00014 // You should have received a copy of the GNU Lesser General Public 00015 // License along with this library; if not, write to the Free Software 00016 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 00017 00018 00019 00020 // C++ includes 00021 00022 // Local includes 00023 // #include "libmesh/mesh_base.h" 00024 #include "libmesh/parallel_mesh.h" 00025 #include "libmesh/elem.h" 00026 00027 namespace libMesh 00028 { 00029 00030 // This file contains the implementation of all the different iterator 00031 // functions for the mesh class. They were put here to save space in the 00032 // header files. 00033 00034 00035 // default begin() accessor 00036 ParallelMesh::element_iterator 00037 ParallelMesh::elements_begin () 00038 { 00039 Predicates::NotNull<elem_iterator_imp> p; 00040 return element_iterator(_elements.begin(), _elements.end(), p); 00041 } 00042 00043 00044 00045 // active elements begin() accessor 00046 ParallelMesh::element_iterator 00047 ParallelMesh::active_elements_begin () 00048 { 00049 Predicates::Active<elem_iterator_imp> p; 00050 return element_iterator(_elements.begin(), _elements.end(), p); 00051 } 00052 00053 00054 00055 // not active elements begin() accessor 00056 ParallelMesh::element_iterator 00057 ParallelMesh::not_active_elements_begin () 00058 { 00059 Predicates::NotActive<elem_iterator_imp> p; 00060 return element_iterator(_elements.begin(), _elements.end(), p); 00061 } 00062 00063 00064 00065 // ancestor elements begin() accessor 00066 ParallelMesh::element_iterator 00067 ParallelMesh::ancestor_elements_begin () 00068 { 00069 Predicates::Ancestor<elem_iterator_imp> p; 00070 return element_iterator(_elements.begin(), _elements.end(), p); 00071 } 00072 00073 00074 00075 // not ancestor elements begin() accessor 00076 ParallelMesh::element_iterator 00077 ParallelMesh::not_ancestor_elements_begin () 00078 { 00079 Predicates::Ancestor<elem_iterator_imp> p; 00080 return element_iterator(_elements.begin(), _elements.end(), p); 00081 } 00082 00083 00084 00085 // subactive elements begin() accessor 00086 ParallelMesh::element_iterator 00087 ParallelMesh::subactive_elements_begin () 00088 { 00089 Predicates::SubActive<elem_iterator_imp> p; 00090 return element_iterator(_elements.begin(), _elements.end(), p); 00091 } 00092 00093 00094 00095 // not subactive elements begin() accessor 00096 ParallelMesh::element_iterator 00097 ParallelMesh::not_subactive_elements_begin () 00098 { 00099 Predicates::NotSubActive<elem_iterator_imp> p; 00100 return element_iterator(_elements.begin(), _elements.end(), p); 00101 } 00102 00103 00104 00105 // local elements begin() accessor 00106 ParallelMesh::element_iterator 00107 ParallelMesh::local_elements_begin () 00108 { 00109 Predicates::Local<elem_iterator_imp> p; 00110 return element_iterator(_elements.begin(), _elements.end(), p); 00111 } 00112 00113 00114 00115 // not_local elements begin() accessor 00116 ParallelMesh::element_iterator 00117 ParallelMesh::not_local_elements_begin () 00118 { 00119 Predicates::NotLocal<elem_iterator_imp> p; 00120 return element_iterator(_elements.begin(), _elements.end(), p); 00121 } 00122 00123 00124 00125 // active local elements begin() accessor 00126 ParallelMesh::element_iterator 00127 ParallelMesh::active_local_elements_begin () 00128 { 00129 Predicates::ActiveLocal<elem_iterator_imp> p; 00130 return element_iterator(_elements.begin(), _elements.end(), p); 00131 } 00132 00133 00134 00135 // active_not_local elements begin() accessor 00136 ParallelMesh::element_iterator 00137 ParallelMesh::active_not_local_elements_begin () 00138 { 00139 Predicates::ActiveNotLocal<elem_iterator_imp> p; 00140 return element_iterator(_elements.begin(), _elements.end(), p); 00141 } 00142 00143 00144 00145 // level elements begin() accessor 00146 ParallelMesh::element_iterator 00147 ParallelMesh::level_elements_begin (const unsigned int level) 00148 { 00149 Predicates::Level<elem_iterator_imp> p(level); 00150 return element_iterator(_elements.begin(), _elements.end(), p); 00151 } 00152 00153 00154 00155 // not level elements begin() accessor 00156 ParallelMesh::element_iterator 00157 ParallelMesh::not_level_elements_begin (const unsigned int level) 00158 { 00159 Predicates::NotLevel<elem_iterator_imp> p(level); 00160 return element_iterator(_elements.begin(), _elements.end(), p); 00161 } 00162 00163 00164 00165 // local level elements begin() accessor 00166 ParallelMesh::element_iterator 00167 ParallelMesh::local_level_elements_begin (const unsigned int level) 00168 { 00169 Predicates::LocalLevel<elem_iterator_imp> p(level); 00170 return element_iterator(_elements.begin(), _elements.end(), p); 00171 } 00172 00173 00174 00175 // local not level elements begin() accessor 00176 ParallelMesh::element_iterator 00177 ParallelMesh::local_not_level_elements_begin (const unsigned int level) 00178 { 00179 Predicates::LocalNotLevel<elem_iterator_imp> p(level); 00180 return element_iterator(_elements.begin(), _elements.end(), p); 00181 } 00182 00183 00184 00185 // pid elements begin() accessor 00186 ParallelMesh::element_iterator 00187 ParallelMesh::pid_elements_begin (const processor_id_type proc_id) 00188 { 00189 Predicates::PID<elem_iterator_imp> p(proc_id); 00190 return element_iterator(_elements.begin(), _elements.end(), p); 00191 } 00192 00193 00194 00195 // type elements begin() accessor 00196 ParallelMesh::element_iterator 00197 ParallelMesh::type_elements_begin (const ElemType type) 00198 { 00199 Predicates::Type<elem_iterator_imp> p(type); 00200 return element_iterator(_elements.begin(), _elements.end(), p); 00201 } 00202 00203 00204 00205 // active type elements begin() accessor 00206 ParallelMesh::element_iterator 00207 ParallelMesh::active_type_elements_begin (const ElemType type) 00208 { 00209 Predicates::ActiveType<elem_iterator_imp> p(type); 00210 return element_iterator(_elements.begin(), _elements.end(), p); 00211 } 00212 00213 00214 00215 // active pid elements begin() accessor 00216 ParallelMesh::element_iterator 00217 ParallelMesh::active_pid_elements_begin (const processor_id_type proc_id) 00218 { 00219 Predicates::ActivePID<elem_iterator_imp> p(proc_id); 00220 return element_iterator(_elements.begin(), _elements.end(), p); 00221 } 00222 00223 00224 00225 // unpartitioned elements begin() accessor 00226 ParallelMesh::element_iterator 00227 ParallelMesh::unpartitioned_elements_begin () 00228 { 00229 return this->pid_elements_begin(DofObject::invalid_processor_id); 00230 } 00231 00232 00233 00234 // subdomain elements begin() accessor 00235 ParallelMesh::element_iterator 00236 ParallelMesh::active_local_subdomain_elements_begin (const subdomain_id_type subdomain_id) 00237 { 00238 Predicates::ActiveLocalSubdomain<elem_iterator_imp> p(subdomain_id); 00239 return element_iterator(_elements.begin(), _elements.end(), p); 00240 } 00241 00242 00243 00244 // subdomain elements begin() accessor 00245 ParallelMesh::element_iterator 00246 ParallelMesh::active_subdomain_elements_begin (const subdomain_id_type subdomain_id) 00247 { 00248 Predicates::ActiveSubdomain<elem_iterator_imp> p(subdomain_id); 00249 return element_iterator(_elements.begin(), _elements.end(), p); 00250 } 00251 00252 00253 00254 00255 00256 00257 00258 00259 00260 // default const begin() accessor 00261 ParallelMesh::const_element_iterator 00262 ParallelMesh::elements_begin () const 00263 { 00264 Predicates::NotNull<const_elem_iterator_imp> p; 00265 return const_element_iterator(_elements.begin(), _elements.end(), p); 00266 } 00267 00268 00269 00270 // const active begin() accessor 00271 ParallelMesh::const_element_iterator 00272 ParallelMesh::active_elements_begin () const 00273 { 00274 Predicates::Active<const_elem_iterator_imp> p; 00275 return const_element_iterator(_elements.begin(), _elements.end(), p); 00276 } 00277 00278 00279 // const not active begin() accessor 00280 ParallelMesh::const_element_iterator 00281 ParallelMesh::not_active_elements_begin () const 00282 { 00283 Predicates::NotActive<const_elem_iterator_imp> p; 00284 return const_element_iterator(_elements.begin(), _elements.end(), p); 00285 } 00286 00287 00288 00289 // const ancestor begin() accessor 00290 ParallelMesh::const_element_iterator 00291 ParallelMesh::ancestor_elements_begin () const 00292 { 00293 Predicates::Ancestor<const_elem_iterator_imp> p; 00294 return const_element_iterator(_elements.begin(), _elements.end(), p); 00295 } 00296 00297 00298 00299 // const not ancestor begin() accessor 00300 ParallelMesh::const_element_iterator 00301 ParallelMesh::not_ancestor_elements_begin () const 00302 { 00303 Predicates::Ancestor<const_elem_iterator_imp> p; 00304 return const_element_iterator(_elements.begin(), _elements.end(), p); 00305 } 00306 00307 00308 00309 // const subactive begin() accessor 00310 ParallelMesh::const_element_iterator 00311 ParallelMesh::subactive_elements_begin () const 00312 { 00313 Predicates::SubActive<const_elem_iterator_imp> p; 00314 return const_element_iterator(_elements.begin(), _elements.end(), p); 00315 } 00316 00317 00318 00319 // const not subactive begin() accessor 00320 ParallelMesh::const_element_iterator 00321 ParallelMesh::not_subactive_elements_begin () const 00322 { 00323 Predicates::NotSubActive<const_elem_iterator_imp> p; 00324 return const_element_iterator(_elements.begin(), _elements.end(), p); 00325 } 00326 00327 00328 00329 // const local begin() accessor 00330 ParallelMesh::const_element_iterator 00331 ParallelMesh::local_elements_begin () const 00332 { 00333 Predicates::Local<const_elem_iterator_imp> p; 00334 return const_element_iterator(_elements.begin(), _elements.end(), p); 00335 } 00336 00337 00338 00339 // const not_local begin() accessor 00340 ParallelMesh::const_element_iterator 00341 ParallelMesh::not_local_elements_begin () const 00342 { 00343 Predicates::NotLocal<const_elem_iterator_imp> p; 00344 return const_element_iterator(_elements.begin(), _elements.end(), p); 00345 } 00346 00347 00348 00349 // const active local begin() accessor 00350 ParallelMesh::const_element_iterator 00351 ParallelMesh::active_local_elements_begin () const 00352 { 00353 Predicates::ActiveLocal<const_elem_iterator_imp> p; 00354 return const_element_iterator(_elements.begin(), _elements.end(), p); 00355 } 00356 00357 00358 00359 // const active not_local begin() accessor 00360 ParallelMesh::const_element_iterator 00361 ParallelMesh::active_not_local_elements_begin () const 00362 { 00363 Predicates::ActiveNotLocal<const_elem_iterator_imp> p; 00364 return const_element_iterator(_elements.begin(), _elements.end(), p); 00365 } 00366 00367 00368 00369 // const level begin() accessor 00370 ParallelMesh::const_element_iterator 00371 ParallelMesh::level_elements_begin (const unsigned int level) const 00372 { 00373 Predicates::Level<const_elem_iterator_imp> p(level); 00374 return const_element_iterator(_elements.begin(), _elements.end(), p); 00375 } 00376 00377 00378 00379 // const not level begin() accessor 00380 ParallelMesh::const_element_iterator 00381 ParallelMesh::not_level_elements_begin (const unsigned int level) const 00382 { 00383 Predicates::NotLevel<const_elem_iterator_imp> p(level); 00384 return const_element_iterator(_elements.begin(), _elements.end(), p); 00385 } 00386 00387 00388 00389 // const local level begin() accessor 00390 ParallelMesh::const_element_iterator 00391 ParallelMesh::local_level_elements_begin (const unsigned int level) const 00392 { 00393 Predicates::LocalLevel<const_elem_iterator_imp> p(level); 00394 return const_element_iterator(_elements.begin(), _elements.end(), p); 00395 } 00396 00397 00398 00399 // const local not level begin() accessor 00400 ParallelMesh::const_element_iterator 00401 ParallelMesh::local_not_level_elements_begin (const unsigned int level) const 00402 { 00403 Predicates::LocalNotLevel<const_elem_iterator_imp> p(level); 00404 return const_element_iterator(_elements.begin(), _elements.end(), p); 00405 } 00406 00407 00408 00409 // const pid begin() accessor 00410 ParallelMesh::const_element_iterator 00411 ParallelMesh::pid_elements_begin (const processor_id_type proc_id) const 00412 { 00413 Predicates::PID<const_elem_iterator_imp> p(proc_id); 00414 return const_element_iterator(_elements.begin(), _elements.end(), p); 00415 } 00416 00417 00418 00419 // const type begin() accessor 00420 ParallelMesh::const_element_iterator 00421 ParallelMesh::type_elements_begin (const ElemType type) const 00422 { 00423 Predicates::Type<const_elem_iterator_imp> p(type); 00424 return const_element_iterator(_elements.begin(), _elements.end(), p); 00425 } 00426 00427 00428 00429 // const active type begin() accessor 00430 ParallelMesh::const_element_iterator 00431 ParallelMesh::active_type_elements_begin (const ElemType type) const 00432 { 00433 Predicates::ActiveType<const_elem_iterator_imp> p(type); 00434 return const_element_iterator(_elements.begin(), _elements.end(), p); 00435 } 00436 00437 00438 00439 // const active pid elements begin() accessor 00440 ParallelMesh::const_element_iterator 00441 ParallelMesh::active_pid_elements_begin (const processor_id_type proc_id) const 00442 { 00443 Predicates::ActivePID<const_elem_iterator_imp> p(proc_id); 00444 return const_element_iterator(_elements.begin(), _elements.end(), p); 00445 } 00446 00447 00448 00449 // unpartitioned elements begin() accessor 00450 ParallelMesh::const_element_iterator 00451 ParallelMesh::unpartitioned_elements_begin () const 00452 { 00453 return this->pid_elements_begin(DofObject::invalid_processor_id); 00454 } 00455 00456 00457 00458 // subdomain elements begin() accessor 00459 ParallelMesh::const_element_iterator 00460 ParallelMesh::active_local_subdomain_elements_begin (const subdomain_id_type subdomain_id) const 00461 { 00462 Predicates::ActiveLocalSubdomain<const_elem_iterator_imp> p(subdomain_id); 00463 return const_element_iterator(_elements.begin(), _elements.end(), p); 00464 } 00465 00466 00467 00468 // subdomain elements begin() accessor 00469 ParallelMesh::const_element_iterator 00470 ParallelMesh::active_subdomain_elements_begin (const subdomain_id_type subdomain_id) const 00471 { 00472 Predicates::ActiveSubdomain<const_elem_iterator_imp> p(subdomain_id); 00473 return const_element_iterator(_elements.begin(), _elements.end(), p); 00474 } 00475 00476 00477 00478 00479 00480 00481 00482 // default end() accessor 00483 ParallelMesh::element_iterator 00484 ParallelMesh::elements_end () 00485 { 00486 Predicates::NotNull<elem_iterator_imp> p; 00487 return element_iterator(_elements.end(), _elements.end(), p); 00488 } 00489 00490 00491 00492 // active end() accessor 00493 ParallelMesh::element_iterator 00494 ParallelMesh::active_elements_end () 00495 { 00496 Predicates::Active<elem_iterator_imp> p; 00497 return element_iterator(_elements.end(), _elements.end(), p); 00498 } 00499 00500 00501 00502 // active end() accessor 00503 ParallelMesh::element_iterator 00504 ParallelMesh::not_active_elements_end () 00505 { 00506 Predicates::NotActive<elem_iterator_imp> p; 00507 return element_iterator(_elements.end(), _elements.end(), p); 00508 } 00509 00510 00511 00512 // ancestor end() accessor 00513 ParallelMesh::element_iterator 00514 ParallelMesh::ancestor_elements_end () 00515 { 00516 Predicates::Ancestor<elem_iterator_imp> p; 00517 return element_iterator(_elements.end(), _elements.end(), p); 00518 } 00519 00520 00521 00522 // ancestor end() accessor 00523 ParallelMesh::element_iterator 00524 ParallelMesh::not_ancestor_elements_end () 00525 { 00526 Predicates::Ancestor<elem_iterator_imp> p; 00527 return element_iterator(_elements.end(), _elements.end(), p); 00528 } 00529 00530 00531 00532 // subactive end() accessor 00533 ParallelMesh::element_iterator 00534 ParallelMesh::subactive_elements_end () 00535 { 00536 Predicates::SubActive<elem_iterator_imp> p; 00537 return element_iterator(_elements.end(), _elements.end(), p); 00538 } 00539 00540 00541 00542 // subactive end() accessor 00543 ParallelMesh::element_iterator 00544 ParallelMesh::not_subactive_elements_end () 00545 { 00546 Predicates::NotSubActive<elem_iterator_imp> p; 00547 return element_iterator(_elements.end(), _elements.end(), p); 00548 } 00549 00550 00551 00552 // local end() accessor 00553 ParallelMesh::element_iterator 00554 ParallelMesh::local_elements_end () 00555 { 00556 Predicates::Local<elem_iterator_imp> p; 00557 return element_iterator(_elements.end(), _elements.end(), p); 00558 } 00559 00560 00561 00562 // not_local end() accessor 00563 ParallelMesh::element_iterator 00564 ParallelMesh::not_local_elements_end () 00565 { 00566 Predicates::NotLocal<elem_iterator_imp> p; 00567 return element_iterator(_elements.end(), _elements.end(), p); 00568 } 00569 00570 00571 00572 // active local end() accessor 00573 ParallelMesh::element_iterator 00574 ParallelMesh::active_local_elements_end () 00575 { 00576 Predicates::ActiveLocal<elem_iterator_imp> p; 00577 return element_iterator(_elements.end(), _elements.end(), p); 00578 } 00579 00580 00581 00582 // not_local end() accessor 00583 ParallelMesh::element_iterator 00584 ParallelMesh::active_not_local_elements_end () 00585 { 00586 Predicates::ActiveNotLocal<elem_iterator_imp> p; 00587 return element_iterator(_elements.end(), _elements.end(), p); 00588 } 00589 00590 00591 00592 // level end() accessor 00593 ParallelMesh::element_iterator 00594 ParallelMesh::level_elements_end (const unsigned int level) 00595 { 00596 Predicates::Level<elem_iterator_imp> p(level); 00597 return element_iterator(_elements.end(), _elements.end(), p); 00598 } 00599 00600 00601 00602 // not level end() accessor 00603 ParallelMesh::element_iterator 00604 ParallelMesh::not_level_elements_end (const unsigned int level) 00605 { 00606 Predicates::NotLevel<elem_iterator_imp> p(level); 00607 return element_iterator(_elements.end(), _elements.end(), p); 00608 } 00609 00610 00611 00612 // local level end() accessor 00613 ParallelMesh::element_iterator 00614 ParallelMesh::local_level_elements_end (const unsigned int level) 00615 { 00616 Predicates::LocalLevel<elem_iterator_imp> p(level); 00617 return element_iterator(_elements.end(), _elements.end(), p); 00618 } 00619 00620 00621 00622 // local not level end() accessor 00623 ParallelMesh::element_iterator 00624 ParallelMesh::local_not_level_elements_end (const unsigned int level) 00625 { 00626 Predicates::LocalNotLevel<elem_iterator_imp> p(level); 00627 return element_iterator(_elements.end(), _elements.end(), p); 00628 } 00629 00630 00631 00632 // pid end() accessor 00633 ParallelMesh::element_iterator 00634 ParallelMesh::pid_elements_end (const processor_id_type proc_id) 00635 { 00636 Predicates::PID<elem_iterator_imp> p(proc_id); 00637 return element_iterator(_elements.end(), _elements.end(), p); 00638 } 00639 00640 00641 00642 // type end() accessor 00643 ParallelMesh::element_iterator 00644 ParallelMesh::type_elements_end (const ElemType type) 00645 { 00646 Predicates::Type<elem_iterator_imp> p(type); 00647 return element_iterator(_elements.end(), _elements.end(), p); 00648 } 00649 00650 00651 00652 // active type end() accessor 00653 ParallelMesh::element_iterator 00654 ParallelMesh::active_type_elements_end (const ElemType type) 00655 { 00656 Predicates::ActiveType<elem_iterator_imp> p(type); 00657 return element_iterator(_elements.end(), _elements.end(), p); 00658 } 00659 00660 00661 00662 // active PID end() accessor 00663 ParallelMesh::element_iterator 00664 ParallelMesh::active_pid_elements_end (const processor_id_type proc_id) 00665 { 00666 Predicates::ActivePID<elem_iterator_imp> p(proc_id); 00667 return element_iterator(_elements.end(), _elements.end(), p); 00668 } 00669 00670 00671 00672 // unpartitioned elements end() accessor 00673 ParallelMesh::element_iterator 00674 ParallelMesh::unpartitioned_elements_end () 00675 { 00676 return this->pid_elements_end(DofObject::invalid_processor_id); 00677 } 00678 00679 00680 00681 // subdomain elements end() accessor 00682 ParallelMesh::element_iterator 00683 ParallelMesh::active_local_subdomain_elements_end (const subdomain_id_type subdomain_id) 00684 { 00685 Predicates::ActiveLocalSubdomain<elem_iterator_imp> p(subdomain_id); 00686 return element_iterator(_elements.end(), _elements.end(), p); 00687 } 00688 00689 00690 00691 // subdomain elements end() accessor 00692 ParallelMesh::element_iterator 00693 ParallelMesh::active_subdomain_elements_end (const subdomain_id_type subdomain_id) 00694 { 00695 Predicates::ActiveSubdomain<elem_iterator_imp> p(subdomain_id); 00696 return element_iterator(_elements.end(), _elements.end(), p); 00697 } 00698 00699 00700 00701 00702 00703 00704 00705 00706 00707 // default const end() accessor 00708 ParallelMesh::const_element_iterator 00709 ParallelMesh::elements_end () const 00710 { 00711 Predicates::NotNull<const_elem_iterator_imp> p; 00712 return const_element_iterator(_elements.end(), _elements.end(), p); 00713 } 00714 00715 00716 00717 // active const end() accessor 00718 ParallelMesh::const_element_iterator 00719 ParallelMesh::active_elements_end () const 00720 { 00721 Predicates::Active<const_elem_iterator_imp> p; 00722 return const_element_iterator(_elements.end(), _elements.end(), p); 00723 } 00724 00725 00726 00727 // not active const end() accessor 00728 ParallelMesh::const_element_iterator 00729 ParallelMesh::not_active_elements_end () const 00730 { 00731 Predicates::NotActive<const_elem_iterator_imp> p; 00732 return const_element_iterator(_elements.end(), _elements.end(), p); 00733 } 00734 00735 00736 00737 // ancestor const end() accessor 00738 ParallelMesh::const_element_iterator 00739 ParallelMesh::ancestor_elements_end () const 00740 { 00741 Predicates::Ancestor<const_elem_iterator_imp> p; 00742 return const_element_iterator(_elements.end(), _elements.end(), p); 00743 } 00744 00745 00746 00747 // not ancestor const end() accessor 00748 ParallelMesh::const_element_iterator 00749 ParallelMesh::not_ancestor_elements_end () const 00750 { 00751 Predicates::Ancestor<const_elem_iterator_imp> p; 00752 return const_element_iterator(_elements.end(), _elements.end(), p); 00753 } 00754 00755 00756 00757 // subactive const end() accessor 00758 ParallelMesh::const_element_iterator 00759 ParallelMesh::subactive_elements_end () const 00760 { 00761 Predicates::SubActive<const_elem_iterator_imp> p; 00762 return const_element_iterator(_elements.end(), _elements.end(), p); 00763 } 00764 00765 00766 00767 // not subactive const end() accessor 00768 ParallelMesh::const_element_iterator 00769 ParallelMesh::not_subactive_elements_end () const 00770 { 00771 Predicates::NotSubActive<const_elem_iterator_imp> p; 00772 return const_element_iterator(_elements.end(), _elements.end(), p); 00773 } 00774 00775 00776 00777 // local const end() accessor 00778 ParallelMesh::const_element_iterator 00779 ParallelMesh::local_elements_end () const 00780 { 00781 Predicates::Local<const_elem_iterator_imp> p; 00782 return const_element_iterator(_elements.end(), _elements.end(), p); 00783 } 00784 00785 00786 00787 // not_local const end() accessor 00788 ParallelMesh::const_element_iterator 00789 ParallelMesh::not_local_elements_end () const 00790 { 00791 Predicates::NotLocal<const_elem_iterator_imp> p; 00792 return const_element_iterator(_elements.end(), _elements.end(), p); 00793 } 00794 00795 00796 00797 // local active const end() accessor 00798 ParallelMesh::const_element_iterator 00799 ParallelMesh::active_local_elements_end () const 00800 { 00801 Predicates::ActiveLocal<const_elem_iterator_imp> p; 00802 return const_element_iterator(_elements.end(), _elements.end(), p); 00803 } 00804 00805 00806 00807 // const local active const end() accessor 00808 ParallelMesh::const_element_iterator 00809 ParallelMesh::active_not_local_elements_end () const 00810 { 00811 Predicates::ActiveNotLocal<const_elem_iterator_imp> p; 00812 return const_element_iterator(_elements.end(), _elements.end(), p); 00813 } 00814 00815 00816 00817 // level const end() accessor 00818 ParallelMesh::const_element_iterator 00819 ParallelMesh::level_elements_end (const unsigned int level) const 00820 { 00821 Predicates::Level<const_elem_iterator_imp> p(level); 00822 return const_element_iterator(_elements.end(), _elements.end(), p); 00823 } 00824 00825 00826 00827 // not level const end() accessor 00828 ParallelMesh::const_element_iterator 00829 ParallelMesh::not_level_elements_end (const unsigned int level) const 00830 { 00831 Predicates::NotLevel<const_elem_iterator_imp> p(level); 00832 return const_element_iterator(_elements.end(), _elements.end(), p); 00833 } 00834 00835 00836 00837 // local level const end() accessor 00838 ParallelMesh::const_element_iterator 00839 ParallelMesh::local_level_elements_end (const unsigned int level) const 00840 { 00841 Predicates::LocalLevel<const_elem_iterator_imp> p(level); 00842 return const_element_iterator(_elements.end(), _elements.end(), p); 00843 } 00844 00845 00846 00847 // local not level const end() accessor 00848 ParallelMesh::const_element_iterator 00849 ParallelMesh::local_not_level_elements_end (const unsigned int level) const 00850 { 00851 Predicates::LocalNotLevel<const_elem_iterator_imp> p(level); 00852 return const_element_iterator(_elements.end(), _elements.end(), p); 00853 } 00854 00855 00856 // pid const end() accessor 00857 ParallelMesh::const_element_iterator 00858 ParallelMesh::pid_elements_end (const processor_id_type proc_id) const 00859 { 00860 Predicates::PID<const_elem_iterator_imp> p(proc_id); 00861 return const_element_iterator(_elements.end(), _elements.end(), p); 00862 } 00863 00864 00865 00866 // type const end() accessor 00867 ParallelMesh::const_element_iterator 00868 ParallelMesh::type_elements_end (const ElemType type) const 00869 { 00870 Predicates::Type<const_elem_iterator_imp> p(type); 00871 return const_element_iterator(_elements.end(), _elements.end(), p); 00872 } 00873 00874 00875 00876 // active type const end() accessor 00877 ParallelMesh::const_element_iterator 00878 ParallelMesh::active_type_elements_end (const ElemType type) const 00879 { 00880 Predicates::ActiveType<const_elem_iterator_imp> p(type); 00881 return const_element_iterator(_elements.end(), _elements.end(), p); 00882 } 00883 00884 00885 00886 // active PID end() accessor 00887 ParallelMesh::const_element_iterator 00888 ParallelMesh::active_pid_elements_end (const processor_id_type proc_id) const 00889 { 00890 Predicates::ActivePID<const_elem_iterator_imp> p(proc_id); 00891 return const_element_iterator(_elements.end(), _elements.end(), p); 00892 } 00893 00894 00895 00896 // unpartitioned elements end() accessor 00897 ParallelMesh::const_element_iterator 00898 ParallelMesh::unpartitioned_elements_end () const 00899 { 00900 return this->pid_elements_end(DofObject::invalid_processor_id); 00901 } 00902 00903 00904 00905 // subdomain elements end() accessor 00906 ParallelMesh::const_element_iterator 00907 ParallelMesh::active_local_subdomain_elements_end (const subdomain_id_type subdomain_id) const 00908 { 00909 Predicates::ActiveLocalSubdomain<const_elem_iterator_imp> p(subdomain_id); 00910 return const_element_iterator(_elements.end(), _elements.end(), p); 00911 } 00912 00913 00914 00915 // subdomain elements end() accessor 00916 ParallelMesh::const_element_iterator 00917 ParallelMesh::active_subdomain_elements_end (const subdomain_id_type subdomain_id) const 00918 { 00919 Predicates::ActiveSubdomain<const_elem_iterator_imp> p(subdomain_id); 00920 return const_element_iterator(_elements.end(), _elements.end(), p); 00921 } 00922 00923 00924 00925 00926 00927 00928 00929 // default nodes begin() accessor 00930 ParallelMesh::node_iterator 00931 ParallelMesh::nodes_begin () 00932 { 00933 Predicates::NotNull<node_iterator_imp> p; 00934 return node_iterator(_nodes.begin(), _nodes.end(), p); 00935 } 00936 00937 00938 00939 // active nodes begin() accessor 00940 ParallelMesh::node_iterator 00941 ParallelMesh::active_nodes_begin () 00942 { 00943 Predicates::Active<node_iterator_imp> p; 00944 return node_iterator(_nodes.begin(), _nodes.end(), p); 00945 } 00946 00947 00948 00949 // local nodes begin() accessor 00950 ParallelMesh::node_iterator 00951 ParallelMesh::local_nodes_begin () 00952 { 00953 Predicates::Local<node_iterator_imp> p; 00954 return node_iterator(_nodes.begin(), _nodes.end(), p); 00955 } 00956 00957 00958 00959 // pid nodes begin() accessor 00960 ParallelMesh::node_iterator 00961 ParallelMesh::pid_nodes_begin (const processor_id_type proc_id) 00962 { 00963 Predicates::PID<node_iterator_imp> p(proc_id); 00964 return node_iterator(_nodes.begin(), _nodes.end(), p); 00965 } 00966 00967 00968 00969 // default const nodes begin() accessor 00970 ParallelMesh::const_node_iterator 00971 ParallelMesh::nodes_begin () const 00972 { 00973 Predicates::NotNull<const_node_iterator_imp> p; 00974 return const_node_iterator(_nodes.begin(), _nodes.end(), p); 00975 } 00976 00977 00978 00979 // active const nodes begin() accessor 00980 ParallelMesh::const_node_iterator 00981 ParallelMesh::active_nodes_begin () const 00982 { 00983 Predicates::Active<const_node_iterator_imp> p; 00984 return const_node_iterator(_nodes.begin(), _nodes.end(), p); 00985 } 00986 00987 00988 00989 // local const nodes begin() accessor 00990 ParallelMesh::const_node_iterator 00991 ParallelMesh::local_nodes_begin () const 00992 { 00993 Predicates::Local<const_node_iterator_imp> p; 00994 return const_node_iterator(_nodes.begin(), _nodes.end(), p); 00995 } 00996 00997 00998 00999 // pid const nodes begin() accessor 01000 ParallelMesh::const_node_iterator 01001 ParallelMesh::pid_nodes_begin (const processor_id_type proc_id) const 01002 { 01003 Predicates::PID<const_node_iterator_imp> p(proc_id); 01004 return const_node_iterator(_nodes.begin(), _nodes.end(), p); 01005 } 01006 01007 01008 01009 // default nodes end() accessor 01010 ParallelMesh::node_iterator 01011 ParallelMesh::nodes_end () 01012 { 01013 Predicates::NotNull<node_iterator_imp> p; 01014 return node_iterator(_nodes.end(), _nodes.end(), p); 01015 } 01016 01017 01018 01019 // active nodes end() accessor 01020 ParallelMesh::node_iterator 01021 ParallelMesh::active_nodes_end () 01022 { 01023 Predicates::Active<node_iterator_imp> p; 01024 return node_iterator(_nodes.end(), _nodes.end(), p); 01025 } 01026 01027 01028 01029 // local nodes end() accessor 01030 ParallelMesh::node_iterator 01031 ParallelMesh::local_nodes_end () 01032 { 01033 Predicates::Local<node_iterator_imp> p; 01034 return node_iterator(_nodes.end(), _nodes.end(), p); 01035 } 01036 01037 01038 01039 // pid nodes end() accessor 01040 ParallelMesh::node_iterator 01041 ParallelMesh::pid_nodes_end (const processor_id_type proc_id) 01042 { 01043 Predicates::PID<node_iterator_imp> p(proc_id); 01044 return node_iterator(_nodes.end(), _nodes.end(), p); 01045 } 01046 01047 01048 01049 // default const nodes end() accessor 01050 ParallelMesh::const_node_iterator 01051 ParallelMesh::nodes_end () const 01052 { 01053 Predicates::NotNull<const_node_iterator_imp> p; 01054 return const_node_iterator(_nodes.end(), _nodes.end(), p); 01055 } 01056 01057 01058 01059 // const active nodes end() accessor 01060 ParallelMesh::const_node_iterator 01061 ParallelMesh::active_nodes_end () const 01062 { 01063 Predicates::Active<const_node_iterator_imp> p; 01064 return const_node_iterator(_nodes.end(), _nodes.end(), p); 01065 } 01066 01067 01068 01069 // local const nodes end() accessor 01070 ParallelMesh::const_node_iterator 01071 ParallelMesh::local_nodes_end () const 01072 { 01073 Predicates::Local<const_node_iterator_imp> p; 01074 return const_node_iterator(_nodes.end(), _nodes.end(), p); 01075 } 01076 01077 01078 01079 // pid const nodes end() accessor 01080 ParallelMesh::const_node_iterator 01081 ParallelMesh::pid_nodes_end (const processor_id_type proc_id) const 01082 { 01083 Predicates::PID<const_node_iterator_imp> p(proc_id); 01084 return const_node_iterator(_nodes.end(), _nodes.end(), p); 01085 } 01086 01087 } // namespace libMesh
Site Created By: libMesh Developers
Last modified: February 05 2013 19:54:48 UTC
Hosted By: