Arcane  v4.1.10.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
DistributedSolver.h
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/*---------------------------------------------------------------------------*/
8/* DistributedSolver.h (C) 2000-2026 */
9/* */
10/* Adapters to handle distribution other standard solvers. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCCORE_ALINA_MPI_DISTRIBUTEDSOLVER_H
13#define ARCCORE_ALINA_MPI_DISTRIBUTEDSOLVER_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16/*
17 * This file is based on the work on AMGCL library (version march 2026)
18 * which can be found at https://github.com/ddemidov/amgcl.
19 *
20 * Copyright (c) 2012-2022 Denis Demidov <dennis.demidov@gmail.com>
21 * SPDX-License-Identifier: MIT
22 */
23/*---------------------------------------------------------------------------*/
24/*---------------------------------------------------------------------------*/
25
26#include "arccore/alina/ConjugateGradientSolver.h"
27#include "arccore/alina/BiCGStabSolver.h"
28#include "arccore/alina/BiCGStabLSolver.h"
29#include "arccore/alina/FlexibleGMRESSolver.h"
30#include "arccore/alina/GMRESSolver.h"
31#include "arccore/alina/IDRSSolver.h"
32#include "arccore/alina/LooseGMRESSolver.h"
33#include "arccore/alina/PreconditionerOnlySolver.h"
34#include "arccore/alina/RichardsonSolver.h"
35#include "arccore/alina/DistributedInnerProduct.h"
36
37/*---------------------------------------------------------------------------*/
38/*---------------------------------------------------------------------------*/
39
40namespace Arcane::Alina
41{
42
43/*---------------------------------------------------------------------------*/
44/*---------------------------------------------------------------------------*/
45
46template <class Backend, class InnerProduct = DistributedInnerProduct>
48: public ConjugateGradientSolver<Backend, InnerProduct>
49{
51
52 public:
53
54 using Base::Base;
55};
56
57/*---------------------------------------------------------------------------*/
58/*---------------------------------------------------------------------------*/
59
60template <class Backend, class InnerProduct = DistributedInnerProduct>
62: public BiCGStabSolver<Backend, InnerProduct>
63{
65
66 public:
67
68 using Base::Base;
69};
70
71/*---------------------------------------------------------------------------*/
72/*---------------------------------------------------------------------------*/
73
74template <class Backend, class InnerProduct = DistributedInnerProduct>
76: public BiCGStabLSolver<Backend, InnerProduct>
77{
79
80 public:
81
82 using Base::Base;
83};
84
85/*---------------------------------------------------------------------------*/
86/*---------------------------------------------------------------------------*/
87
88template <class Backend, class InnerProduct = DistributedInnerProduct>
90: public FlexibleGMRESSolver<Backend, InnerProduct>
91{
93
94 public:
95
96 using Base::Base;
97};
98
99/*---------------------------------------------------------------------------*/
100/*---------------------------------------------------------------------------*/
101
102template <class Backend, class InnerProduct = DistributedInnerProduct>
104: public GMRESSolver<Backend, InnerProduct>
105{
107
108 public:
109
110 using Base::Base;
111};
112
113/*---------------------------------------------------------------------------*/
114/*---------------------------------------------------------------------------*/
115
116template <class Backend, class InnerProduct = DistributedInnerProduct>
118: public IDRSSolver<Backend, InnerProduct>
119{
121
122 public:
123
124 using Base::Base;
125};
126
127/*---------------------------------------------------------------------------*/
128/*---------------------------------------------------------------------------*/
129
130template <class Backend, class InnerProduct = DistributedInnerProduct>
132: public LooseGMRESSolver<Backend, InnerProduct>
133{
135
136 public:
137
138 using Base::Base;
139};
140
141/*---------------------------------------------------------------------------*/
142/*---------------------------------------------------------------------------*/
143
144template <class Backend, class InnerProduct = DistributedInnerProduct>
146: public PreconditionerOnlySolver<Backend, InnerProduct>
147{
149
150 public:
151
152 using Base::Base;
153};
154
155/*---------------------------------------------------------------------------*/
156/*---------------------------------------------------------------------------*/
157
158template <class Backend, class InnerProduct = DistributedInnerProduct>
160: public RichardsonSolver<Backend, InnerProduct>
161{
163
164 public:
165
166 using Base::Base;
167};
168
169/*---------------------------------------------------------------------------*/
170/*---------------------------------------------------------------------------*/
171
172} // namespace Arcane::Alina
173
174/*---------------------------------------------------------------------------*/
175/*---------------------------------------------------------------------------*/
176
177#endif
178
179/*---------------------------------------------------------------------------*/
180/*---------------------------------------------------------------------------*/
BiCGStabLSolver(size_t n, const params &prm=params(), const backend_params &backend_prm=backend_params(), const DistributedInnerProduct &inner_product=DistributedInnerProduct())
BiCGStabSolver(size_t n, const params &prm=params(), const backend_params &backend_prm=backend_params(), const DistributedInnerProduct &inner_product=DistributedInnerProduct())
ConjugateGradientSolver(size_t n, const params &prm=params(), const backend_params &backend_prm=backend_params(), const DistributedInnerProduct &inner_product=DistributedInnerProduct())
FlexibleGMRESSolver(size_t n, const params &prm=params(), const backend_params &bprm=backend_params(), const DistributedInnerProduct &inner_product=DistributedInnerProduct())
GMRESSolver(size_t n, const params &prm=params(), const backend_params &backend_prm=backend_params(), const DistributedInnerProduct &inner_product=DistributedInnerProduct())
IDRSSolver(size_t n, const params &prm=params(), const backend_params &bprm=backend_params(), const DistributedInnerProduct &inner_product=DistributedInnerProduct())
Definition IDRSSolver.h:158
LooseGMRESSolver(size_t n, const params &prm=params(), const backend_params &bprm=backend_params(), const DistributedInnerProduct &inner_product=DistributedInnerProduct())
PreconditionerOnlySolver(size_t n, const params &=params(), const backend_params &=backend_params(), const DistributedInnerProduct &inner_product=DistributedInnerProduct())
RichardsonSolver(size_t n, const params &prm=params(), const backend_params &backend_prm=backend_params(), const DistributedInnerProduct &inner_product=DistributedInnerProduct())