Jet  v1.3.3
fdm_mg_solver2.h
Go to the documentation of this file.
1 // Copyright (c) 2018 Doyub Kim
2 //
3 // I am making my contributions/submissions to this project solely in my
4 // personal capacity and am not conveying any rights to any intellectual
5 // property of any third parties.
6 
7 #ifndef INCLUDE_JET_FDM_MG_SOLVER2_H_
8 #define INCLUDE_JET_FDM_MG_SOLVER2_H_
9 
12 #include <jet/mg.h>
13 
14 namespace jet {
15 
18  public:
19  FdmMgSolver2() = default;
20 
21  virtual ~FdmMgSolver2() = default;
22 
24  FdmMgSolver2(size_t maxNumberOfLevels,
25  unsigned int numberOfRestrictionIter = 5,
26  unsigned int numberOfCorrectionIter = 5,
27  unsigned int numberOfCoarsestIter = 20,
28  unsigned int numberOfFinalIter = 20,
29  double maxTolerance = 1e-9, double sorFactor = 1.5,
30  bool useRedBlackOrdering = false);
31 
34 
36  double sorFactor() const;
37 
39  bool useRedBlackOrdering() const;
40 
42  bool solve(FdmLinearSystem2* system) final;
43 
45  virtual bool solve(FdmMgLinearSystem2* system);
46 
47  private:
48  MgParameters<FdmBlas2> _mgParams;
49  double _sorFactor;
50  bool _useRedBlackOrdering;
51 };
52 
54 typedef std::shared_ptr<FdmMgSolver2> FdmMgSolver2Ptr;
55 
56 } // namespace jet
57 
58 #endif // INCLUDE_JET_FDM_MG_SOLVER2_H_
jet::FdmMgSolver2::useRedBlackOrdering
bool useRedBlackOrdering() const
Returns true if red-black ordering is enabled.
jet::FdmMgLinearSystem2
Multigrid-syle 2-D linear system.
Definition: fdm_mg_linear_system2.h:23
jet::FdmMgSolver2::~FdmMgSolver2
virtual ~FdmMgSolver2()=default
jet::FdmLinearSystem2
Linear system (Ax=b) for 2-D finite differencing.
Definition: fdm_linear_system2.h:36
jet::FdmMgSolver2::params
const MgParameters< FdmBlas2 > & params() const
Returns the Multigrid parameters.
jet::FdmMgSolver2::FdmMgSolver2
FdmMgSolver2(size_t maxNumberOfLevels, unsigned int numberOfRestrictionIter=5, unsigned int numberOfCorrectionIter=5, unsigned int numberOfCoarsestIter=20, unsigned int numberOfFinalIter=20, double maxTolerance=1e-9, double sorFactor=1.5, bool useRedBlackOrdering=false)
Constructs the solver with given parameters.
fdm_mg_linear_system2.h
mg.h
jet::FdmMgSolver2::solve
virtual bool solve(FdmMgLinearSystem2 *system)
Solves Multigrid linear system.
jet
Definition: advection_solver2.h:18
jet::FdmMgSolver2::solve
bool solve(FdmLinearSystem2 *system) final
No-op. Multigrid-type solvers do not solve FdmLinearSystem2.
jet::FdmMgSolver2::FdmMgSolver2
FdmMgSolver2()=default
jet::FdmMgSolver2::sorFactor
double sorFactor() const
Returns the SOR (Successive Over Relaxation) factor.
jet::FdmMgSolver2
2-D finite difference-type linear system solver using Multigrid.
Definition: fdm_mg_solver2.h:17
jet::MgParameters
Multigrid input parameter set.
Definition: mg.h:59
jet::FdmLinearSystemSolver2
Abstract base class for 2-D finite difference-type linear system solver.
Definition: fdm_linear_system_solver2.h:17
fdm_linear_system_solver2.h
jet::FdmMgSolver2Ptr
std::shared_ptr< FdmMgSolver2 > FdmMgSolver2Ptr
Shared pointer type for the FdmMgSolver2.
Definition: fdm_mg_solver2.h:54