Chi-Tech
lbs_groupset.h
Go to the documentation of this file.
1#ifndef LBS_GROUPSET_H
2#define LBS_GROUPSET_H
3
4#include "ChiObject.h"
5
6#include "lbs_group.h"
8
12
14
16
18
20
21#include "utils/chi_utils.h"
22
23namespace lbs::acceleration
24{
25 class DiffusionMIPSolver;
26}
27
28namespace lbs
29{
30
31class LBSSolver;
32
33//################################################################### Class def
34/**Group set functioning as a collection of groups*/
35class LBSGroupset : public ChiObject
36{
37protected:
38 typedef std::shared_ptr<chi_mesh::sweep_management::AngleAggregation> AngleAggPtr;
39public:
40 int id_;
41 std::vector<LBSGroup> groups_;
42 std::shared_ptr<chi_math::AngularQuadrature> quadrature_ = nullptr;
46
49
50 std::vector<chi::SubSetInfo> grp_subset_infos_;
51
54 double residual_tolerance_ = 1.0e-6;
55 int max_iterations_ = 200;
57
58 bool allow_cycles_ = false;
59 bool log_sweep_events_ = false;
60
61 bool apply_wgdsa_ = false;
62 bool apply_tgdsa_ = false;
65 double wgdsa_tol_ = 1.0e-4;
66 double tgdsa_tol_ = 1.0e-4;
67 bool wgdsa_verbose_ = false;
68 bool tgdsa_verbose_ = false;
69 std::string wgdsa_string_;
70 std::string tgdsa_string_;
71
72 std::shared_ptr<lbs::acceleration::DiffusionMIPSolver> wgdsa_solver_;
73 std::shared_ptr<lbs::acceleration::DiffusionMIPSolver> tgdsa_solver_;
74
76 {
77 std::map<int, acceleration::TwoGridCollapsedInfo> map_mat_id_2_tginfo;
81
82
84
85 //lbs_groupset.cc
87 explicit LBSGroupset(const chi::InputParameters& params,
88 int id,
89 const LBSSolver& lbs_solver);
91 explicit LBSGroupset(int id) : id_(id) {}
92
93 void BuildDiscMomOperator(unsigned int scattering_order,
94 GeometryType geometry_type);
95 void BuildMomDiscOperator(unsigned int scattering_order,
96 GeometryType geometry_type);
97 void BuildSubsets();
98public:
99 void PrintSweepInfoFile(size_t ev_tag,const std::string& file_name);
100};
101}
102
103
104
105
106#endif
std::shared_ptr< lbs::acceleration::DiffusionMIPSolver > wgdsa_solver_
Definition: lbs_groupset.h:72
UniqueSOGroupings unique_so_groupings_
Definition: lbs_groupset.h:44
double residual_tolerance_
Definition: lbs_groupset.h:54
AngleAggregationType angleagg_method_
Definition: lbs_groupset.h:53
std::string wgdsa_string_
Definition: lbs_groupset.h:69
void PrintSweepInfoFile(size_t ev_tag, const std::string &file_name)
int master_num_ang_subsets_
Definition: lbs_groupset.h:48
void BuildDiscMomOperator(unsigned int scattering_order, GeometryType geometry_type)
AngleAggPtr angle_agg_
Definition: lbs_groupset.h:43
std::vector< chi::SubSetInfo > grp_subset_infos_
Definition: lbs_groupset.h:50
std::shared_ptr< chi_math::AngularQuadrature > quadrature_
Definition: lbs_groupset.h:42
void BuildMomDiscOperator(unsigned int scattering_order, GeometryType geometry_type)
static chi::InputParameters GetInputParameters()
Definition: lbs_groupset.cc:20
LBSGroupset(int id)
Definition: lbs_groupset.h:91
DirIDToSOMap dir_id_to_so_map_
Definition: lbs_groupset.h:45
int master_num_grp_subsets_
Definition: lbs_groupset.h:47
chi_math::UnknownManager psi_uk_man_
Definition: lbs_groupset.h:83
struct lbs::LBSGroupset::TwoGridAccelerationInfo tg_acceleration_info_
std::shared_ptr< chi_mesh::sweep_management::AngleAggregation > AngleAggPtr
Definition: lbs_groupset.h:38
std::shared_ptr< lbs::acceleration::DiffusionMIPSolver > tgdsa_solver_
Definition: lbs_groupset.h:73
std::vector< LBSGroup > groups_
Definition: lbs_groupset.h:41
std::string tgdsa_string_
Definition: lbs_groupset.h:70
IterativeMethod iterative_method_
Definition: lbs_groupset.h:52
@ JFULL
Jacobi with full conv. of within-group scattering.
AngleAggregationType
Definition: lbs_structs.h:65
@ CLASSICRICHARDSON
Otherwise known as Source Iteration.
std::map< size_t, size_t > DirIDToSOMap
Definition: lbs_structs.h:16
std::vector< DirIDs > UniqueSOGroupings
Definition: lbs_structs.h:15
GeometryType
Definition: lbs_structs.h:34
acceleration::EnergyCollapseScheme scheme
Definition: lbs_groupset.h:78
std::map< int, acceleration::TwoGridCollapsedInfo > map_mat_id_2_tginfo
Definition: lbs_groupset.h:77