Alien  1.3.0
Developer documentation
Loading...
Searching...
No Matches
VBlockMatrix.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
21#include <memory>
22
24#include <alien/data/IMatrix.h>
25#include <alien/data/Space.h>
27#include <alien/ref/AlienRefSemanticPrecomp.h>
28
29/*---------------------------------------------------------------------------*/
30/*---------------------------------------------------------------------------*/
31
32namespace Alien
33{
34
35/*---------------------------------------------------------------------------*/
36/*---------------------------------------------------------------------------*/
37
38class ALIEN_REFSEMANTIC_EXPORT VBlockMatrix final : public IMatrix
39{
40 public:
41 VBlockMatrix();
42
43 VBlockMatrix(const VBlock& block, const MatrixDistribution& dist);
44
45 VBlockMatrix(
46 const VBlock& row_block, const VBlock& col_block, const MatrixDistribution& dist);
47
48 VBlockMatrix(Integer nrows, Integer ncols, Integer nrows_local, const VBlock& row_block,
49 const VBlock& col_block, IMessagePassingMng* parallel_mng);
50
51 VBlockMatrix(Integer nrows, Integer ncols, const VBlock& row_block,
52 const VBlock& col_block, IMessagePassingMng* parallel_mng);
53
54 VBlockMatrix(VBlockMatrix&& m);
55
56 ~VBlockMatrix() {}
57
58 VBlockMatrix& operator=(VBlockMatrix&& m);
59
60 VBlockMatrix(const VBlockMatrix&) = delete;
61 VBlockMatrix& operator=(const VBlockMatrix&) = delete;
62
63 public:
64 void init(const VBlock& block, const MatrixDistribution& dist);
65
66 void free();
67
68 void clear();
69
70 // Pour les expressions
71 void visit(ICopyOnWriteMatrix&) const;
72
73 const MatrixDistribution& distribution() const;
74
75 const ISpace& rowSpace() const;
76
77 const ISpace& colSpace() const;
78
79 void setUserFeature(String feature);
80
81 bool hasUserFeature(String feature) const;
82
83 const VBlock& vblock() const;
84 const VBlock& rowBlock() const;
85 const VBlock& colBlock() const;
86
87 public:
89
90 const MultiMatrixImpl* impl() const;
91
92 private:
93 std::shared_ptr<MultiMatrixImpl> m_impl;
94};
95
96/*---------------------------------------------------------------------------*/
97/*---------------------------------------------------------------------------*/
98
99} // namespace Alien
100
101/*---------------------------------------------------------------------------*/
102/*---------------------------------------------------------------------------*/
IMatrix.h.
MatrixDistribution.h.
Space.h.
VBlock.h.
IMatrix()
Constructor.
Definition IMatrix.h:54
Interface for algebraic space objects.
Definition ISpace.h:44
Computes a matrix distribution.
Multi matrices representation container.
void visit(ICopyOnWriteMatrix &) const
Visit method.
MultiMatrixImpl * impl()
Get the multimatrix implementation.
const ISpace & colSpace() const
Get col space associated to the matrix.
const ISpace & rowSpace() const
Get row space associated to the matrix.
Variable size block elements for block matrices.
Definition VBlock.h:46
-- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature --
Definition BackEnd.h:17