29#include <alien/core/backend/BackEnd.h>
36#include <alien/utils/Precomp.h>
37#include <alien/utils/UserFeatureMng.h>
38#include <alien/utils/time_stamp/TimestampMng.h>
50,
public UserFeatureMng
51,
public ObjectWithTrace
78 std::shared_ptr<ISpace>
space, std::shared_ptr<VectorDistribution> dist);
137 const Block* block()
const;
144 const VBlock* vblock()
const;
161 template <
typename tag>
173 template <
typename tag>
177 template <
typename tag>
178 void release()
const;
186 template <
typename vector_type>
201 template <
typename vector_type>
202 void insert(
const BackEndId& backend,
vector_type* v);
206 std::shared_ptr<ISpace> m_space;
208 std::shared_ptr<VectorDistribution> m_distribution;
210 typedef std::map<BackEndId, IVectorImpl*> MultiVectorImplMap;
212 mutable MultiVectorImplMap m_impls2;
214 std::shared_ptr<Block> m_block;
216 std::shared_ptr<VBlock> m_variable_block;
222template <
typename tag>
223const typename AlgebraTraits<tag>::vector_type&
237template <
typename tag>
255template <
typename tag>
259 if (finder == m_impls2.end())
261 delete finder->second, finder->second = NULL;
267template <
typename vector_type>
269MultiVectorImpl::getImpl(BackEndId backend)
const
271 auto inserter = m_impls2.insert(MultiVectorImplMap::value_type(backend, NULL));
275 new_impl->init(*m_distribution.get(),
true);
284template <
typename vector_type>
287 if (m_impls2.find(backend) != m_impls2.end()) {
288 alien_fatal([&] { cout() <<
"try to insert already inserted value"; });
290 m_impls2[backend] = v;
VectorConverterRegisterer.h.
Block elements for block matrices.
Interface for algebraic space objects.
Interface to handle abstract vectors implementation.
virtual BackEndId backend() const
void free()
Free resources.
void insert(const BackEndId &backend, vector_type *v)
Insert a vector implementation in the multi vector container.
void clear()
Clear resources.
const AlgebraTraits< tag >::vector_type & get() const
Get a specific vector implementation.
const VectorDistribution & distribution() const
Get the vector distribution.
void setBlockInfos(Arccore::Integer block_size)
Set uniform block information.
void release() const
Release a vector implementation.
void setBlockInfos(const Block *blocks)
Set uniform block information.
const ISpace & space() const
Get the space associated with the vector.
void updateTimestamp()
Met à jour le timestamp.
Variable size block elements for block matrices.
Computes a vector distribution.
MultiVectorImpl()
Multi vectors representation container.
-- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature --