40class ARCANE_STD_EXPORT MeshPartitionerBase
47 ~MeshPartitionerBase()
override;
51 ISubDomain* subDomain()
const {
return m_sub_domain; }
56 Real maximumComputationTime()
const override {
return m_maximum_computation_time; }
67 void setCellsWeight(ArrayView<float> weights, Integer nb_weight)
override;
68 ArrayView<float> cellsWeight()
const override;
71 Integer nbCellWeight()
const;
88 virtual void changeOwnersFromCells();
90 enum eMarkCellWithConstraint
100 virtual void initConstraints(
bool uidref =
true);
103 virtual void freeConstraints();
106 virtual Int32 nbOwnCellsWithConstraints()
const;
109 virtual Real getNeighbourCellsUidWithConstraints(Cell cell, Int64Array& neighbourcells, Array<float>* commWeights = NULL,
110 bool noCellContrib =
false);
112 virtual Integer nbNeighbourCellsWithConstraints(Cell cell);
115 virtual void getNeighbourNodesUidWithConstraints(Cell cell, Int64UniqueArray neighbournodes);
119 virtual Int32 localIdWithConstraints(Cell cell);
120 virtual Int32 localIdWithConstraints(Int32 cell_lid);
123 virtual void invertArrayLid2LidCompacted();
127 virtual SharedArray<float> cellsWeightsWithConstraints(Int32 max_nb_weight = 0,
bool ask_lb_cells =
false);
129 virtual SharedArray<float> cellsSizeWithConstraints();
133 virtual bool cellUsedWithConstraints(Cell cell);
135 virtual bool cellUsedWithWeakConstraints(std::pair<Int64, Int64>& paired_item);
139 virtual void changeCellOwner(Item cell, VariableItemInt32& cells_new_owner, Int32 new_owner);
143 virtual bool haveConstraints() {
return m_cells_with_constraints.size() > 0; }
145 virtual bool haveWeakConstraints() {
return m_cells_with_weak_constraints.size() > 0; }
150 virtual void dumpObject(String filename =
"toto");
152 virtual void* getCommunicator()
const;
153 virtual Parallel::Communicator communicator()
const;
154 virtual bool cellComm() {
return true; }
158 virtual void _initArrayCellsWithConstraints();
159 virtual void _initFilterLidCells();
160 virtual void _initUidRef();
161 virtual void _initUidRef(VariableCellInteger& cell_renum_uid);
162 virtual void _initLid2LidCompacted();
163 virtual void _initNbCellsWithConstraints();
164 virtual void _clearCellWgt();
168 bool _isNonManifoldMesh()
const {
return m_is_non_manifold_mesh; }
169 Int32 _meshDimension()
const {
return m_mesh_dimension; }
173 Real _addNgb(
const Cell& cell,
const Face& face, Int64Array& neighbourcells, Array<bool>& contrib,
174 HashTableMapT<Int64, Int32>& map, Array<float>* ptrcommWeights, Int32 offset,
175 HashTableMapT<Int32, Int32>& lids,
bool special =
false);
176 bool _createConstraintsLists(Int64MultiArray2& tied_uid);
178 SharedArray<float> _cellsProjectWeights(VariableCellArrayReal& cellWgtIn, Int32 nbWgt)
const;
179 SharedArray<float> _cellsProjectWeights(VariableCellReal& cellWgtIn)
const;
183 ISubDomain* m_sub_domain =
nullptr;
184 IMesh* m_mesh =
nullptr;
185 IParallelMng* m_pm_sub =
nullptr;
189 IItemFamily* m_cell_family =
nullptr;
193 ILoadBalanceMng* m_lbMng =
nullptr;
194 ILoadBalanceMngInternal* m_lb_mng_internal =
nullptr;
196 Real m_maximum_computation_time = 0.0;
197 Real m_imbalance = 0.0;
198 Real m_max_imbalance = 0.0;
199 UniqueArray<Real> m_computation_times;
202 UniqueArray<SharedArray<Cell>> m_cells_with_constraints;
203 std::set<std::pair<Int64, Int64>> m_cells_with_weak_constraints;
204 Integer m_nb_cells_with_constraints = 0;
205 UniqueArray<eMarkCellWithConstraint> m_filter_lid_cells;
206 UniqueArray<Int32> m_local_id_2_local_id_compacted;
209 void _checkCreateVar();
210 UniqueArray<Int32> m_check;
211 bool m_is_non_manifold_mesh =
false;
212 Int32 m_mesh_dimension = -1;
Interface of the subdomain manager.