18 #ifndef stk_rebalance_ZoltanPartition_hpp 19 #define stk_rebalance_ZoltanPartition_hpp 25 #include <Teuchos_ParameterList.hpp> 26 #include <stk_mesh/base/Types.hpp> 51 typedef Teuchos::ParameterList Parameters;
53 class Zoltan :
public GeomDecomp {
90 std::vector<mesh::Entity *> mesh_entities;
93 std::vector<unsigned> dest_proc_ids ;
97 nodal_coord_ref(NULL),
98 elem_weight_ref(NULL) {}
117 virtual void set_mesh_info (
const std::vector<mesh::Entity *> &mesh_entities,
128 void reset_dest_proc_data ();
131 static const std::string zoltan_parameters_name();
134 static const std::string default_parameters_name();
159 Teuchos::ParameterList & rebal_region_parameters,
160 std::string parameters_name=default_parameters_name());
169 unsigned num_elems()
const {
return m_total_number_entities_ ; }
172 double entity_weight(
const unsigned moid)
const;
175 void set_destination_proc(
const unsigned moid,
176 const unsigned proc );
180 int globalID (
const unsigned moid)
const 181 {
return m_mesh_information_.mesh_entities[ moid ]->identifier(); }
184 unsigned num_moid()
const;
187 bool find_mesh_entity(
const mesh::Entity * entity,
unsigned & moid)
const;
190 mesh::Entity *mesh_entity(
const unsigned moid )
const;
209 static void merge_default_values (
const Teuchos::ParameterList &from,
210 Teuchos::ParameterList &to);
217 static void convert_names_and_values (
const Teuchos::ParameterList &from,
218 Teuchos::ParameterList &to);
234 virtual void determine_new_partition (
bool & RebalancingNeeded);
250 virtual int get_new_partition(stk_classic::mesh::EntityProcVec &new_partition);
253 bool partition_dependents_needed()
const 278 int evaluate (
int print_stats,
287 double zoltan_version()
const;
290 const std::string & parameter_entry_name()
const;
293 Zoltan_Struct * zoltan() {
298 const Zoltan_Struct * zoltan()
const {
303 unsigned spatial_dimension()
const {
304 return m_spatial_dimension_;
309 struct Zoltan_Struct *m_zoltan_id_;
311 const unsigned m_spatial_dimension_;
315 std::string m_parameter_entry_name_;
317 static const std::string m_zoltanparametersname_;
318 static const std::string m_defaultparametersname_;
319 Parameters m_default_parameters_;
320 MeshInfo m_mesh_information_;
321 unsigned m_total_number_entities_;
323 void init_default_parameters();
324 void init(
const std::vector< std::pair<std::string, std::string> >
325 &dynamicLoadRebalancingParameters);
326 static double init_zoltan_library();
329 unsigned destination_proc(
const unsigned moid)
const;
332 int register_callbacks();
bool rebalance(mesh::BulkData &bulk_data, const mesh::Selector &selector, const VectorField *coord_ref, const ScalarField *elem_weight_ref, Partition &partition, const stk_classic::mesh::EntityRank rank=stk_classic::mesh::InvalidEntityRank)
Rebalance with a Partition object.
A structure to organize the mesh entity data.
Field with defined data type and multi-dimensions (if any)
Geometric support for partitioning of mesh entities.
MeshInfo()
Default Constructor.
Class for implementing Zoltan based rebalancing.