Chi-Tech
AAH_FLUDS.h
Go to the documentation of this file.
1#ifndef AUX_FLUDS_h
2#define AUX_FLUDS_h
3
4#include "FLUDS.h"
6
8{
9
10// ########################################################################
11/**Implementation of the Adams-Adams-Hawkins Flux data structure.*/
12class AAH_FLUDS : public FLUDS
13{
14public:
15 AAH_FLUDS(size_t num_groups,
16 size_t num_angles,
17 const AAH_FLUDSCommonData& common_data);
18
19private:
21
22 // local_psi_n_block_stride[fc]. Given face category fc, the value is
23 // total number of faces that store information in this category's buffer
24 // per angle
25 std::vector<size_t> local_psi_Gn_block_strideG; // Custom G
26
28
29 std::vector<std::vector<double>> local_psi_;
30 std::vector<double> delayed_local_psi_;
31 std::vector<double> delayed_local_psi_old_;
32 std::vector<std::vector<double>> deplocI_outgoing_psi_;
33 std::vector<std::vector<double>> prelocI_outgoing_psi_;
34 std::vector<std::vector<double>> boundryI_incoming_psi_;
35
36 std::vector<std::vector<double>> delayed_prelocI_outgoing_psi_;
37 std::vector<std::vector<double>> delayed_prelocI_outgoing_psi_old_;
38
39public:
40 double* OutgoingPsi(int cell_so_index,
41 int outb_face_counter,
42 int face_dof,
43 int n);
44 double* UpwindPsi(int cell_so_index,
45 int inc_face_counter,
46 int face_dof,
47 int g,
48 int n);
49
50 double* NLOutgoingPsi(int outb_face_count, int face_dof, int n);
51
52 double*
53 NLUpwindPsi(int nonl_inc_face_counter, int face_dof, int g, int n);
54
55 size_t GetPrelocIFaceDOFCount(int prelocI) const;
56 size_t GetDelayedPrelocIFaceDOFCount(int prelocI) const;
57 size_t GetDeplocIFaceDOFCount(int deplocI) const;
58
59 void ClearLocalAndReceivePsi() override;
60 void ClearSendPsi() override;
61 void AllocateInternalLocalPsi(size_t num_grps, size_t num_angles) override;
62 void AllocateOutgoingPsi(size_t num_grps,
63 size_t num_angles,
64 size_t num_loc_sucs) override;
65
66 void AllocateDelayedLocalPsi(size_t num_grps, size_t num_angles) override;
67 void AllocatePrelocIOutgoingPsi(size_t num_grps,
68 size_t num_angles,
69 size_t num_loc_deps) override;
70 void AllocateDelayedPrelocIOutgoingPsi(size_t num_grps,
71 size_t num_angles,
72 size_t num_loc_deps) override;
73
74 std::vector<double>& DelayedLocalPsi() override;
75 std::vector<double>& DelayedLocalPsiOld() override;
76
77 std::vector<std::vector<double>>& DeplocIOutgoingPsi() override;
78
79 std::vector<std::vector<double>>& PrelocIOutgoingPsi() override;
80
81 std::vector<std::vector<double>>& DelayedPrelocIOutgoingPsi() override;
82 std::vector<std::vector<double>>& DelayedPrelocIOutgoingPsiOld() override;
83};
84
85} // namespace chi_mesh::sweep_management
86
87#endif
double * NLOutgoingPsi(int outb_face_count, int face_dof, int n)
Definition: AAH_FLUDS.cc:70
const AAH_FLUDSCommonData & common_data_
Definition: AAH_FLUDS.h:20
std::vector< std::vector< double > > deplocI_outgoing_psi_
Definition: AAH_FLUDS.h:32
void AllocateDelayedPrelocIOutgoingPsi(size_t num_grps, size_t num_angles, size_t num_loc_deps) override
Definition: AAH_FLUDS.cc:278
std::vector< std::vector< double > > prelocI_outgoing_psi_
Definition: AAH_FLUDS.h:33
void AllocateDelayedLocalPsi(size_t num_grps, size_t num_angles) override
Definition: AAH_FLUDS.cc:252
void AllocatePrelocIOutgoingPsi(size_t num_grps, size_t num_angles, size_t num_loc_deps) override
Definition: AAH_FLUDS.cc:265
std::vector< std::vector< double > > boundryI_incoming_psi_
Definition: AAH_FLUDS.h:34
std::vector< double > & DelayedLocalPsiOld() override
Definition: AAH_FLUDS.cc:301
std::vector< double > delayed_local_psi_
Definition: AAH_FLUDS.h:30
std::vector< std::vector< double > > delayed_prelocI_outgoing_psi_old_
Definition: AAH_FLUDS.h:37
size_t GetDelayedPrelocIFaceDOFCount(int prelocI) const
Definition: AAH_FLUDS.cc:206
std::vector< std::vector< double > > & DelayedPrelocIOutgoingPsiOld() override
Definition: AAH_FLUDS.cc:320
std::vector< std::vector< double > > & DelayedPrelocIOutgoingPsi() override
Definition: AAH_FLUDS.cc:316
double * OutgoingPsi(int cell_so_index, int outb_face_counter, int face_dof, int n)
Definition: AAH_FLUDS.cc:34
double * UpwindPsi(int cell_so_index, int inc_face_counter, int face_dof, int g, int n)
Definition: AAH_FLUDS.cc:107
std::vector< size_t > local_psi_Gn_block_strideG
Definition: AAH_FLUDS.h:25
AAH_FLUDS(size_t num_groups, size_t num_angles, const AAH_FLUDSCommonData &common_data)
Definition: AAH_FLUDS.cc:15
void AllocateOutgoingPsi(size_t num_grps, size_t num_angles, size_t num_loc_sucs) override
Definition: AAH_FLUDS.cc:239
std::vector< double > & DelayedLocalPsi() override
Definition: AAH_FLUDS.cc:299
size_t GetDeplocIFaceDOFCount(int deplocI) const
Definition: AAH_FLUDS.cc:210
std::vector< std::vector< double > > local_psi_
Definition: AAH_FLUDS.h:29
std::vector< std::vector< double > > delayed_prelocI_outgoing_psi_
Definition: AAH_FLUDS.h:36
std::vector< std::vector< double > > & PrelocIOutgoingPsi() override
Definition: AAH_FLUDS.cc:311
void AllocateInternalLocalPsi(size_t num_grps, size_t num_angles) override
Definition: AAH_FLUDS.cc:226
size_t GetPrelocIFaceDOFCount(int prelocI) const
Definition: AAH_FLUDS.cc:202
std::vector< double > delayed_local_psi_old_
Definition: AAH_FLUDS.h:31
double * NLUpwindPsi(int nonl_inc_face_counter, int face_dof, int g, int n)
Definition: AAH_FLUDS.cc:153
std::vector< std::vector< double > > & DeplocIOutgoingPsi() override
Definition: AAH_FLUDS.cc:306