Alien  1.3.0
Developer documentation
Loading...
Searching...
No Matches
SolverFactory.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2024 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/* SolverFactory (C) 2000-2024 */
9/* */
10/* Factory for Alien solvers */
11/*---------------------------------------------------------------------------*/
12/*---------------------------------------------------------------------------*/
13#pragma once
14
17#include <alien/utils/Precomp.h>
18
19/*---------------------------------------------------------------------------*/
20/*---------------------------------------------------------------------------*/
21
22namespace Alien
23{
24
25/*---------------------------------------------------------------------------*/
26/*---------------------------------------------------------------------------*/
27
28class ALIEN_EXPORT SolverFactory
29{
30 public:
31 static void add_options(
32 BackEndId back_end, ISolverFabric::CmdLineOptionDescType& cmdline_options)
33 {
34 auto* fabric = SolverFabricRegisterer::getSolverFabric(back_end);
35 if (fabric)
36 fabric->add_options(cmdline_options);
37 }
38
39 static ILinearSolver* create(BackEndId back_end,
40 ISolverFabric::CmdLineOptionType const& options, IMessagePassingMng* pm)
41 {
42 auto* fabric = SolverFabricRegisterer::getSolverFabric(back_end);
43 if (fabric)
44 return fabric->create(options, pm);
45 else
46 return nullptr;
47 }
48
49 static ILinearSolver* create(BackEndId back_end,
50 ISolverFabric::JsonOptionType const& options, IMessagePassingMng* pm)
51 {
52 auto* fabric = SolverFabricRegisterer::getSolverFabric(back_end);
53 if (fabric)
54 return fabric->create(options, pm);
55 else
56 return nullptr;
57 }
58};
59
60/*---------------------------------------------------------------------------*/
61/*---------------------------------------------------------------------------*/
62
63} // namespace Alien
64
65/*---------------------------------------------------------------------------*/
66/*---------------------------------------------------------------------------*/
ISolverFabric.h.
SolverFabricRegisterer.h.
Linear solver interface.
static ISolverFabric * getSolverFabric(BackEndId back_end)
Get the fabric from one solver format to another one.
-- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature --
Definition BackEnd.h:17