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;
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]"
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;
Information to initialize the linear solver used.
AlephKernel(IParallelMng *, Integer, IAlephFactory *, Integer=0, Integer=0, bool=false)
AlephVector * createSolverVector(void)
AlephVector * syncSolver(Integer, Integer &, Real *)
void mapranks(Array< Integer > &)
Matrix of a linear system.
Parameters of a linear system.
Information about the parallel environment.
Vector of a linear system.
Modifiable view of an array of type T.
Base class for 1D data vectors.
Interface of the parallelism manager for a subdomain.
Interface of the subdomain manager.
Reference to an instance.
TraceAccessor(ITraceMng *m)
Constructs an accessor via the trace manager m.
TraceMessageDbg debug(Trace::eDebugLevel=Trace::Medium) const
Flow for a debug message.
1D data vector with value semantics (STL style).
-- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature --
Int32 Integer
Type representing an integer.
double Real
Type representing a real number.