28 rc_type::iterator start_range = this->
_ranges.begin();
30 rc_type::const_iterator other_range = other._ranges.begin();
31 const rc_type::const_iterator other_end = other._ranges.end();
33 for (; other_range != other_end; ++other_range)
35 std::size_t other_range_start = other_range->first;
36 std::size_t other_range_end = other_range->second;
44 rc_type::iterator lb =
45 std::upper_bound (start_range, this->
_ranges.end(),
46 std::make_pair(other_range_start, max_size));
62 const std::size_t lastloc = lb->second;
63 libmesh_assert_less_equal(lb->first, lastloc);
64 libmesh_assert_less_equal(lb->first, other_range_start);
68 CouplingMatrix::rc_type::const_iterator
next = lb;
73 libmesh_assert_greater(
next->first, lastloc+1);
78 CouplingMatrix::rc_type::iterator
next = lb;
83 if (other_range_start <= lastloc)
84 lb->second = other_range_end;
89 start_range = lb = this->
_ranges.insert
90 (next, std::make_pair(other_range_start, other_range_end));
98 for (
const std::size_t nextloc =
101 nextloc <= lb->second; ++
next)
105 libmesh_assert_greater(nextloc, lastloc+1);
110 CouplingMatrix::rc_type::iterator oldnext = lb;
119 for (; other_range != other_end; ++other_range)
120 this->
_ranges.push_back(*other_range);
CouplingMatrix & operator &=(const CouplingMatrix &other)
long double max(long double a, double b)