25 #include "libmesh/dense_subvector.h" 
   26 #include "libmesh/dense_vector.h" 
   27 #include "libmesh/laspack_vector.h" 
   28 #include "libmesh/laspack_matrix.h" 
   29 #include "libmesh/int_range.h" 
   31 #ifdef LIBMESH_HAVE_LASPACK 
   58   return static_cast<Real>(l1Norm_V(const_cast<QVector*>(&_vec)));
 
   68   return static_cast<Real>(l2Norm_V(const_cast<QVector*>(&_vec)));
 
   78   return static_cast<Real>(MaxNorm_V(const_cast<QVector*>(&_vec)));
 
  108 template <
typename T>
 
  111   libmesh_assert_equal_to(size(), v.
size());
 
  116     this->set(i, (*
this)(i) * v(i));
 
  123 template <
typename T>
 
  126   libmesh_assert_equal_to(size(), v.
size());
 
  131     this->set(i, (*
this)(i) / v(i));
 
  138 template <
typename T>
 
  148       libmesh_assert_not_equal_to (v, T(0));
 
  150       this->set(i, 1. / v);
 
  156 template <
typename T>
 
  170 template <
typename T>
 
  179   this->_is_closed = 
false;
 
  186 template <
typename T>
 
  194 template <
typename T>
 
  198   const LaspackVector * v = cast_ptr<const LaspackVector *>(&v_in);
 
  201   const bool was_closed = this->_is_closed;
 
  205   libmesh_assert_equal_to (this->size(), v->
size());
 
  208     this->add (i, a*(*v)(i));
 
  211   this->_is_closed = was_closed;
 
  217 template <
typename T>
 
  229   AddAsgn_VV (&_vec, Mul_QV(const_cast<QMatrix*>(&mat->_QMat),
 
  230                             const_cast<QVector*>(&vec->
_vec)));
 
  234 template <
typename T>
 
  238   libmesh_not_implemented();
 
  243 template <
typename T>
 
  248   Asgn_VV(&_vec, Mul_SV (factor, &_vec));
 
  251 template <
typename T>
 
  262 template <
typename T>
 
  271   return Mul_VV (const_cast<QVector*>(&(this->_vec)),
 
  272                  const_cast<QVector*>(&(v->
_vec)));
 
  277 template <
typename T>
 
  284   V_SetAllCmp (&_vec, s);
 
  291 template <
typename T>
 
  297     cast_ptr<const LaspackVector<T> *>(&v_in);
 
  308 template <
typename T>
 
  314   libmesh_assert_equal_to (this->size(), v.
size());
 
  317     Asgn_VV (const_cast<QVector*>(&_vec),
 
  318              const_cast<QVector*>(&v.
_vec)
 
  322   this->_is_closed = 
true;
 
  330 template <
typename T>
 
  338   if (this->size() == v.size())
 
  343     libmesh_error_msg(
"this->size() = " << this->size() << 
" must be equal to v.size() = " << v.size());
 
  349 template <
typename T>
 
  354     cast_ptr<LaspackVector<T> *>(&v_local_in);
 
  363 template <
typename T>
 
  365                                  const std::vector<numeric_index_type> & libmesh_dbg_var(send_list))
 const 
  369     cast_ptr<LaspackVector<T> *>(&v_local_in);
 
  372   libmesh_assert_less_equal (send_list.size(), v_local->
size());
 
  379 template <
typename T>
 
  381                                  const std::vector<numeric_index_type> & indices)
 const 
  384   v_local.resize(indices.size());
 
  387     v_local[i] = (*
this)(indices[i]);
 
  392 template <
typename T>
 
  395                                  const std::vector<numeric_index_type> & libmesh_dbg_var(send_list))
 
  397   libmesh_assert_equal_to (first_local_idx, 0);
 
  398   libmesh_assert_equal_to (last_local_idx+1, this->size());
 
  400   libmesh_assert_less_equal (send_list.size(), this->size());
 
  403   this->_is_closed = 
true;
 
  409 template <
typename T>
 
  413   v_local.resize(this->size());
 
  416     v_local[i] = (*this)(i);
 
  421 template <
typename T>
 
  425   libmesh_assert_equal_to (pid, 0);
 
  427   this->localize (v_local);
 
  432 template <
typename T>
 
  436   libmesh_not_implemented();
 
  441 template <
typename T>
 
  446     return -std::numeric_limits<Real>::max();
 
  460 template <
typename T>
 
  465     return std::numeric_limits<Real>::max();
 
  485 #endif // #ifdef LIBMESH_HAVE_LASPACK