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 data::Solution&& localCellData,
123 data::Wells&& localWellData,
124 data::GroupAndNetworkValues&& localGroupAndNetworkData,
125 data::Aquifers&& localAquiferData,
126 WellTestState&& localWTestState,
127 const Action::State& actionState,
128 const UDQState& udqState,
129 const SummaryState& summaryState,
130 const std::vector<Scalar>& thresholdPressure,
133 bool doublePrecision,
139 void evalSummary(
int reportStepNum,
141 const data::Wells& localWellData,
142 const data::WellBlockAveragePressures& localWBPData,
143 const data::GroupAndNetworkValues& localGroupAndNetworkData,
144 const std::map<int,data::AquiferData>& localAquiferData,
145 const std::map<std::pair<std::string, int>,
double>& blockData,
146 const std::map<std::string, double>& miscSummaryData,
147 const std::map<std::string, std::vector<double>>& regionData,
148 const Inplace& inplace,
149 const Inplace* initialInPlace,
151 SummaryState& summaryState,
154 CollectDataOnIORankType collectOnIORank_;
156 const GridView& gridView_;
157 const Schedule& schedule_;
158 const EclipseState& eclState_;
159 std::unique_ptr<EclipseIO> eclIO_;
160 std::unique_ptr<TaskletRunner> taskletRunner_;
161 Scalar restartTimeStepSize_;
162 const TransmissibilityType* globalTrans_ =
nullptr;
165 const EquilGrid* equilGrid_;
174 mutable std::vector<std::vector<NNCdata>> outputNnc_;
180 mutable std::vector<std::vector<NNCdata>> outputNncGlobalLocal_;
187 mutable std::vector<std::vector<std::vector<NNCdata>>> outputAmalgamatedNnc_;
189 mutable std::unique_ptr<std::vector<data::Solution>> outputTrans_;
192 template<
typename LevelIndicesFunction,
typename OriginIndicesFunction>
193 void computeTrans_(
const std::vector<std::unordered_map<int,int>>& levelCartToLevelCompressed,
194 const std::function<
unsigned int(
unsigned int)>& map,
195 const LevelIndicesFunction& computeLevelIndices,
196 const std::function<
int(
int,
int)>& computeLevelCartIdx,
197 const std::function<std::array<int,3>(
int)>& computeLevelCartDimensions,
198 const OriginIndicesFunction& computeOriginIndices)
const;
200 template<
typename LevelIndicesFunction,
typename OriginIndicesFunction>
201 std::vector<std::vector<NNCdata>> exportNncStructure_(
const std::vector<std::unordered_map<int,int>>& levelCartToLevelCompressed,
202 const std::function<
unsigned int(
unsigned int)>& map,
203 const LevelIndicesFunction& computeLevelIndices,
204 const std::function<
int(
int,
int)>& computeLevelCartIdx,
205 const std::function<std::array<int,3>(
int)>& computeLevelCartDimensions,
206 const OriginIndicesFunction& computeOriginIndices)
const;
209 bool isCartesianNeighbour_(
const std::array<int,3>& levelCartDims,
210 const std::size_t levelCartIdx1,
211 const std::size_t levelCartIdx2)
const;
213 bool isDirectNeighbours_(
const std::unordered_map<int,int>& levelCartesianToActive,
214 const std::array<int,3>& levelCartDims,
215 const std::size_t levelCartIdx1,
216 const std::size_t levelCartIdx2)
const;
218 auto activeCell_(
const std::unordered_map<int,int>& levelCartToLevelCompressed,
219 const std::size_t levelCartIdx)
const;
225 bool isNumAquCell_(
const std::size_t cartIdx)
const;
227 bool isNumAquConn_(
const std::size_t cartIdx1,
const std::size_t cartIdx2)
const;
237 template<
bool equilGr
idIsCpGr
id>
247 template<
bool equilGr
idIsCpGr
id>
255 template<
bool equilGr
idIsCpGr
id>
263 template<
bool equilGr
idIsCpGr
id>
271 template <
bool equilGr
idIsCpGr
id>
272 auto computeLevelIndices_()
const;
278 template <
bool equilGr
idIsCpGr
id>
279 auto computeOriginIndices_()
const;
283 void allocateLevelTrans_(
const std::array<int,3>& levelCartDims,
284 data::Solution& levelTrans)
const;
290 void allocateAllNncs_(
int maxLevel)
const;