serial_mesh_iterators.C
Go to the documentation of this file.00001 // The libSerialMesh 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/serial_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 SerialMesh::element_iterator 00037 SerialMesh::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 SerialMesh::element_iterator 00047 SerialMesh::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 SerialMesh::element_iterator 00057 SerialMesh::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 SerialMesh::element_iterator 00067 SerialMesh::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 SerialMesh::element_iterator 00077 SerialMesh::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 SerialMesh::element_iterator 00087 SerialMesh::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 SerialMesh::element_iterator 00097 SerialMesh::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 SerialMesh::element_iterator 00107 SerialMesh::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 SerialMesh::element_iterator 00117 SerialMesh::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 SerialMesh::element_iterator 00127 SerialMesh::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 SerialMesh::element_iterator 00137 SerialMesh::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 SerialMesh::element_iterator 00147 SerialMesh::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 SerialMesh::element_iterator 00157 SerialMesh::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 SerialMesh::element_iterator 00167 SerialMesh::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 SerialMesh::element_iterator 00177 SerialMesh::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 SerialMesh::element_iterator 00187 SerialMesh::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 SerialMesh::element_iterator 00197 SerialMesh::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 SerialMesh::element_iterator 00207 SerialMesh::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 SerialMesh::element_iterator 00217 SerialMesh::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 SerialMesh::element_iterator 00227 SerialMesh::unpartitioned_elements_begin () 00228 { 00229 return this->pid_elements_begin(DofObject::invalid_processor_id); 00230 } 00231 00232 00233 00234 // subdomain elements begin() accessor 00235 SerialMesh::element_iterator 00236 SerialMesh::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 SerialMesh::element_iterator 00246 SerialMesh::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 // default const begin() accessor 00259 SerialMesh::const_element_iterator 00260 SerialMesh::elements_begin () const 00261 { 00262 Predicates::NotNull<const_elem_iterator_imp> p; 00263 return const_element_iterator(_elements.begin(), _elements.end(), p); 00264 } 00265 00266 00267 00268 // const active begin() accessor 00269 SerialMesh::const_element_iterator 00270 SerialMesh::active_elements_begin () const 00271 { 00272 Predicates::Active<const_elem_iterator_imp> p; 00273 return const_element_iterator(_elements.begin(), _elements.end(), p); 00274 } 00275 00276 00277 00278 // const not active begin() accessor 00279 SerialMesh::const_element_iterator 00280 SerialMesh::not_active_elements_begin () const 00281 { 00282 Predicates::NotActive<const_elem_iterator_imp> p; 00283 return const_element_iterator(_elements.begin(), _elements.end(), p); 00284 } 00285 00286 00287 00288 // const ancestor begin() accessor 00289 SerialMesh::const_element_iterator 00290 SerialMesh::ancestor_elements_begin () const 00291 { 00292 Predicates::Ancestor<const_elem_iterator_imp> p; 00293 return const_element_iterator(_elements.begin(), _elements.end(), p); 00294 } 00295 00296 00297 00298 // const not ancestor begin() accessor 00299 SerialMesh::const_element_iterator 00300 SerialMesh::not_ancestor_elements_begin () const 00301 { 00302 Predicates::Ancestor<const_elem_iterator_imp> p; 00303 return const_element_iterator(_elements.begin(), _elements.end(), p); 00304 } 00305 00306 00307 00308 // const subactive begin() accessor 00309 SerialMesh::const_element_iterator 00310 SerialMesh::subactive_elements_begin () const 00311 { 00312 Predicates::SubActive<const_elem_iterator_imp> p; 00313 return const_element_iterator(_elements.begin(), _elements.end(), p); 00314 } 00315 00316 00317 00318 // const not subactive begin() accessor 00319 SerialMesh::const_element_iterator 00320 SerialMesh::not_subactive_elements_begin () const 00321 { 00322 Predicates::NotSubActive<const_elem_iterator_imp> p; 00323 return const_element_iterator(_elements.begin(), _elements.end(), p); 00324 } 00325 00326 00327 00328 // const local begin() accessor 00329 SerialMesh::const_element_iterator 00330 SerialMesh::local_elements_begin () const 00331 { 00332 Predicates::Local<const_elem_iterator_imp> p; 00333 return const_element_iterator(_elements.begin(), _elements.end(), p); 00334 } 00335 00336 00337 00338 // const not_local begin() accessor 00339 SerialMesh::const_element_iterator 00340 SerialMesh::not_local_elements_begin () const 00341 { 00342 Predicates::NotLocal<const_elem_iterator_imp> p; 00343 return const_element_iterator(_elements.begin(), _elements.end(), p); 00344 } 00345 00346 00347 00348 // const active local begin() accessor 00349 SerialMesh::const_element_iterator 00350 SerialMesh::active_local_elements_begin () const 00351 { 00352 Predicates::ActiveLocal<const_elem_iterator_imp> p; 00353 return const_element_iterator(_elements.begin(), _elements.end(), p); 00354 } 00355 00356 00357 00358 // const active not_local begin() accessor 00359 SerialMesh::const_element_iterator 00360 SerialMesh::active_not_local_elements_begin () const 00361 { 00362 Predicates::ActiveNotLocal<const_elem_iterator_imp> p; 00363 return const_element_iterator(_elements.begin(), _elements.end(), p); 00364 } 00365 00366 00367 00368 // const level begin() accessor 00369 SerialMesh::const_element_iterator 00370 SerialMesh::level_elements_begin (const unsigned int level) const 00371 { 00372 Predicates::Level<const_elem_iterator_imp> p(level); 00373 return const_element_iterator(_elements.begin(), _elements.end(), p); 00374 } 00375 00376 00377 00378 // const not level begin() accessor 00379 SerialMesh::const_element_iterator 00380 SerialMesh::not_level_elements_begin (const unsigned int level) const 00381 { 00382 Predicates::NotLevel<const_elem_iterator_imp> p(level); 00383 return const_element_iterator(_elements.begin(), _elements.end(), p); 00384 } 00385 00386 00387 00388 // const local level begin() accessor 00389 SerialMesh::const_element_iterator 00390 SerialMesh::local_level_elements_begin (const unsigned int level) const 00391 { 00392 Predicates::LocalLevel<const_elem_iterator_imp> p(level); 00393 return const_element_iterator(_elements.begin(), _elements.end(), p); 00394 } 00395 00396 00397 00398 // const local not level begin() accessor 00399 SerialMesh::const_element_iterator 00400 SerialMesh::local_not_level_elements_begin (const unsigned int level) const 00401 { 00402 Predicates::LocalNotLevel<const_elem_iterator_imp> p(level); 00403 return const_element_iterator(_elements.begin(), _elements.end(), p); 00404 } 00405 00406 00407 00408 // const pid begin() accessor 00409 SerialMesh::const_element_iterator 00410 SerialMesh::pid_elements_begin (const processor_id_type proc_id) const 00411 { 00412 Predicates::PID<const_elem_iterator_imp> p(proc_id); 00413 return const_element_iterator(_elements.begin(), _elements.end(), p); 00414 } 00415 00416 00417 00418 // const type begin() accessor 00419 SerialMesh::const_element_iterator 00420 SerialMesh::type_elements_begin (const ElemType type) const 00421 { 00422 Predicates::Type<const_elem_iterator_imp> p(type); 00423 return const_element_iterator(_elements.begin(), _elements.end(), p); 00424 } 00425 00426 00427 00428 // const active type begin() accessor 00429 SerialMesh::const_element_iterator 00430 SerialMesh::active_type_elements_begin (const ElemType type) const 00431 { 00432 Predicates::ActiveType<const_elem_iterator_imp> p(type); 00433 return const_element_iterator(_elements.begin(), _elements.end(), p); 00434 } 00435 00436 00437 00438 // const active pid elements begin() accessor 00439 SerialMesh::const_element_iterator 00440 SerialMesh::active_pid_elements_begin (const processor_id_type proc_id) const 00441 { 00442 Predicates::ActivePID<const_elem_iterator_imp> p(proc_id); 00443 return const_element_iterator(_elements.begin(), _elements.end(), p); 00444 } 00445 00446 00447 00448 // const unpartitioned elements begin() accessor 00449 SerialMesh::const_element_iterator 00450 SerialMesh::unpartitioned_elements_begin () const 00451 { 00452 return this->pid_elements_begin(DofObject::invalid_processor_id); 00453 } 00454 00455 00456 00457 // subdomain elements begin() accessor 00458 SerialMesh::const_element_iterator 00459 SerialMesh::active_local_subdomain_elements_begin (const subdomain_id_type subdomain_id) const 00460 { 00461 Predicates::ActiveLocalSubdomain<const_elem_iterator_imp> p(subdomain_id); 00462 return const_element_iterator(_elements.begin(), _elements.end(), p); 00463 } 00464 00465 00466 00467 // subdomain elements begin() accessor 00468 SerialMesh::const_element_iterator 00469 SerialMesh::active_subdomain_elements_begin (const subdomain_id_type subdomain_id) const 00470 { 00471 Predicates::ActiveSubdomain<const_elem_iterator_imp> p(subdomain_id); 00472 return const_element_iterator(_elements.begin(), _elements.end(), p); 00473 } 00474 00475 00476 00477 00478 00479 00480 00481 // default end() accessor 00482 SerialMesh::element_iterator 00483 SerialMesh::elements_end () 00484 { 00485 Predicates::NotNull<elem_iterator_imp> p; 00486 return element_iterator(_elements.end(), _elements.end(), p); 00487 } 00488 00489 00490 00491 // active end() accessor 00492 SerialMesh::element_iterator 00493 SerialMesh::active_elements_end () 00494 { 00495 Predicates::Active<elem_iterator_imp> p; 00496 return element_iterator(_elements.end(), _elements.end(), p); 00497 } 00498 00499 00500 00501 // active end() accessor 00502 SerialMesh::element_iterator 00503 SerialMesh::not_active_elements_end () 00504 { 00505 Predicates::NotActive<elem_iterator_imp> p; 00506 return element_iterator(_elements.end(), _elements.end(), p); 00507 } 00508 00509 00510 00511 // ancestor end() accessor 00512 SerialMesh::element_iterator 00513 SerialMesh::ancestor_elements_end () 00514 { 00515 Predicates::Ancestor<elem_iterator_imp> p; 00516 return element_iterator(_elements.end(), _elements.end(), p); 00517 } 00518 00519 00520 00521 // ancestor end() accessor 00522 SerialMesh::element_iterator 00523 SerialMesh::not_ancestor_elements_end () 00524 { 00525 Predicates::Ancestor<elem_iterator_imp> p; 00526 return element_iterator(_elements.end(), _elements.end(), p); 00527 } 00528 00529 00530 00531 // subactive end() accessor 00532 SerialMesh::element_iterator 00533 SerialMesh::subactive_elements_end () 00534 { 00535 Predicates::SubActive<elem_iterator_imp> p; 00536 return element_iterator(_elements.end(), _elements.end(), p); 00537 } 00538 00539 00540 00541 // subactive end() accessor 00542 SerialMesh::element_iterator 00543 SerialMesh::not_subactive_elements_end () 00544 { 00545 Predicates::NotSubActive<elem_iterator_imp> p; 00546 return element_iterator(_elements.end(), _elements.end(), p); 00547 } 00548 00549 00550 00551 // local end() accessor 00552 SerialMesh::element_iterator 00553 SerialMesh::local_elements_end () 00554 { 00555 Predicates::Local<elem_iterator_imp> p; 00556 return element_iterator(_elements.end(), _elements.end(), p); 00557 } 00558 00559 00560 00561 // not_local end() accessor 00562 SerialMesh::element_iterator 00563 SerialMesh::not_local_elements_end () 00564 { 00565 Predicates::NotLocal<elem_iterator_imp> p; 00566 return element_iterator(_elements.end(), _elements.end(), p); 00567 } 00568 00569 00570 00571 // active local end() accessor 00572 SerialMesh::element_iterator 00573 SerialMesh::active_local_elements_end () 00574 { 00575 Predicates::ActiveLocal<elem_iterator_imp> p; 00576 return element_iterator(_elements.end(), _elements.end(), p); 00577 } 00578 00579 00580 00581 // not_local end() accessor 00582 SerialMesh::element_iterator 00583 SerialMesh::active_not_local_elements_end () 00584 { 00585 Predicates::ActiveNotLocal<elem_iterator_imp> p; 00586 return element_iterator(_elements.end(), _elements.end(), p); 00587 } 00588 00589 00590 00591 // level end() accessor 00592 SerialMesh::element_iterator 00593 SerialMesh::level_elements_end (const unsigned int level) 00594 { 00595 Predicates::Level<elem_iterator_imp> p(level); 00596 return element_iterator(_elements.end(), _elements.end(), p); 00597 } 00598 00599 00600 00601 // not level end() accessor 00602 SerialMesh::element_iterator 00603 SerialMesh::not_level_elements_end (const unsigned int level) 00604 { 00605 Predicates::NotLevel<elem_iterator_imp> p(level); 00606 return element_iterator(_elements.end(), _elements.end(), p); 00607 } 00608 00609 00610 00611 // local level end() accessor 00612 SerialMesh::element_iterator 00613 SerialMesh::local_level_elements_end (const unsigned int level) 00614 { 00615 Predicates::LocalLevel<elem_iterator_imp> p(level); 00616 return element_iterator(_elements.end(), _elements.end(), p); 00617 } 00618 00619 00620 00621 // local not level end() accessor 00622 SerialMesh::element_iterator 00623 SerialMesh::local_not_level_elements_end (const unsigned int level) 00624 { 00625 Predicates::LocalNotLevel<elem_iterator_imp> p(level); 00626 return element_iterator(_elements.end(), _elements.end(), p); 00627 } 00628 00629 00630 00631 // pid end() accessor 00632 SerialMesh::element_iterator 00633 SerialMesh::pid_elements_end (const processor_id_type proc_id) 00634 { 00635 Predicates::PID<elem_iterator_imp> p(proc_id); 00636 return element_iterator(_elements.end(), _elements.end(), p); 00637 } 00638 00639 00640 00641 // type end() accessor 00642 SerialMesh::element_iterator 00643 SerialMesh::type_elements_end (const ElemType type) 00644 { 00645 Predicates::Type<elem_iterator_imp> p(type); 00646 return element_iterator(_elements.end(), _elements.end(), p); 00647 } 00648 00649 00650 00651 // active type end() accessor 00652 SerialMesh::element_iterator 00653 SerialMesh::active_type_elements_end (const ElemType type) 00654 { 00655 Predicates::ActiveType<elem_iterator_imp> p(type); 00656 return element_iterator(_elements.end(), _elements.end(), p); 00657 } 00658 00659 00660 00661 // active PID end() accessor 00662 SerialMesh::element_iterator 00663 SerialMesh::active_pid_elements_end (const processor_id_type proc_id) 00664 { 00665 Predicates::ActivePID<elem_iterator_imp> p(proc_id); 00666 return element_iterator(_elements.end(), _elements.end(), p); 00667 } 00668 00669 00670 00671 // unpartitioned elements end() accessor 00672 SerialMesh::element_iterator 00673 SerialMesh::unpartitioned_elements_end () 00674 { 00675 return this->pid_elements_end(DofObject::invalid_processor_id); 00676 } 00677 00678 00679 00680 // subdomain elements end() accessor 00681 SerialMesh::element_iterator 00682 SerialMesh::active_local_subdomain_elements_end (const subdomain_id_type subdomain_id) 00683 { 00684 Predicates::ActiveLocalSubdomain<elem_iterator_imp> p(subdomain_id); 00685 return element_iterator(_elements.end(), _elements.end(), p); 00686 } 00687 00688 00689 00690 // subdomain elements end() accessor 00691 SerialMesh::element_iterator 00692 SerialMesh::active_subdomain_elements_end (const subdomain_id_type subdomain_id) 00693 { 00694 Predicates::ActiveSubdomain<elem_iterator_imp> p(subdomain_id); 00695 return element_iterator(_elements.end(), _elements.end(), p); 00696 } 00697 00698 00699 00700 00701 00702 00703 00704 00705 00706 00707 00708 // default const end() accessor 00709 SerialMesh::const_element_iterator 00710 SerialMesh::elements_end () const 00711 { 00712 Predicates::NotNull<const_elem_iterator_imp> p; 00713 return const_element_iterator(_elements.end(), _elements.end(), p); 00714 } 00715 00716 00717 00718 // active const end() accessor 00719 SerialMesh::const_element_iterator 00720 SerialMesh::active_elements_end () const 00721 { 00722 Predicates::Active<const_elem_iterator_imp> p; 00723 return const_element_iterator(_elements.end(), _elements.end(), p); 00724 } 00725 00726 00727 00728 // not active const end() accessor 00729 SerialMesh::const_element_iterator 00730 SerialMesh::not_active_elements_end () const 00731 { 00732 Predicates::NotActive<const_elem_iterator_imp> p; 00733 return const_element_iterator(_elements.end(), _elements.end(), p); 00734 } 00735 00736 00737 00738 // ancestor const end() accessor 00739 SerialMesh::const_element_iterator 00740 SerialMesh::ancestor_elements_end () const 00741 { 00742 Predicates::Ancestor<const_elem_iterator_imp> p; 00743 return const_element_iterator(_elements.end(), _elements.end(), p); 00744 } 00745 00746 00747 00748 // not ancestor const end() accessor 00749 SerialMesh::const_element_iterator 00750 SerialMesh::not_ancestor_elements_end () const 00751 { 00752 Predicates::Ancestor<const_elem_iterator_imp> p; 00753 return const_element_iterator(_elements.end(), _elements.end(), p); 00754 } 00755 00756 00757 00758 // subactive const end() accessor 00759 SerialMesh::const_element_iterator 00760 SerialMesh::subactive_elements_end () const 00761 { 00762 Predicates::SubActive<const_elem_iterator_imp> p; 00763 return const_element_iterator(_elements.end(), _elements.end(), p); 00764 } 00765 00766 00767 00768 // not subactive const end() accessor 00769 SerialMesh::const_element_iterator 00770 SerialMesh::not_subactive_elements_end () const 00771 { 00772 Predicates::NotSubActive<const_elem_iterator_imp> p; 00773 return const_element_iterator(_elements.end(), _elements.end(), p); 00774 } 00775 00776 00777 00778 // local const end() accessor 00779 SerialMesh::const_element_iterator 00780 SerialMesh::local_elements_end () const 00781 { 00782 Predicates::Local<const_elem_iterator_imp> p; 00783 return const_element_iterator(_elements.end(), _elements.end(), p); 00784 } 00785 00786 00787 00788 // not_local const end() accessor 00789 SerialMesh::const_element_iterator 00790 SerialMesh::not_local_elements_end () const 00791 { 00792 Predicates::NotLocal<const_elem_iterator_imp> p; 00793 return const_element_iterator(_elements.end(), _elements.end(), p); 00794 } 00795 00796 00797 00798 // local active const end() accessor 00799 SerialMesh::const_element_iterator 00800 SerialMesh::active_local_elements_end () const 00801 { 00802 Predicates::ActiveLocal<const_elem_iterator_imp> p; 00803 return const_element_iterator(_elements.end(), _elements.end(), p); 00804 } 00805 00806 00807 00808 // const local active const end() accessor 00809 SerialMesh::const_element_iterator 00810 SerialMesh::active_not_local_elements_end () const 00811 { 00812 Predicates::ActiveNotLocal<const_elem_iterator_imp> p; 00813 return const_element_iterator(_elements.end(), _elements.end(), p); 00814 } 00815 00816 00817 00818 // level const end() accessor 00819 SerialMesh::const_element_iterator 00820 SerialMesh::level_elements_end (const unsigned int level) const 00821 { 00822 Predicates::Level<const_elem_iterator_imp> p(level); 00823 return const_element_iterator(_elements.end(), _elements.end(), p); 00824 } 00825 00826 00827 00828 // not level const end() accessor 00829 SerialMesh::const_element_iterator 00830 SerialMesh::not_level_elements_end (const unsigned int level) const 00831 { 00832 Predicates::NotLevel<const_elem_iterator_imp> p(level); 00833 return const_element_iterator(_elements.end(), _elements.end(), p); 00834 } 00835 00836 00837 00838 // local level const end() accessor 00839 SerialMesh::const_element_iterator 00840 SerialMesh::local_level_elements_end (const unsigned int level) const 00841 { 00842 Predicates::LocalLevel<const_elem_iterator_imp> p(level); 00843 return const_element_iterator(_elements.end(), _elements.end(), p); 00844 } 00845 00846 00847 00848 // local not level const end() accessor 00849 SerialMesh::const_element_iterator 00850 SerialMesh::local_not_level_elements_end (const unsigned int level) const 00851 { 00852 Predicates::LocalNotLevel<const_elem_iterator_imp> p(level); 00853 return const_element_iterator(_elements.end(), _elements.end(), p); 00854 } 00855 00856 00857 00858 // pid const end() accessor 00859 SerialMesh::const_element_iterator 00860 SerialMesh::pid_elements_end (const processor_id_type proc_id) const 00861 { 00862 Predicates::PID<const_elem_iterator_imp> p(proc_id); 00863 return const_element_iterator(_elements.end(), _elements.end(), p); 00864 } 00865 00866 00867 00868 // type const end() accessor 00869 SerialMesh::const_element_iterator 00870 SerialMesh::type_elements_end (const ElemType type) const 00871 { 00872 Predicates::Type<const_elem_iterator_imp> p(type); 00873 return const_element_iterator(_elements.end(), _elements.end(), p); 00874 } 00875 00876 00877 00878 // active type const end() accessor 00879 SerialMesh::const_element_iterator 00880 SerialMesh::active_type_elements_end (const ElemType type) const 00881 { 00882 Predicates::ActiveType<const_elem_iterator_imp> p(type); 00883 return const_element_iterator(_elements.end(), _elements.end(), p); 00884 } 00885 00886 00887 00888 // active PID end() accessor 00889 SerialMesh::const_element_iterator 00890 SerialMesh::active_pid_elements_end (const processor_id_type proc_id) const 00891 { 00892 Predicates::ActivePID<const_elem_iterator_imp> p(proc_id); 00893 return const_element_iterator(_elements.end(), _elements.end(), p); 00894 } 00895 00896 00897 00898 // unpartitioned elements end() accessor 00899 SerialMesh::const_element_iterator 00900 SerialMesh::unpartitioned_elements_end () const 00901 { 00902 return this->pid_elements_end(DofObject::invalid_processor_id); 00903 } 00904 00905 00906 00907 // subdomain elements end() accessor 00908 SerialMesh::const_element_iterator 00909 SerialMesh::active_local_subdomain_elements_end (const subdomain_id_type subdomain_id) const 00910 { 00911 Predicates::ActiveLocalSubdomain<const_elem_iterator_imp> p(subdomain_id); 00912 return const_element_iterator(_elements.end(), _elements.end(), p); 00913 } 00914 00915 00916 00917 // subdomain elements end() accessor 00918 SerialMesh::const_element_iterator 00919 SerialMesh::active_subdomain_elements_end (const subdomain_id_type subdomain_id) const 00920 { 00921 Predicates::ActiveSubdomain<const_elem_iterator_imp> p(subdomain_id); 00922 return const_element_iterator(_elements.end(), _elements.end(), p); 00923 } 00924 00925 00926 00927 00928 00929 00930 // default nodes begin() accessor 00931 SerialMesh::node_iterator 00932 SerialMesh::nodes_begin () 00933 { 00934 Predicates::NotNull<node_iterator_imp> p; 00935 return node_iterator(_nodes.begin(), _nodes.end(), p); 00936 } 00937 00938 00939 00940 // active nodes begin() accessor 00941 SerialMesh::node_iterator 00942 SerialMesh::active_nodes_begin () 00943 { 00944 Predicates::Active<node_iterator_imp> p; 00945 return node_iterator(_nodes.begin(), _nodes.end(), p); 00946 } 00947 00948 00949 00950 // local nodes begin() accessor 00951 SerialMesh::node_iterator 00952 SerialMesh::local_nodes_begin () 00953 { 00954 Predicates::Local<node_iterator_imp> p; 00955 return node_iterator(_nodes.begin(), _nodes.end(), p); 00956 } 00957 00958 00959 00960 // pid nodes begin() accessor 00961 SerialMesh::node_iterator 00962 SerialMesh::pid_nodes_begin (const processor_id_type proc_id) 00963 { 00964 Predicates::PID<node_iterator_imp> p(proc_id); 00965 return node_iterator(_nodes.begin(), _nodes.end(), p); 00966 } 00967 00968 00969 00970 // default const nodes begin() accessor 00971 SerialMesh::const_node_iterator 00972 SerialMesh::nodes_begin () const 00973 { 00974 Predicates::NotNull<const_node_iterator_imp> p; 00975 return const_node_iterator(_nodes.begin(), _nodes.end(), p); 00976 } 00977 00978 00979 00980 // active const nodes begin() accessor 00981 SerialMesh::const_node_iterator 00982 SerialMesh::active_nodes_begin () const 00983 { 00984 Predicates::Active<const_node_iterator_imp> p; 00985 return const_node_iterator(_nodes.begin(), _nodes.end(), p); 00986 } 00987 00988 00989 00990 // local const nodes begin() accessor 00991 SerialMesh::const_node_iterator 00992 SerialMesh::local_nodes_begin () const 00993 { 00994 Predicates::Local<const_node_iterator_imp> p; 00995 return const_node_iterator(_nodes.begin(), _nodes.end(), p); 00996 } 00997 00998 00999 01000 // pid const nodes begin() accessor 01001 SerialMesh::const_node_iterator 01002 SerialMesh::pid_nodes_begin (const processor_id_type proc_id) const 01003 { 01004 Predicates::PID<const_node_iterator_imp> p(proc_id); 01005 return const_node_iterator(_nodes.begin(), _nodes.end(), p); 01006 } 01007 01008 01009 01010 // default nodes end() accessor 01011 SerialMesh::node_iterator 01012 SerialMesh::nodes_end () 01013 { 01014 Predicates::NotNull<node_iterator_imp> p; 01015 return node_iterator(_nodes.end(), _nodes.end(), p); 01016 } 01017 01018 01019 01020 // active nodes end() accessor 01021 SerialMesh::node_iterator 01022 SerialMesh::active_nodes_end () 01023 { 01024 Predicates::Active<node_iterator_imp> p; 01025 return node_iterator(_nodes.end(), _nodes.end(), p); 01026 } 01027 01028 01029 01030 // local nodes end() accessor 01031 SerialMesh::node_iterator 01032 SerialMesh::local_nodes_end () 01033 { 01034 Predicates::Local<node_iterator_imp> p; 01035 return node_iterator(_nodes.end(), _nodes.end(), p); 01036 } 01037 01038 01039 01040 // pid nodes end() accessor 01041 SerialMesh::node_iterator 01042 SerialMesh::pid_nodes_end (const processor_id_type proc_id) 01043 { 01044 Predicates::PID<node_iterator_imp> p(proc_id); 01045 return node_iterator(_nodes.end(), _nodes.end(), p); 01046 } 01047 01048 01049 01050 // default const nodes end() accessor 01051 SerialMesh::const_node_iterator 01052 SerialMesh::nodes_end () const 01053 { 01054 Predicates::NotNull<const_node_iterator_imp> p; 01055 return const_node_iterator(_nodes.end(), _nodes.end(), p); 01056 } 01057 01058 01059 01060 // const active nodes end() accessor 01061 SerialMesh::const_node_iterator 01062 SerialMesh::active_nodes_end () const 01063 { 01064 Predicates::Active<const_node_iterator_imp> p; 01065 return const_node_iterator(_nodes.end(), _nodes.end(), p); 01066 } 01067 01068 01069 01070 // local const nodes end() accessor 01071 SerialMesh::const_node_iterator 01072 SerialMesh::local_nodes_end () const 01073 { 01074 Predicates::Local<const_node_iterator_imp> p; 01075 return const_node_iterator(_nodes.end(), _nodes.end(), p); 01076 } 01077 01078 01079 01080 // pid const nodes end() accessor 01081 SerialMesh::const_node_iterator 01082 SerialMesh::pid_nodes_end (const processor_id_type proc_id) const 01083 { 01084 Predicates::PID<const_node_iterator_imp> p(proc_id); 01085 return const_node_iterator(_nodes.end(), _nodes.end(), p); 01086 } 01087 01088 } // namespace libMesh
Site Created By: libMesh Developers
Last modified: February 05 2013 19:54:48 UTC
Hosted By: