*/
template <typename VectorType, typename LocalType>
void
- distribute_local_to_global (const Vector<double> &local_vector,
+ distribute_local_to_global (const Vector<LocalType> &local_vector,
const std::vector<size_type> &local_dof_indices,
VectorType &global_vector,
const FullMatrix<LocalType> &local_matrix) const;
{
// create a dummy and hand on to the function actually implementing this
// feature in the cm.templates.h file.
- Vector<double> dummy(0);
+ Vector<std::complex<double> > dummy(0);
distribute_local_to_global (local_matrix, dummy, local_dof_indices,
global_matrix, dummy, false,
dealii::internal::bool2type<IsBlockMatrix<MatrixType>::value>());
// resolves constraints of one column at the innermost loop. goes through
// the origin of each global entry and finds out which data we need to
// collect.
+ template<typename LocalType>
static inline
- double resolve_matrix_entry (const GlobalRowsFromLocal &global_rows,
+ LocalType resolve_matrix_entry (const GlobalRowsFromLocal &global_rows,
const GlobalRowsFromLocal &global_cols,
const size_type i,
const size_type j,
// degrees of freedom to which this dof is constrained are also constrained
// (the usual case with hanging nodes in 3d). however, in the line below, we
// do actually do something with this dof
- template <typename MatrixType, typename VectorType>
+ template <typename MatrixType, typename VectorType, typename LocalType>
inline void
set_matrix_diagonals (const internals::GlobalRowsFromLocal &global_rows,
const std::vector<size_type> &local_dof_indices,
// Resolve the constraints from the vector and apply inhomogeneities.
+template< typename LocalType>
inline
-double
+LocalType
ConstraintMatrix::
resolve_vector_entry (const size_type i,
const internals::GlobalRowsFromLocal &global_rows,
// internal implementation for distribute_local_to_global for standard
// (non-block) matrices
-template <typename MatrixType, typename VectorType>
+template <typename MatrixType, typename VectorType, typename LocalType>
void
ConstraintMatrix::distribute_local_to_global (
const FullMatrix<LocalType> &local_matrix,
-template <typename MatrixType>
+template <typename MatrixType, typename LocalType>
void
ConstraintMatrix::distribute_local_to_global (
const FullMatrix<LocalType> &local_matrix,
// similar function as above, but now specialized for block matrices. See the
// other function for additional comments.
-template <typename MatrixType, typename VectorType>
+template <typename MatrixType, typename VectorType, typename LocalType>
void
ConstraintMatrix::
distribute_local_to_global (const FullMatrix<LocalType> &local_matrix,
const FullMatrix<double> &) const
#ifdef DEAL_II_WITH_PETSC
+#ifndef PETSC_USE_COMPLEX
VECTOR_FUNCTIONS(PETScWrappers::MPI::Vector);
VECTOR_FUNCTIONS(PETScWrappers::MPI::BlockVector);
+#else
// if PETSC_COMPLEX @whattodo check this works
-VECTOR_FUNCTIONS_COMPLEX(PETScWrappers::MPI::Vector);
-VECTOR_FUNCTIONS_COMPLEX(PETScWrappers::MPI::BlockVector);
+COMPLEX_VECTOR_FUNCTIONS(PETScWrappers::MPI::Vector);
+COMPLEX_VECTOR_FUNCTIONS(PETScWrappers::MPI::BlockVector);
+#endif
#endif
#ifdef DEAL_II_WITH_TRILINOS
template void ConstraintMatrix::distribute<V >(const V&, V&) const;
template void ConstraintMatrix::set_zero<V >(V&) const;
}
-
-for (V: EXTERNAL_SEQUENTIAL_VECTORS)
- {
+
+for (V: REAL_EXTERNAL_SEQUENTIAL_VECTORS)
+ {
template void ConstraintMatrix::distribute_local_to_global<V > (
const Vector<double>&, const std::vector<types::global_dof_index> &, V&, const FullMatrix<double>&) const;
- }
+ }
for (V: COMPLEX_EXTERNAL_SEQUENTIAL_VECTORS)
{