16 #include <deal.II/sundials/copy.h>
18 #ifdef DEAL_II_WITH_SUNDIALS
20 DEAL_II_NAMESPACE_OPEN
33 N_Vector_length(
const N_Vector &vec)
35 const N_Vector_ID
id = N_VGetVectorID(vec);
39 case SUNDIALS_NVEC_SERIAL:
41 length = NV_LENGTH_S(vec);
44 # ifdef DEAL_II_WITH_MPI
45 case SUNDIALS_NVEC_PARALLEL:
47 length = NV_LOCLENGTH_P(vec);
56 return static_cast<std::size_t>(length);
59 # ifdef DEAL_II_WITH_MPI
61 # ifdef DEAL_II_WITH_TRILINOS
70 for (std::size_t i = 0; i < N; ++i)
83 for (std::size_t i = 0; i < N; ++i)
95 for (std::size_t i = 0; i < N; ++i)
108 for (std::size_t i = 0; i < N; ++i)
114 # endif // DEAL_II_WITH_TRILINOS
116 # ifdef DEAL_II_WITH_PETSC
117 # ifndef PETSC_USE_COMPLEX
125 for (std::size_t i = 0; i < N; ++i)
138 for (std::size_t i = 0; i < N; ++i)
150 for (std::size_t i = 0; i < N; ++i)
163 for (std::size_t i = 0; i < N; ++i)
169 # endif // PETSC_USE_COMPLEX
170 # endif // DEAL_II_WITH_PETSC
177 const std::size_t N = dst.
size();
179 for (std::size_t i = 0; i < N; ++i)
181 dst[i] = NV_Ith_S(src, i);
188 const std::size_t N = src.
size();
190 for (std::size_t i = 0; i < N; ++i)
192 NV_Ith_S(dst, i) = src[i];
199 const std::size_t N = dst.
size();
201 for (std::size_t i = 0; i < N; ++i)
203 dst[i] = NV_Ith_S(src, i);
210 const std::size_t N = src.
size();
212 for (std::size_t i = 0; i < N; ++i)
214 NV_Ith_S(dst, i) = src[i];
219 DEAL_II_NAMESPACE_CLOSE