Alien  1.3.0
Developer documentation
Loading...
Searching...
No Matches
IVectorImpl.h
Go to the documentation of this file.
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2026 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com)
4// See the top-level COPYRIGHT file for details.
5// SPDX-License-Identifier: Apache-2.0
6//-----------------------------------------------------------------------------
7
12
13#pragma once
14
18#include <alien/utils/ObjectWithTrace.h>
19#include <alien/utils/Precomp.h>
20#include <alien/utils/time_stamp/Timestamp.h>
21
22/*---------------------------------------------------------------------------*/
23/*---------------------------------------------------------------------------*/
24
25namespace Alien
26{
27
28typedef Arccore::String BackEndId;
29
30/*---------------------------------------------------------------------------*/
31/*---------------------------------------------------------------------------*/
32
33class MultiVectorImpl;
34class ISpace;
35class Block;
36class VBlock;
37
38/*---------------------------------------------------------------------------*/
39/*---------------------------------------------------------------------------*/
40
45class ALIEN_EXPORT IVectorImpl : public Timestamp
46, public ObjectWithTrace
47{
48 public:
50 typedef Arccore::Real ValueType;
51
52 public:
58 explicit IVectorImpl(const MultiVectorImpl* multi_impl, BackEndId backend = "");
59
61 virtual ~IVectorImpl() override
62 {
63 delete m_vblock_sizes;
64 m_vblock_sizes = nullptr;
65 }
66
67 IVectorImpl(const IVectorImpl& src) = delete;
68 IVectorImpl(IVectorImpl&& src) = delete;
69 IVectorImpl& operator=(const IVectorImpl& src) = delete;
70 IVectorImpl& operator=(IVectorImpl&& src) = delete;
71
72 public:
74 virtual void clear() {}
75
83 virtual void init([[maybe_unused]] const VectorDistribution& dist, [[maybe_unused]] bool do_alloc) {}
84
89 virtual const ISpace& space() const;
90
95 virtual BackEndId backend() const { return m_backend; }
96
101 virtual const VectorDistribution& distribution() const;
102
111 virtual const Block* block() const;
112
121 virtual const VBlock* vblock() const;
122
128 virtual Arccore::Integer scalarizedLocalSize() const;
129
135 virtual Arccore::Integer scalarizedGlobalSize() const;
136
142 virtual Arccore::Integer scalarizedOffset() const;
143
144 const MultiVectorImpl* impls() const {
145 return m_multi_impl;
146 }
147 protected:
151 BackEndId m_backend;
154};
155
156/*---------------------------------------------------------------------------*/
157/*---------------------------------------------------------------------------*/
158
159} // namespace Alien
160
161/*---------------------------------------------------------------------------*/
162/*---------------------------------------------------------------------------*/
Block.h.
VBlockSizes.h.
VectorDistribution.h.
Block elements for block matrices.
Definition Block.h:45
Interface for algebraic space objects.
Definition ISpace.h:44
Interface to handle abstract vectors implementation.
Definition IVectorImpl.h:47
const MultiVectorImpl * m_multi_impl
Pointer on vectors implementations.
virtual void init(const VectorDistribution &dist, bool do_alloc)
Initialize vector datas.
Definition IVectorImpl.h:83
virtual ~IVectorImpl() override
Free resources.
Definition IVectorImpl.h:61
virtual void clear()
Wipe out internal data.
Definition IVectorImpl.h:74
IVectorImpl(const MultiVectorImpl *multi_impl, BackEndId backend="")
Constructor.
BackEndId m_backend
Backend id.
VBlockSizes * m_vblock_sizes
Variable blocks size data.
Arccore::Real ValueType
Type of the values stored in the vectors.
Definition IVectorImpl.h:50
virtual BackEndId backend() const
Definition IVectorImpl.h:95
Compute the actual size of variable block size algebraic elements.
Definition VBlockSizes.h:51
Variable size block elements for block matrices.
Definition VBlock.h:46
Computes a vector distribution.
-- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature --
Definition BackEnd.h:17