74 EclGenericWriter(
const Schedule& schedule,
75 const EclipseState& eclState,
76 const SummaryConfig& summaryConfig,
78 const EquilGrid* equilGrid,
79 const GridView& gridView,
82 bool enableAsyncOutput,
85 const EclipseIO& eclIO()
const;
89 void setTransmissibilities(
const TransmissibilityType* globalTrans)
91 globalTrans_ = globalTrans;
96 sub_step_report_ = report;
100 simulation_report_ = report;
103 const std::vector<std::vector<NNCdata>>& getOutputNnc()
const
108 const CollectDataOnIORankType& collectOnIORank()
const
110 return collectOnIORank_;
113 void extractOutputTransAndNNC(
const std::function<
unsigned int(
unsigned int)>& map);
116 const TransmissibilityType& globalTrans()
const;
117 unsigned int gridEquilIdxToGridIdx(
unsigned int elemIndex)
const;
119 void doWriteOutput(
const int reportStepNum,
120 const std::optional<int> timeStepNum,
121 const bool isSubStep,
122 const bool forcedSimulationFinished,
123 data::Solution&& localCellData,
124 data::Wells&& localWellData,
125 data::GroupAndNetworkValues&& localGroupAndNetworkData,
126 data::Aquifers&& localAquiferData,
127 WellTestState&& localWTestState,
128 const Action::State& actionState,
129 const UDQState& udqState,
130 const SummaryState& summaryState,
131 const std::vector<Scalar>& thresholdPressure,
134 bool doublePrecision,
140 void evalSummary(
int reportStepNum,
142 const data::Wells& localWellData,
143 const data::WellBlockAveragePressures& localWBPData,
144 const data::GroupAndNetworkValues& localGroupAndNetworkData,
145 const std::map<int,data::AquiferData>& localAquiferData,
146 const std::map<std::pair<std::string, int>,
double>& blockData,
147 const std::map<std::string, double>& miscSummaryData,
148 const std::map<std::string, std::vector<double>>& regionData,
149 const Inplace& inplace,
150 const Inplace* initialInPlace,
152 SummaryState& summaryState,
155 CollectDataOnIORankType collectOnIORank_;
157 const GridView& gridView_;
158 const Schedule& schedule_;
159 const EclipseState& eclState_;
160 std::unique_ptr<EclipseIO> eclIO_;
161 std::unique_ptr<TaskletRunner> taskletRunner_;
162 Scalar restartTimeStepSize_;
163 const TransmissibilityType* globalTrans_ =
nullptr;
166 const EquilGrid* equilGrid_;
175 mutable std::vector<std::vector<NNCdata>> outputNnc_;
181 mutable std::vector<std::vector<NNCdata>> outputNncGlobalLocal_;
188 mutable std::vector<std::vector<std::vector<NNCdata>>> outputAmalgamatedNnc_;
190 mutable std::unique_ptr<std::vector<data::Solution>> outputTrans_;
193 template<
typename LevelIndicesFunction,
typename OriginIndicesFunction>
194 void computeTrans_(
const std::vector<std::unordered_map<int,int>>& levelCartToLevelCompressed,
195 const std::function<
unsigned int(
unsigned int)>& map,
196 const LevelIndicesFunction& computeLevelIndices,
197 const std::function<
int(
int,
int)>& computeLevelCartIdx,
198 const std::function<std::array<int,3>(
int)>& computeLevelCartDimensions,
199 const OriginIndicesFunction& computeOriginIndices)
const;
201 template<
typename LevelIndicesFunction,
typename OriginIndicesFunction>
202 std::vector<std::vector<NNCdata>> exportNncStructure_(
const std::vector<std::unordered_map<int,int>>& levelCartToLevelCompressed,
203 const std::function<
unsigned int(
unsigned int)>& map,
204 const LevelIndicesFunction& computeLevelIndices,
205 const std::function<
int(
int,
int)>& computeLevelCartIdx,
206 const std::function<std::array<int,3>(
int)>& computeLevelCartDimensions,
207 const OriginIndicesFunction& computeOriginIndices)
const;
210 bool isCartesianNeighbour_(
const std::array<int,3>& levelCartDims,
211 const std::size_t levelCartIdx1,
212 const std::size_t levelCartIdx2)
const;
214 bool isDirectNeighbours_(
const std::unordered_map<int,int>& levelCartesianToActive,
215 const std::array<int,3>& levelCartDims,
216 const std::size_t levelCartIdx1,
217 const std::size_t levelCartIdx2)
const;
219 auto activeCell_(
const std::unordered_map<int,int>& levelCartToLevelCompressed,
220 const std::size_t levelCartIdx)
const;
226 bool isNumAquCell_(
const std::size_t cartIdx)
const;
228 bool isNumAquConn_(
const std::size_t cartIdx1,
const std::size_t cartIdx2)
const;
238 template<
bool equilGr
idIsCpGr
id>
248 template<
bool equilGr
idIsCpGr
id>
256 template<
bool equilGr
idIsCpGr
id>
264 template<
bool equilGr
idIsCpGr
id>
272 template <
bool equilGr
idIsCpGr
id>
273 auto computeLevelIndices_()
const;
279 template <
bool equilGr
idIsCpGr
id>
280 auto computeOriginIndices_()
const;
284 void allocateLevelTrans_(
const std::array<int,3>& levelCartDims,
285 data::Solution& levelTrans)
const;
291 void allocateAllNncs_(
int maxLevel)
const;