79class GenericCpGridVanguard {
83 using Element =
typename GridView::template Codim<0>::Entity;
86 GenericCpGridVanguard();
88 virtual ~GenericCpGridVanguard() =
default;
99 const Dune::CpGrid&
grid()
const
147 const std::vector<int>& cellPartition()
const
149 return this->cell_part_;
159 void doLoadBalance_(
const Dune::EdgeWeightMethod edgeWeightsMethod,
160 const bool ownersFirst,
161 const bool addCorners,
162 const int numOverlap,
163 const Dune::PartitionMethod partitionMethod,
164 const bool serialPartitioning,
165 const bool enableDistributedWells,
166 const bool allowSplittingInactiveWells,
167 const double imbalanceTol,
168 const GridView& gridView,
169 const Schedule& schedule,
170 EclipseState& eclState,
171 FlowGenericVanguard::ParallelWellStruct& parallelWells,
172 const int numJacobiBlocks,
173 const bool enableEclOutput);
175 void distributeFieldProps_(EclipseState& eclState);
178 std::vector<double> extractFaceTrans(
const GridView& gridView)
const;
180 void distributeGrid(
const Dune::EdgeWeightMethod edgeWeightsMethod,
181 const bool ownersFirst,
182 const bool addCorners,
183 const int numOverlap,
184 const Dune::PartitionMethod partitionMethod,
185 const bool serialPartitioning,
186 const bool enableDistributedWells,
187 const double imbalanceTol,
188 const bool loadBalancerSet,
189 const std::vector<double>& faceTrans,
190 const std::vector<Well>& wells,
191 const std::unordered_map<std::string, std::set<int>>& possibleFutureConnections,
192 EclipseState& eclState,
193 FlowGenericVanguard::ParallelWellStruct& parallelWells);
195 void distributeGrid(
const Dune::EdgeWeightMethod edgeWeightsMethod,
196 const bool ownersFirst,
197 const bool addCorners,
198 const int numOverlap,
199 const Dune::PartitionMethod partitionMethod,
200 const bool serialPartitioning,
201 const bool enableDistributedWells,
202 const double imbalanceTol,
203 const bool loadBalancerSet,
204 const std::vector<double>& faceTrans,
205 const std::vector<Well>& wells,
206 const std::unordered_map<std::string, std::set<int>>& possibleFutureConnections,
207 ParallelEclipseState* eclState,
208 FlowGenericVanguard::ParallelWellStruct& parallelWells);
211 virtual const std::string& zoltanParams()
const = 0;
212 virtual double zoltanPhgEdgeSizeThreshold()
const = 0;
213 virtual const std::string& metisParams()
const = 0;
219 void doCreateGrids_(
bool edge_conformal, EclipseState& eclState);
220 void addLgrsUpdateLeafView(
const LgrCollection& lgrCollection,
224 virtual void allocTrans() = 0;
225 virtual double getTransmissibility(
unsigned I,
unsigned J)
const = 0;
228 void doFilterConnections_(Schedule& schedule);
230 Scalar computeCellThickness(
const Element& element)
const;
232 std::unique_ptr<Dune::CpGrid> grid_;
233 std::unique_ptr<Dune::CpGrid> equilGrid_;
234 std::unique_ptr<CartesianIndexMapper> cartesianIndexMapper_;
235 std::unique_ptr<CartesianIndexMapper> equilCartesianIndexMapper_;
236 std::unique_ptr<LevelCartesianIndexMapper> levelCartesianIndexMapper_;
239 std::vector<int> cell_part_{};
static void setExternalLoadBalancer(const std::function< std::vector< int >(const Dune::CpGrid &)> &loadBalancer)
Sets a function that returns external load balancing information when passed the grid.
Definition GenericCpGridVanguard.hpp:125
std::optional< std::function< std::vector< int >(const Dune::CpGrid &)> > externalLoadBalancer
optional functor returning external load balancing information
Definition GenericCpGridVanguard.cpp:131