56 enum { dimWorld = GridView::dimensionworld };
59 using DimMatrix = Dune::FieldMatrix<Scalar, dimWorld, dimWorld>;
60 using DimVector = Dune::FieldVector<Scalar, dimWorld>;
63 const GridView& gridView,
64 const CartesianIndexMapper& cartMapper,
66 std::function<std::array<double,dimWorld>(
int)> centroids,
68 bool enableDiffusivity,
69 bool enableDispersivity);
75 {
return permeability_[elemIdx]; }
101 Scalar
thermalHalfTrans(
unsigned insideElemIdx,
unsigned outsideElemIdx)
const;
103 Scalar thermalHalfTransBoundary(
unsigned insideElemIdx,
unsigned boundaryFaceIdx)
const;
108 Scalar
diffusivity(
unsigned elemIdx1,
unsigned elemIdx2)
const;
113 Scalar
dispersivity(
unsigned elemIdx1,
unsigned elemIdx2)
const;
129 void finishInit(
const std::function<
unsigned int(
unsigned int)>& map = {})
131 this->update(
true, TransUpdateQuantities::All, map,
true);
159 const std::function<
unsigned int(
unsigned int)>& map = {},
bool applyNncMultRegT =
false);
162 void updateFromEclState_(
bool global);
164 void removeNonCartesianTransmissibilities_(
bool removeAll);
170 unsigned insideFaceIdx,
171 unsigned outsideFaceIdx,
172 unsigned insideCartElemIdx,
173 unsigned outsideCartElemIdx,
174 const TransMult& transMult,
175 const std::array<int, dimWorld>& cartDims);
181 std::array<std::vector<double>,3>
189 const std::array<std::vector<double>,3>& trans);
191 template <
class Intersection>
192 void computeFaceProperties(
const Intersection& intersection,
197 DimVector& faceCenterInside,
198 DimVector& faceCenterOutside,
199 DimVector& faceAreaNormal,
200 std::false_type)
const;
202 template <
class Intersection>
203 void computeFaceProperties(
const Intersection& intersection,
204 const int insideElemIdx,
205 const int insideFaceIdx,
206 const int outsideElemIdx,
207 const int outsideFaceIdx,
208 DimVector& faceCenterInside,
209 DimVector& faceCenterOutside,
210 DimVector& faceAreaNormal,
211 std::true_type)
const;
225 void applyNncToGridTrans_(
const std::unordered_map<std::size_t,int>& cartesianToCompressed);
239 void applyNncMultreg_(
const std::unordered_map<std::size_t,int>& globalToLocal);
241 void applyEditNncToGridTransHelper_(
const std::unordered_map<std::size_t,int>& globalToLocal,
242 const std::string& keyword,
const std::vector<NNCdata>& nncs,
243 const std::function<KeywordLocation(
const NNCdata&)>& getLocation,
244 const std::function<
void(Scalar&,
const Scalar&)>& apply);
246 void extractPermeability_();
248 void extractPermeability_(
const std::function<
unsigned int(
unsigned int)>& map);
250 void extractPorosity_();
252 void extractDispersion_();
254 void computeHalfTrans_(Scalar& halfTrans,
255 const DimVector& areaNormal,
257 const DimVector& distance,
258 const DimMatrix& perm)
const;
260 void computeHalfDiffusivity_(Scalar& halfDiff,
261 const DimVector& areaNormal,
262 const DimVector& distance,
263 const Scalar& poro)
const;
265 DimVector distanceVector_(
const DimVector& faceCenter,
266 const unsigned& cellIdx)
const;
268 void applyMultipliers_(Scalar& trans,
270 unsigned cartElemIdx,
271 const TransMult& transMult)
const;
273 void applyNtg_(Scalar& trans,
276 const std::vector<double>& ntg)
const;
278 std::vector<DimMatrix> permeability_;
279 std::vector<Scalar> porosity_;
280 std::vector<Scalar> dispersion_;
281 std::unordered_map<std::uint64_t, Scalar> trans_;
282 const EclipseState& eclState_;
283 const GridView& gridView_;
284 const CartesianIndexMapper& cartMapper_;
286 std::function<std::array<double,dimWorld>(
int)> centroids_;
287 Scalar transmissibilityThreshold_;
288 std::map<std::pair<unsigned, unsigned>, Scalar> transBoundary_;
289 std::map<std::pair<unsigned, unsigned>, Scalar> thermalHalfTransBoundary_;
291 bool enableDiffusivity_;
292 bool enableDispersivity_;
293 bool warnEditNNC_ =
true;
294 std::unordered_map<std::uint64_t, Scalar> thermalHalfTrans_;
295 std::unordered_map<std::uint64_t, Scalar> diffusivity_;
296 std::unordered_map<std::uint64_t, Scalar> dispersivity_;
298 const LookUpData<Grid,GridView> lookUpData_;
299 const LookUpCartesianData<Grid,GridView> lookUpCartesianData_;
void applyAllZMultipliers_(Scalar &trans, unsigned insideFaceIdx, unsigned outsideFaceIdx, unsigned insideCartElemIdx, unsigned outsideCartElemIdx, const TransMult &transMult, const std::array< int, dimWorld > &cartDims)
Apply the Multipliers for the case PINCH(4)==TOPBOT.
Definition Transmissibility_impl.hpp:718