Alien  1.3.0
Developer documentation
Loading...
Searching...
No Matches
MatrixData.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2025 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#pragma once
8
9#include <memory>
10
11#include <arccore/base/String.h>
12
13#include <alien/data/IMatrix.h>
14
15#include <alien/move/AlienMoveSemanticPrecomp.h>
16#include <arccore/message_passing/MessagePassingGlobal.h>
17
18/*---------------------------------------------------------------------------*/
19/*---------------------------------------------------------------------------*/
20
21namespace Alien
22{
23
24/*---------------------------------------------------------------------------*/
25/*---------------------------------------------------------------------------*/
26
27class Block;
28class VBlock;
29class Space;
31
32/*---------------------------------------------------------------------------*/
33/*---------------------------------------------------------------------------*/
34
35namespace Move
36{
37
39 class ALIEN_MOVESEMANTIC_EXPORT MatrixData : public IMatrix
40 {
41 public:
42 typedef Real ValueType;
43
51 MatrixData();
52
59 [[deprecated]] MatrixData(const Space& space, const MatrixDistribution& dist);
60
68 [[deprecated]] MatrixData(
69 const Space& row_space, const Space& col_space, const MatrixDistribution& dist);
70
79 [[deprecated]] MatrixData(Integer size, const MatrixDistribution& dist);
80
90 [[deprecated]] MatrixData(Integer row_size, Integer col_size, const MatrixDistribution& dist);
91
97 explicit MatrixData(const MatrixDistribution& dist);
98
103 MatrixData(MatrixData&& matrix);
105
109 virtual ~MatrixData() = default;
110
117
123 void init(const Space& space, const MatrixDistribution& dist);
124
126 MatrixData(const MatrixData&) = delete;
128 void operator=(const MatrixData&) = delete;
129
130 MatrixData clone() const;
131
134
135 void setBlockInfos(const Integer block_size);
136
137 void setBlockInfos(const Block* block);
138
139 void setBlockInfos(const VBlock* block);
140
141 Block const* block() const;
142
143 VBlock const* vblock() const;
145
147 void free();
148
153 void clear();
154
156 void visit(ICopyOnWriteMatrix&) const;
157
166 const ISpace& rowSpace() const;
167
173 const ISpace& colSpace() const;
175
180 const MatrixDistribution& distribution() const;
181
186 void lock() {}
187
189 void unlock() {}
190
195 bool isLocked() const { return false; }
197
205 void setUserFeature(String feature);
206
208 bool hasUserFeature(String feature) const;
209
211 bool isTransposed() const { return hasUserFeature("transposed"); }
212
214 bool isComposite() const;
215 /* }@ */
216
222 MultiMatrixImpl* impl();
223
224 const MultiMatrixImpl* impl() const;
226
227 friend MatrixData createMatrixData(std::shared_ptr<MultiMatrixImpl> multi);
228
229 private:
230 std::shared_ptr<MultiMatrixImpl> m_impl;
231 };
232
233 MatrixData ALIEN_MOVESEMANTIC_EXPORT
234 readFromMatrixMarket(Arccore::MessagePassing::IMessagePassingMng* pm, const std::string& filename);
235
236 MatrixData createMatrixData(std::shared_ptr<MultiMatrixImpl> multi);
237} // namespace Move
238/*---------------------------------------------------------------------------*/
239/*---------------------------------------------------------------------------*/
240
241} // namespace Alien
242
243/*---------------------------------------------------------------------------*/
244/*---------------------------------------------------------------------------*/
IMatrix.h.
Block elements for block matrices.
Definition Block.h:45
IMatrix()
Constructor.
Definition IMatrix.h:54
Interface for algebraic space objects.
Definition ISpace.h:44
Computes a matrix distribution.
Algebraic Matrix with internal multi-representation object.
Definition MatrixData.h:40
Multi matrices representation container.
Implementation of an algebraic space.
Definition Space.h:47
Variable size block elements for block matrices.
Definition VBlock.h:46
void visit(ICopyOnWriteMatrix &) const
MatrixData(const MatrixData &)=delete
void init(const Space &space, const MatrixDistribution &dist)
Definition MatrixData.cc:96
virtual ~MatrixData()=default
}@
MatrixData & operator=(MatrixData &&matrix)
Move from Matrix.
Definition MatrixData.cc:88
void operator=(const MatrixData &)=delete
bool hasUserFeature(String feature) const
bool isTransposed() const
Definition MatrixData.h:211
const MatrixDistribution & distribution() const
const ISpace & rowSpace() const
const ISpace & colSpace() const
-- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature --
Definition BackEnd.h:17