deal.II version GIT relicensing-2291-g668cd86249 2024-12-24 11:30:00+00:00
\(\newcommand{\dealvcentcolon}{\mathrel{\mathop{:}}}\) \(\newcommand{\dealcoloneq}{\dealvcentcolon\mathrel{\mkern-1.2mu}=}\) \(\newcommand{\jump}[1]{\left[\!\left[ #1 \right]\!\right]}\) \(\newcommand{\average}[1]{\left\{\!\left\{ #1 \right\}\!\right\}}\)
Loading...
Searching...
No Matches
read_write_vector.cc
Go to the documentation of this file.
1// ------------------------------------------------------------------------
2//
3// SPDX-License-Identifier: LGPL-2.1-or-later
4// Copyright (C) 2015 - 2023 by the deal.II authors
5//
6// This file is part of the deal.II library.
7//
8// Part of the source code is dual licensed under Apache-2.0 WITH
9// LLVM-exception OR LGPL-2.1-or-later. Detailed license information
10// governing the source code and code contributions can be found in
11// LICENSE.md and CONTRIBUTING.md at the top level directory of deal.II.
12//
13// ------------------------------------------------------------------------
14
16#include <deal.II/lac/read_write_vector.templates.h>
17
19
20#include "read_write_vector.inst"
21
22namespace LinearAlgebra
23{
24 // do a few functions that currently don't fit the scheme because they have
25 // two template arguments that need to be different (the case of same
26 // arguments is covered by the default copy constructor and copy operator that
27 // is declared separately)
28
29#define TEMPL_COPY_CONSTRUCTOR(S1, S2) \
30 template ReadWriteVector<S1> &ReadWriteVector<S1>::operator= \
31 <S2>(const ReadWriteVector<S2> &)
32
33 TEMPL_COPY_CONSTRUCTOR(double, float);
34 TEMPL_COPY_CONSTRUCTOR(float, double);
35#ifdef DEAL_II_WITH_COMPLEX_VALUES
36 TEMPL_COPY_CONSTRUCTOR(std::complex<double>, std::complex<float>);
37 TEMPL_COPY_CONSTRUCTOR(std::complex<float>, std::complex<double>);
38#endif
39
40#undef TEMPL_COPY_CONSTRUCTOR
41
42#ifndef DOXYGEN
43 template void
47 const std::shared_ptr<const Utilities::MPI::CommunicationPatternBase> &);
48 template void
52 const std::shared_ptr<const Utilities::MPI::CommunicationPatternBase> &);
53
54 template void
58 const std::shared_ptr<const Utilities::MPI::CommunicationPatternBase> &);
59 template void
63 const std::shared_ptr<const Utilities::MPI::CommunicationPatternBase> &);
64# ifdef DEAL_II_WITH_COMPLEX_VALUES
65 template void
67 const distributed::Vector<std::complex<float>, ::MemorySpace::Host>
68 &,
70 const std::shared_ptr<const Utilities::MPI::CommunicationPatternBase> &);
71
72 template void
74 const distributed::Vector<std::complex<double>, ::MemorySpace::Host>
75 &,
77 const std::shared_ptr<const Utilities::MPI::CommunicationPatternBase> &);
78# endif
79
80
81
82# ifdef HAVE_TPETRA_INST_FLOAT
83 template void
87 const std::shared_ptr<const Utilities::MPI::CommunicationPatternBase> &);
88 template void
92 const std::shared_ptr<const Utilities::MPI::CommunicationPatternBase> &);
93# endif
94# ifdef HAVE_TPETRA_INST_DOUBLE
95 template void
99 const std::shared_ptr<const Utilities::MPI::CommunicationPatternBase> &);
100 template void
104 const std::shared_ptr<const Utilities::MPI::CommunicationPatternBase> &);
105# endif
106# ifdef DEAL_II_WITH_COMPLEX_VALUES
107# ifdef HAVE_TPETRA_INST_COMPLEX_FLOAT
108 template void
109 ReadWriteVector<std::complex<float>>::import_elements(
110 const LinearAlgebra::TpetraWrappers::Vector<std::complex<float>,
113 const std::shared_ptr<const Utilities::MPI::CommunicationPatternBase> &);
114 template void
115 ReadWriteVector<std::complex<float>>::import_elements(
116 const LinearAlgebra::TpetraWrappers::Vector<std::complex<float>,
119 const std::shared_ptr<const Utilities::MPI::CommunicationPatternBase> &);
120# endif
121# ifdef HAVE_TPETRA_INST_COMPLEX_DOUBLE
122 template void
123 ReadWriteVector<std::complex<double>>::import_elements(
124 const LinearAlgebra::TpetraWrappers::Vector<std::complex<double>,
127 const std::shared_ptr<const Utilities::MPI::CommunicationPatternBase> &);
128 template void
129 ReadWriteVector<std::complex<double>>::import_elements(
130 const LinearAlgebra::TpetraWrappers::Vector<std::complex<double>,
133 const std::shared_ptr<const Utilities::MPI::CommunicationPatternBase> &);
134# endif
135# endif
136
137#endif
138} // namespace LinearAlgebra
139
void import_elements(const ::Vector< Number > &vec, VectorOperation::values operation, const std::shared_ptr< const Utilities::MPI::CommunicationPatternBase > &communication_pattern={})
#define DEAL_II_NAMESPACE_OPEN
Definition config.h:498
#define DEAL_II_NAMESPACE_CLOSE
Definition config.h:499
#define TEMPL_COPY_CONSTRUCTOR(S1, S2)