/home/runner/work/amr-wind/amr-wind/amr-wind/core/MLMGOptions.H Source File

AMR-Wind API: /home/runner/work/amr-wind/amr-wind/amr-wind/core/MLMGOptions.H Source File
AMR-Wind API v0.1.0
CFD solver for wind plant simulations
Loading...
Searching...
No Matches
MLMGOptions.H
Go to the documentation of this file.
1#ifndef MLMGOPTIONS_H
2#define MLMGOPTIONS_H
3
4#include <string>
5
6#include "AMReX_REAL.H"
7#include "AMReX_ParmParse.H"
8#include "AMReX_MLLinOp.H"
9#include "AMReX_MLMG.H"
10
11using namespace amrex::literals;
12
13namespace Hydro {
14class NodalProjector;
15class MacProjector;
16} // namespace Hydro
17
18namespace amr_wind {
19
27{
32 explicit MLMGOptions(const std::string& prefix);
33
43 const std::string& default_prefix, const std::string& custom_prefix);
44
45 void operator()(amrex::MLMG& /*mlmg*/);
46 void operator()(Hydro::NodalProjector& /*nodal_proj*/);
47 void operator()(Hydro::MacProjector& /*mac_proj*/);
48
50 amrex::LPInfo& lpinfo() { return m_lpinfo; }
51
52 // Linear operator options
53 int max_order{2};
54
55#ifdef BL_USE_FLOAT
57 amrex::Real rel_tol{std::numeric_limits<amrex::Real>::epsilon() * 1.0e2_rt};
58
60 amrex::Real abs_tol{std::numeric_limits<amrex::Real>::epsilon() * 1.0e1_rt};
61#else
63 amrex::Real rel_tol{std::numeric_limits<amrex::Real>::epsilon() * 1.0e5_rt};
64
66 amrex::Real abs_tol{std::numeric_limits<amrex::Real>::epsilon() * 1.0e2_rt};
67#endif
68
69private:
70 void parse_options(const std::string& /*prefix*/);
71
73 amrex::LPInfo m_lpinfo;
74
75 // MLMG options
76
78 std::string m_bottom_solver_type{"bicgstab"};
79
81 std::string m_hypre_namespace{"hypre"};
82
84 std::string m_hypre_interface{"ij"};
85
86#ifdef BL_USE_FLOAT
88 amrex::Real m_bottom_rel_tol{
89 std::numeric_limits<amrex::Real>::epsilon() * 1.0e3_rt};
90
92 amrex::Real m_bottom_abs_tol{
93 std::numeric_limits<amrex::Real>::epsilon() * 1.0e2_rt};
94#else
96 amrex::Real m_bottom_rel_tol{
97 std::numeric_limits<amrex::Real>::epsilon() * 1.0e12_rt};
98
100 amrex::Real m_bottom_abs_tol{
101 std::numeric_limits<amrex::Real>::epsilon() * 1.0e4_rt};
102#endif
103
106 int m_verbose{0};
107 int m_max_iter{200};
113
122
125
129
132 bool m_do_nsolve{false};
133
135#ifdef AMREX_USE_GPU
136 int m_nsolve_grid_size{64};
137#else
139#endif
140};
141
142} // namespace amr_wind
143
144#endif /* MLMGOPTIONS_H */
Definition MLMGOptions.H:13
This test case is intended as an evaluation of the momentum advection scheme.
Definition BCInterface.cpp:10
MLMGOptions(const std::string &prefix)
Definition MLMGOptions.cpp:8
int m_num_post_smooth
Definition MLMGOptions.H:110
bool m_do_fixed_iters
If set to true, AMReX won't abort if linear solver doesn't converge within max iterations.
Definition MLMGOptions.H:128
int m_verbose
Definition MLMGOptions.H:106
void operator()(amrex::MLMG &)
Definition MLMGOptions.cpp:59
std::string m_hypre_interface
Options of hypre interface.
Definition MLMGOptions.H:84
int m_num_bottom_smooth
Definition MLMGOptions.H:112
amrex::Real m_bottom_rel_tol
Relative tolerance for convergence of MLMG solvers.
Definition MLMGOptions.H:96
amrex::LPInfo & lpinfo()
Linear operator options during construction.
Definition MLMGOptions.H:50
int max_order
Definition MLMGOptions.H:53
amrex::Real abs_tol
Absolute tolerance for convergence checks.
Definition MLMGOptions.H:66
amrex::Real m_bottom_abs_tol
Absolute tolerance for convergence checks.
Definition MLMGOptions.H:100
amrex::Real rel_tol
Relative tolerance for convergence of MLMG solvers.
Definition MLMGOptions.H:63
void parse_options(const std::string &)
Definition MLMGOptions.cpp:17
amrex::LPInfo m_lpinfo
Linear operator info object.
Definition MLMGOptions.H:73
int m_max_fmg_iters
Definition MLMGOptions.H:108
int m_bottom_verbose
Definition MLMGOptions.H:121
std::string m_hypre_namespace
Options namespace for hypre solvers.
Definition MLMGOptions.H:81
int m_num_final_smooth
Definition MLMGOptions.H:111
std::string m_bottom_solver_type
Bottom solver type bicgstab, cg, hypre, etc.
Definition MLMGOptions.H:78
int m_num_pre_smooth
Definition MLMGOptions.H:109
bool m_do_nsolve
option to use the nsolve bottom solver added to help with overset masking
Definition MLMGOptions.H:132
int m_bottom_max_iter
Maximum iterations for the bottom solver.
Definition MLMGOptions.H:124
int m_max_iter
Definition MLMGOptions.H:107
int m_nsolve_grid_size
set grid size for nsolve
Definition MLMGOptions.H:138