TransMult: implement non-fault transmissibility multipliers

i.e., the MULT[XYZ]-? keywords.
This commit is contained in:
Andreas Lauser 2014-07-15 14:09:56 +02:00
parent 9eda5bad44
commit abb49aead6
4 changed files with 28 additions and 6 deletions

View File

@ -39,7 +39,7 @@ namespace Opm {
initSchedule(deck);
initTitle(deck);
initProperties(deck);
initTransMult(deck);
initTransMult();
initFaults(deck);
}
@ -69,12 +69,26 @@ namespace Opm {
schedule = ScheduleConstPtr( new Schedule(deck) );
}
void EclipseState::initTransMult(DeckConstPtr deck) {
void EclipseState::initTransMult() {
EclipseGridConstPtr grid = getEclipseGrid();
m_transMult = std::make_shared<TransMult>( grid->getNX() , grid->getNY() , grid->getNZ());
if (hasDoubleGridProperty("MULTX"))
m_transMult->applyMULT(getDoubleGridProperty("MULTX"), FaceDir::XPlus);
if (hasDoubleGridProperty("MULTX-"))
m_transMult->applyMULT(getDoubleGridProperty("MULTX-"), FaceDir::XMinus);
if (hasDoubleGridProperty("MULTY"))
m_transMult->applyMULT(getDoubleGridProperty("MULTY"), FaceDir::YPlus);
if (hasDoubleGridProperty("MULTY-"))
m_transMult->applyMULT(getDoubleGridProperty("MULTY-"), FaceDir::YMinus);
if (hasDoubleGridProperty("MULTZ"))
m_transMult->applyMULT(getDoubleGridProperty("MULTZ"), FaceDir::ZPlus);
if (hasDoubleGridProperty("MULTZ-"))
m_transMult->applyMULT(getDoubleGridProperty("MULTZ-"), FaceDir::ZMinus);
}
void EclipseState::initFaults(DeckConstPtr deck) {
EclipseGridConstPtr grid = getEclipseGrid();
m_faults = std::make_shared<FaultCollection>( grid->getNX() , grid->getNY() , grid->getNZ());

View File

@ -59,7 +59,7 @@ namespace Opm {
void initPhases(DeckConstPtr deck);
void initTitle(DeckConstPtr deck);
void initProperties(DeckConstPtr deck);
void initTransMult(DeckConstPtr deck);
void initTransMult();
void initFaults(DeckConstPtr deck);
void setMULTFLT(std::shared_ptr<const Section> section) const;

View File

@ -80,7 +80,6 @@ namespace Opm {
else
return false;
}
void TransMult::insertNewProperty(FaceDir::DirEnum faceDir) {
GridPropertySupportedKeywordInfo<double> kwInfo(m_names[faceDir] , 1.0 , "1");
@ -97,7 +96,15 @@ namespace Opm {
return m_trans.at( faceDir );
}
void TransMult::applyMULT(std::shared_ptr<const GridProperty<double> > srcProp, FaceDir::DirEnum faceDir)
{
std::shared_ptr<GridProperty<double> > dstProp = getDirectionProperty(faceDir);
const std::vector<double> &srcData = srcProp->getData();
for (size_t i = 0; i < srcData.size(); ++i)
dstProp->multiplyValueAtIndex(i, srcData[i]);
}
void TransMult::applyMULTFLT( std::shared_ptr<const FaultCollection> faults) {
for (size_t faultIndex = 0; faultIndex < faults->size(); faultIndex++) {

View File

@ -46,6 +46,7 @@ namespace Opm {
double getMultiplier(size_t i , size_t j , size_t k, FaceDir::DirEnum faceDir) const;
bool hasDirectionProperty(FaceDir::DirEnum faceDir) const;
std::shared_ptr<GridProperty<double> > getDirectionProperty(FaceDir::DirEnum faceDir);
void applyMULT(std::shared_ptr<const GridProperty<double> > srcMultProp, FaceDir::DirEnum faceDir);
void applyMULTFLT( std::shared_ptr<const FaultCollection> faults);
private: