17#define ParallelParmetisNeedsCycles \
18 "When using PARMETIS type partitioning then groupset iterative method" \
19 " must be NPT_CLASSICRICHARDSON_CYCLES or NPT_GMRES_CYCLES"
21#define IsParallel Chi::mpi.process_count > 1
23#define IsPartitionTypeParmetis \
24 mesher.options.partition_type == \
25 chi_mesh::VolumeMesher::PartitionType::PARMETIS
45 <<
" Initializing sweep datastructures.\n";
50 auto& mesher = mesh_handler.GetVolumeMesher();
54 bool no_cycles_parmetis_partitioning =
59 if (no_cycles_parmetis_partitioning and not is_1D_geometry and
IsParallel)
66 std::map<AngQuadPtr, bool> quadrature_allow_cycles_map_;
72 *groupset.quadrature_,
73 groupset.angleagg_method_,
76 if (quadrature_allow_cycles_map_.count(groupset.quadrature_) == 0)
77 quadrature_allow_cycles_map_[groupset.quadrature_] =
78 groupset.allow_cycles_;
85 const auto& unique_so_groupings = info.first;
87 for (
const auto& so_grouping : unique_so_groupings)
89 if (so_grouping.empty())
continue;
91 const size_t master_dir_id = so_grouping.front();
92 const auto& omega = quadrature->omegas_[master_dir_id];
106 const auto new_swp_order = std::make_shared<SPDS_AdamsAdamsHawkins>(
109 quadrature_allow_cycles_map_[quadrature],
115 const auto new_swp_order =
116 std::make_shared<CBC_SPDS>(omega,
118 quadrature_allow_cycles_map_[quadrature],
132 for (
const auto& spds : spds_list)
137 std::make_unique<AAH_FLUDSCommonData>(
151 <<
" Done initializing sweep datastructures.\n";
#define ChiInvalidArgument(message)
static chi::Timer program_timer
LogStream Log(LOG_LVL level=LOG_0)
std::string GetTimeString() const
const std::string sweep_type_
std::vector< size_t > verbose_sweep_angles_
std::map< AngQuadPtr, FLUDSCommonDataPtrs > quadrature_fluds_commondata_map_
static std::pair< UniqueSOGroupings, DirIDToSOMap > AssociateSOsAndDirections(const chi_mesh::MeshContinuum &grid, const chi_math::AngularQuadrature &quadrature, AngleAggregationType agg_type, lbs::GeometryType lbs_geo_type)
void InitializeSweepDataStructures()
std::map< AngQuadPtr, SwpOrderGroupingInfo > quadrature_unq_so_grouping_map_
std::map< AngQuadPtr, SPDS_ptrs > quadrature_spds_map_
chi_mesh::MeshContinuumPtr grid_ptr_
GridFaceHistogramPtr grid_face_histogram_
std::vector< CellFaceNodalMapping > grid_nodal_mappings_
std::vector< LBSGroupset > groupsets_
#define ParallelParmetisNeedsCycles
#define IsPartitionTypeParmetis
MeshHandler & GetCurrentHandler()
bool VectorListHas(const std::vector< T > &list, const B &val)
GeometryType geometry_type