Loading [MathJax]/extensions/tex2jax.js
OGS
LinearSolverLibrarySetup.h
Go to the documentation of this file.
1
11#pragma once
12
21
22#include "BaseLib/MPI.h"
24
25#if defined(USE_PETSC)
26#include <mpi.h>
27#include <petsc.h>
28
29#include "BaseLib/MPI.h"
30
32{
34{
35 LinearSolverLibrarySetup(int argc, char* argv[])
36 {
37 char help[] = "ogs6 with PETSc \n";
38 PETSC_COMM_WORLD = BaseLib::MPI::OGS_COMM_WORLD;
39 PetscInitialize(&argc, &argv, nullptr, help);
40 MPI_Comm_set_errhandler(PETSC_COMM_WORLD, MPI_ERRORS_RETURN);
41 }
42
48};
49} // ApplicationsLib
50#elif defined(USE_LIS)
51#include <lis.h>
52namespace ApplicationsLib
53{
54struct LinearSolverLibrarySetup final
55{
56 LinearSolverLibrarySetup(int argc, char* argv[])
57 {
58 lis_initialize(&argc, &argv);
59 }
60
62 {
64 lis_finalize();
65 }
66};
67} // ApplicationsLib
68#else
69namespace ApplicationsLib
70{
71struct LinearSolverLibrarySetup final
72{
73 LinearSolverLibrarySetup(int /*argc*/, char* /*argv*/[])
74 {
75#ifdef _OPENMP
76 const char* omp_num_threads_env = std::getenv("OMP_NUM_THREADS");
77 if (omp_num_threads_env)
78 {
79 INFO("OMP_NUM_THREADS is set to: {:s}", omp_num_threads_env);
80 }
81 else
82 {
83 WARN("OMP_NUM_THREADS is not set, falling back to: {:d}",
84 omp_get_max_threads());
85 }
86#endif
87 INFO("Eigen use {:d} threads", Eigen::nbThreads());
88 }
90 {
92 }
93};
94} // namespace ApplicationsLib
95#endif
void INFO(fmt::format_string< Args... > fmt, Args &&... args)
Definition Logging.h:35
void WARN(fmt::format_string< Args... > fmt, Args &&... args)
Definition Logging.h:40
MPI_Comm OGS_COMM_WORLD
Definition MPI.cpp:15
void cleanupGlobalMatrixProviders()