12#ifndef ARCANE_ALEPH_KERNEL_H
13#define ARCANE_ALEPH_KERNEL_H
17#include "arcane/utils/TraceAccessor.h"
18#include "arcane/utils/Array.h"
19#include "arcane/utils/FatalErrorException.h"
20#include "arcane/utils/Ref.h"
21#include "arcane/utils/CommandLineArguments.h"
23#include "arcane/core/IParallelMng.h"
25#include "arcane/aleph/AlephGlobal.h"
41 Real m_residual_norm[4];
55class AlephKernelSolverInitializeArguments
59 AlephKernelSolverInitializeArguments();
63 bool hasValues()
const {
return m_has_values; }
73 bool m_has_values =
false;
55class AlephKernelSolverInitializeArguments {
…};
80class ARCANE_ALEPH_EXPORT AlephKernelArguments
91 , m_x_vector(x_vector)
92 , m_b_vector(b_vector)
93 , m_tmp_vector(tmp_vector)
94 , m_topology_implementation(topology)
97 ~AlephKernelArguments()
99 debug() <<
"\33[1;5;31m[~AlephKernelArguments]"
80class ARCANE_ALEPH_EXPORT AlephKernelArguments {
…};
120 static constexpr int SOLVER_HYPRE = 2;
121 static constexpr int SOLVER_TRILINOS = 3;
122 static constexpr int SOLVER_CUDA = 4;
123 static constexpr int SOLVER_PETSC = 5;
136 void break_and_return(
void);
140 void workSolver(
void);
149 Integer rank() {
return m_rank; }
150 Integer size() {
return m_size; }
152 bool isParallel() {
return m_isParallel; }
153 bool isInitialized() {
return m_has_been_initialized; }
154 bool thereIsOthers() {
return m_there_are_idles; }
155 bool isAnOther() {
return m_i_am_an_other; }
158 Integer underlyingSolver() {
return m_underlying_solver; }
159 bool isCellOrdering() {
return m_reorder; }
160 Integer index() {
return m_solver_index; }
161 bool configured() {
return m_configured; }
164 Integer nbRanksPerSolver() {
return m_solver_size; }
169 return m_arguments_queue.at(i)->m_topology_implementation;
184 bool m_there_are_idles;
185 bool m_i_am_an_other;
191 bool m_configured =
false;
197 const Integer m_underlying_solver;
198 const bool m_reorder;
202 bool m_has_been_initialized;
Informations pour initialiser le solveur linéaire utilisé.
AlephKernel(IParallelMng *, Integer, IAlephFactory *, Integer=0, Integer=0, bool=false)
AlephVector * createSolverVector(void)
AlephVector * syncSolver(Integer, Integer &, Real *)
void mapranks(Array< Integer > &)
Matrice d'un système linéaire.
Gestionnaire de reordering.
Paramètres d'un système linéraire.
Informations sur l'environnement parallèle.
Vecteur d'un système linéaire.
Vue modifiable d'un tableau d'un type T.
Tableau d'items de types quelconques.
Arguments de la ligne de commande.
Interface du gestionnaire de parallélisme pour un sous-domaine.
Interface du gestionnaire d'un sous-domaine.
Interface du gestionnaire de traces.
Référence à une instance.
TraceAccessor(ITraceMng *m)
Construit un accesseur via le gestionnaire de trace m.
TraceMessageDbg debug(Trace::eDebugLevel=Trace::Medium) const
Flot pour un message de debug.
Vecteur 1D de données avec sémantique par valeur (style STL).
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
Int32 Integer
Type représentant un entier.
double Real
Type représentant un réel.