44 indexList_ = indexList;
46 std::sort(indexList_.begin(), indexList_.end());
47 indexList_.erase(std::unique(
48 indexList_.begin(), indexList_.end()), indexList_.end());
56 if (indexList_.size() == 0) {
57 indexList_.push_back(index);
61 std::vector<int>::iterator it;
62 it = std::find(indexList_.begin(), indexList_.end(), index);
64 if (it != indexList_.end())
return;
66 it = std::upper_bound(indexList_.begin(), indexList_.end(), index);
67 indexList_.insert(it, index);
106 if (index1 > index2) {
112 if (indexList_.size() == 0)
return false;
115 if (index2 < indexList_.front() || indexList_.back() < index1)
return false;
117 Scalar indexEvent1 = indexOfNextEvent(index1);
118 Scalar indexEvent2 = indexOfNextEvent(index2);
120 if (indexEvent1 != indexEvent2)
return true;
123 if (index1 < indexEvent1 && indexEvent1 <= index2)
return true;
131 const Teuchos::EVerbosityLevel verbLevel)
const
133 auto l_out = Teuchos::fancyOStream( out.getOStream() );
134 Teuchos::OSTab ostab(*l_out, 2,
"TimeEventListIndex");
135 l_out->setOutputToRootOnly(0);
137 *l_out <<
"TimeEventListIndex:" <<
"\n"
138 <<
" name = " << this->getName() <<
"\n"
139 <<
" Type = " << this->getType() <<
"\n"
141 if (!indexList_.empty()) {
142 for (
auto it = indexList_.begin(); it != indexList_.end()-1; ++it)
143 *l_out << *it <<
", ";
144 *l_out << *(indexList_.end()-1) << std::endl;
146 *l_out <<
"<empty>" << std::endl;
180 Teuchos::RCP<Teuchos::ParameterList> pl)
182 auto teli = Teuchos::rcp(
new TimeEventListIndex<Scalar>());
183 if (pl == Teuchos::null)
return teli;
185 TEUCHOS_TEST_FOR_EXCEPTION(
186 pl->get<std::string>(
"Type",
"List Index") !=
"List Index",
188 "Error - Time Event Type != 'List Index'. (='"
189 + pl->get<std::string>(
"Type")+
"')\n");
191 pl->validateParametersAndSetDefaults(*teli->getValidParameters());
193 teli->setName (pl->get(
"Name",
"From createTimeEventListIndex"));
195 std::vector<int> indexList;
197 std::string str = pl->get<std::string>(
"Index List");
198 std::string delimiters(
",");
199 std::string::size_type lastPos = str.find_first_not_of(delimiters, 0);
200 std::string::size_type pos = str.find_first_of(delimiters, lastPos);
201 while ((pos != std::string::npos) || (lastPos != std::string::npos)) {
202 std::string token = str.substr(lastPos,pos-lastPos);
203 indexList.push_back(
int(std::stoi(token)));
204 if(pos==std::string::npos)
break;
206 lastPos = str.find_first_not_of(delimiters, pos);
207 pos = str.find_first_of(delimiters, lastPos);
209 teli->setIndexList(indexList);