Chi-Tech
CBC_SweepChunk.h
Go to the documentation of this file.
1#ifndef CHITECH_CBC_SWEEPCHUNK_H
2#define CHITECH_CBC_SWEEPCHUNK_H
3
4#include "SweepChunk.h"
5
6namespace lbs
7{
8
9class CBC_FLUDS;
10class CBC_ASynchronousCommunicator;
11
13{
14 CBC_FLUDS* fluds_ = nullptr;
16
17 /**Upwind angular flux*/
18 const std::vector<double>* psi_upwnd_data_block_ = nullptr;
19 const double* psi_local_face_upwnd_data_ = nullptr;
20 /**Downwind angular flux*/
21 std::vector<double>* psi_dnwnd_data_ = nullptr;
22
25
27
28 // Set using SetupIncomingFace
30 nullptr;
31
32 const double* GetUpwindPsi(int face_node_local_idx) const override;
33 double* GetDownwindPsi(int face_node_local_idx) const override;
34 void SetupIncomingFace(int face_id,
35 size_t num_face_nodes,
36 uint64_t neighbor_id,
37 bool on_local_face,
38 bool on_boundary) override;
39 void SetupOutgoingFace(int face_id,
40 size_t num_face_nodes,
41 uint64_t neighbor_id,
42 bool on_local_face,
43 bool on_boundary,
44 int locality) override;
45};
46
48{
49public:
50 CBC_SweepChunk(std::vector<double>& destination_phi,
51 std::vector<double>& destination_psi,
52 const chi_mesh::MeshContinuum& grid,
53 const chi_math::SpatialDiscretization& discretization,
54 const std::vector<UnitCellMatrices>& unit_cell_matrices,
55 std::vector<lbs::CellLBSView>& cell_transport_views,
56 const std::vector<double>& source_moments,
57 const LBSGroupset& groupset,
58 const std::map<int, XSPtr>& xs,
59 int num_moments,
60 int max_num_cell_dofs);
61
62 void SetAngleSet(chi_mesh::sweep_management::AngleSet& angle_set) override;
63
64 void SetCell(chi_mesh::Cell const* cell_ptr,
65 chi_mesh::sweep_management::AngleSet& angle_set) override;
66
67 void SetCells(const std::vector<const chi_mesh::Cell*>& cell_ptrs) override;
68
69 void Sweep(chi_mesh::sweep_management::AngleSet& angle_set) override;
70
71protected:
73 chi_mesh::Cell const* cell_ptr_ = nullptr;
74 uint64_t cell_local_id_ = 0;
75
76 std::vector<const chi_mesh::Cell*> cell_ptrs_;
77};
78
79} // namespace lbs
80
81#endif // CHITECH_CBC_SWEEPCHUNK_H
std::vector< double > * destination_psi
std::vector< double > * destination_phi
void SetAngleSet(chi_mesh::sweep_management::AngleSet &angle_set) override
chi_mesh::Cell const * cell_ptr_
void SetCells(const std::vector< const chi_mesh::Cell * > &cell_ptrs) override
CBC_SweepDependencyInterface & cbc_sweep_depinterf_
void Sweep(chi_mesh::sweep_management::AngleSet &angle_set) override
void SetCell(chi_mesh::Cell const *cell_ptr, chi_mesh::sweep_management::AngleSet &angle_set) override
std::vector< const chi_mesh::Cell * > cell_ptrs_
CBC_SweepChunk(std::vector< double > &destination_phi, std::vector< double > &destination_psi, const chi_mesh::MeshContinuum &grid, const chi_math::SpatialDiscretization &discretization, const std::vector< UnitCellMatrices > &unit_cell_matrices, std::vector< lbs::CellLBSView > &cell_transport_views, const std::vector< double > &source_moments, const LBSGroupset &groupset, const std::map< int, XSPtr > &xs, int num_moments, int max_num_cell_dofs)
void SetupIncomingFace(int face_id, size_t num_face_nodes, uint64_t neighbor_id, bool on_local_face, bool on_boundary) override
std::vector< double > * psi_dnwnd_data_
void SetupOutgoingFace(int face_id, size_t num_face_nodes, uint64_t neighbor_id, bool on_local_face, bool on_boundary, int locality) override
const chi_mesh::sweep_management::FaceNodalMapping * face_nodal_mapping_
const std::vector< double > * psi_upwnd_data_block_
const chi_mesh::Cell * neighbor_cell_ptr_
const CellLBSView * cell_transport_view_
double * GetDownwindPsi(int face_node_local_idx) const override
const double * GetUpwindPsi(int face_node_local_idx) const override