23#include <boost/format.hpp>
37template <
typename _Environment>
47 std::vector<std::shared_ptr<ConvergenceCriterion<Environment>>> criteria;
61 template <
typename C1,
typename C2>
63 criteria {std::make_shared<C1>(criterion1), std::make_shared<C2>(criterion2)} {}
75 std::string description_string = (boost::format(
"A compound convergence criterion step consisting of %s combined criteria:\n") % this->
count()).str();
77 for (
size_t i = 0; i < this->
count(); i++) {
78 const auto& criterion = this->criteria[i];
79 description_string += (boost::format(
"\t%s. %s\n") % std::to_string(i + 1) % criterion->description()).str();
81 return description_string;
93 for (
const auto& criterion : this->criteria) {
94 if (!criterion->isFulfilled(environment)) {
113 template <
typename C>
115 this->criteria.push_back(std::make_shared<C>(criterion));
123 size_t count()
const {
return this->criteria.size(); }
Definition: CompoundConvergenceCriterion.hpp:39
Self add(const C &criterion)
Definition: CompoundConvergenceCriterion.hpp:114
std::string description() const override
Definition: CompoundConvergenceCriterion.hpp:73
bool isFulfilled(Environment &environment) override
Definition: CompoundConvergenceCriterion.hpp:90
size_t count() const
Definition: CompoundConvergenceCriterion.hpp:123
CompoundConvergenceCriterion(const C1 &criterion1, const C2 &criterion2)
Definition: CompoundConvergenceCriterion.hpp:62
_Environment Environment
Definition: CompoundConvergenceCriterion.hpp:42
Definition: ConvergenceCriterion.hpp:33
Definition: BaseOneElectronIntegralBuffer.hpp:25