$treeview $search $mathjax
|
Palabos
Version 1.1
$projectbrief
|
$projectbrief
|
$searchbox |
00001 /* This file is part of the Palabos library. 00002 * 00003 * Copyright (C) 2011 FlowKit Sarl 00004 * Avenue de Chailly 23 00005 * 1012 Lausanne, Switzerland 00006 * E-mail contact: contact@flowkit.com 00007 * 00008 * The most recent release of Palabos can be downloaded at 00009 * <http://www.palabos.org/> 00010 * 00011 * The library Palabos is free software: you can redistribute it and/or 00012 * modify it under the terms of the GNU Affero General Public License as 00013 * published by the Free Software Foundation, either version 3 of the 00014 * License, or (at your option) any later version. 00015 * 00016 * The library is distributed in the hope that it will be useful, 00017 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00018 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00019 * GNU Affero General Public License for more details. 00020 * 00021 * You should have received a copy of the GNU Affero General Public License 00022 * along with this program. If not, see <http://www.gnu.org/licenses/>. 00023 */ 00024 00029 #ifndef INDEX_UTIL_HH 00030 #define INDEX_UTIL_HH 00031 00032 #include "core/indexUtil.h" 00033 00034 namespace plb { 00035 00036 template<typename T, template<typename U> class Descriptor> 00037 Index<T,Descriptor>::Index(plint direction_) 00038 : direction(direction_) 00039 { 00040 PLB_ASSERT( direction<Descriptor<T>::d ); 00041 } 00042 00043 template<typename T, template<typename U> class Descriptor> 00044 IndexCollection Index<T,Descriptor>::operator==(plint value) const { 00045 std::vector<plint> indexes; 00046 for (plint iPop=0; iPop<Descriptor<T>::q; ++iPop) { 00047 if (Descriptor<T>::c[iPop][direction]==value) { 00048 indexes.push_back(iPop); 00049 } 00050 } 00051 return IndexCollection(indexes); 00052 } 00053 00054 template<typename T, template<typename U> class Descriptor> 00055 IndexCollection Index<T,Descriptor>::operator<(plint value) const { 00056 std::vector<plint> indexes; 00057 for (plint iPop=0; iPop<Descriptor<T>::q; ++iPop) { 00058 if (Descriptor<T>::c[iPop][direction]<value) { 00059 indexes.push_back(iPop); 00060 } 00061 } 00062 return IndexCollection(indexes); 00063 } 00064 00065 template<typename T, template<typename U> class Descriptor> 00066 IndexCollection Index<T,Descriptor>::operator<=(plint value) const { 00067 std::vector<plint> indexes; 00068 for (plint iPop=0; iPop<Descriptor<T>::q; ++iPop) { 00069 if (Descriptor<T>::c[iPop][direction]<=value) { 00070 indexes.push_back(iPop); 00071 } 00072 } 00073 return IndexCollection(indexes); 00074 } 00075 00076 template<typename T, template<typename U> class Descriptor> 00077 IndexCollection Index<T,Descriptor>::operator>(plint value) const { 00078 std::vector<plint> indexes; 00079 for (plint iPop=0; iPop<Descriptor<T>::q; ++iPop) { 00080 if (Descriptor<T>::c[iPop][direction]>value) { 00081 indexes.push_back(iPop); 00082 } 00083 } 00084 return IndexCollection(indexes); 00085 } 00086 00087 template<typename T, template<typename U> class Descriptor> 00088 IndexCollection Index<T,Descriptor>::operator>=(plint value) const { 00089 std::vector<plint> indexes; 00090 for (plint iPop=0; iPop<Descriptor<T>::q; ++iPop) { 00091 if (Descriptor<T>::c[iPop][direction]>=value) { 00092 indexes.push_back(iPop); 00093 } 00094 } 00095 return IndexCollection(indexes); 00096 } 00097 00098 } // namespace plb 00099 00100 #endif // INDEX_UTIL_HH
1.6.3
1.6.3