GEOS
PartitionerBase.hpp
Go to the documentation of this file.
1 /*
2  * ------------------------------------------------------------------------------------------------------------
3  * SPDX-License-Identifier: LGPL-2.1-only
4  *
5  * Copyright (c) 2018-2019 Lawrence Livermore National Security LLC
6  * Copyright (c) 2018-2019 The Board of Trustees of the Leland Stanford Junior University
7  * Copyright (c) 2018-2019 Total, S.A
8  * Copyright (c) 2019- GEOS/GEOSX Contributors
9  * All right reserved
10  *
11  * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details.
12  * ------------------------------------------------------------------------------------------------------------
13  */
14 
19 #ifndef GEOS_LINEARALGEBRA_MULTISCALE_PARTITIONERBASE_HPP
20 #define GEOS_LINEARALGEBRA_MULTISCALE_PARTITIONERBASE_HPP
21 
24 
25 #include <memory>
26 
27 namespace geos
28 {
29 namespace multiscale
30 {
31 
36 {
37 public:
38 
44  static std::unique_ptr< PartitionerBase >
46 
52  : m_params( std::move( params ) )
53  {}
54 
58  virtual ~PartitionerBase() = default;
59 
66  virtual localIndex generate( multiscale::MeshLevel const & mesh,
67  arrayView1d< localIndex > const & partition ) = 0;
68 
81  virtual void setCoarseData( multiscale::MeshLevel & coarseMesh ) const
82  {
83  GEOS_UNUSED_VAR( coarseMesh );
84  };
85 
86 protected:
87 
90 };
91 
92 } // namespace multiscale
93 } // namespace geos
94 
95 #endif //GEOS_LINEARALGEBRA_MULTISCALE_PARTITIONERBASE_HPP
#define GEOS_UNUSED_VAR(...)
Mark an unused variable and silence compiler warnings.
Definition: GeosxMacros.hpp:84
Multiscale mesh level.
Definition: MeshLevel.hpp:47
Base class for partitioner implementations.
PartitionerBase(LinearSolverParameters::Multiscale::Coarsening params)
Constructor.
static std::unique_ptr< PartitionerBase > create(LinearSolverParameters::Multiscale::Coarsening params)
Factory method for instantiating a partitioner based on parameters.
virtual void setCoarseData(multiscale::MeshLevel &coarseMesh) const
Store auxiliary partitioning-related data on the coarse mesh.
LinearSolverParameters::Multiscale::Coarsening m_params
Coarsening parameters.
virtual ~PartitionerBase()=default
Destructor.
virtual localIndex generate(multiscale::MeshLevel const &mesh, arrayView1d< localIndex > const &partition)=0
Generate a partitioning of fine-scale mesh cells.
ArrayView< T, 1 > arrayView1d
Alias for 1D array view.
Definition: DataTypes.hpp:179
GEOS_LOCALINDEX_TYPE localIndex
Local index type (for indexing objects within an MPI partition).
Definition: DataTypes.hpp:84