Alien  1.3.0
Developer documentation
Loading...
Searching...
No Matches
Vector.h
1/*
2 * Copyright 2020 IFPEN-CEA
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 *
16 * SPDX-License-Identifier: Apache-2.0
17 */
18
19#pragma once
20
22#include <alien/ref/AlienRefSemanticPrecomp.h>
23
24#include <alien/data/IVector.h>
25#include <alien/data/Space.h>
26
27/*---------------------------------------------------------------------------*/
28/*---------------------------------------------------------------------------*/
29
30namespace Alien
31{
32
33/*---------------------------------------------------------------------------*/
34/*---------------------------------------------------------------------------*/
35
36class ALIEN_REFSEMANTIC_EXPORT Vector final : public IVector
37{
38 public:
39 Vector();
40
41 Vector(const VectorDistribution& dist);
42
43 Vector(Integer nrows, Integer nrows_local, IMessagePassingMng* parallel_mng);
44
45 Vector(Arccore::Integer nrows, IMessagePassingMng* parallel_mng);
46
47 Vector(Vector&& vector);
48
49 ~Vector() {}
50
51 Vector& operator=(Vector&& vector);
52
53 Vector(const Vector&) = delete;
54 Vector& operator=(const Vector&) = delete;
55
56 template <typename E>
57 Vector& operator=(const E&);
58
59 public:
60 // Pour les expressions
61 void visit(ICopyOnWriteVector&) const;
62
63 const VectorDistribution& distribution() const;
64
65 const ISpace& space() const;
66
67 void setUserFeature(String feature);
68
69 bool hasUserFeature(String feature) const;
70
71 public:
73
74 const MultiVectorImpl* impl() const;
75
76 private:
77 std::shared_ptr<MultiVectorImpl> m_impl;
78//#ifdef DEBUG
79 std::string m_name = "UnamedVector";
80
81 public:
82 void setName(std::string name) { m_name = name; }
83 std::string const& name() const { return m_name; }
84//#endif
85};
86
87/*---------------------------------------------------------------------------*/
88/*---------------------------------------------------------------------------*/
89
90} // namespace Alien
91
92/*---------------------------------------------------------------------------*/
93/*---------------------------------------------------------------------------*/
IVector.h.
Space.h.
VectorDistribution.h.
Interface for algebraic space objects.
Definition ISpace.h:44
IVector()
Constructor.
Definition IVector.h:54
Computes a vector distribution.
void visit(ICopyOnWriteVector &) const
Visit method.
Definition Vector.cc:76
const ISpace & space() const
Get the space associated to the vector.
Definition Vector.cc:84
MultiVectorImpl * impl()
Get the multivector implementation.
Definition Vector.cc:114
-- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature --
Definition BackEnd.h:17