Merge pull request #3635 from akva2/add_strequil
Add STREQUIL keyword and internalization
This commit is contained in:
@@ -6,8 +6,21 @@
|
||||
|
||||
namespace Opm {
|
||||
class DeckKeyword;
|
||||
class DeckRecord;
|
||||
|
||||
class EquilRecord {
|
||||
public:
|
||||
EquilRecord() = default;
|
||||
EquilRecord(double datum_depth_arg, double datum_depth_pc_arg,
|
||||
double woc_depth, double woc_pc,
|
||||
double goc_depth, double goc_pc,
|
||||
bool live_oil_init,
|
||||
bool wet_gas_init,
|
||||
int target_accuracy,
|
||||
bool humid_gas_init);
|
||||
explicit EquilRecord(const DeckRecord& record);
|
||||
|
||||
static EquilRecord serializationTestObject();
|
||||
double datumDepth() const;
|
||||
double datumDepthPressure() const;
|
||||
double waterOilContactDepth() const;
|
||||
@@ -20,10 +33,6 @@ namespace Opm {
|
||||
int initializationTargetAccuracy() const;
|
||||
bool humidGasInitConstantRvw() const;
|
||||
|
||||
EquilRecord();
|
||||
|
||||
EquilRecord( double datum_depth_arg, double datum_depth_pc_arg, double woc_depth, double woc_pc, double goc_depth, double goc_pc, bool live_oil_init, bool wet_gas_init, int target_accuracy, bool humid_gas_init);
|
||||
|
||||
bool operator==(const EquilRecord& data) const;
|
||||
|
||||
template<class Serializer>
|
||||
@@ -42,29 +51,75 @@ namespace Opm {
|
||||
}
|
||||
|
||||
private:
|
||||
double datum_depth;
|
||||
double datum_depth_ps;
|
||||
double water_oil_contact_depth;
|
||||
double water_oil_contact_capillary_pressure;
|
||||
double gas_oil_contact_depth;
|
||||
double gas_oil_contact_capillary_pressure;
|
||||
double datum_depth = 0.0;
|
||||
double datum_depth_ps = 0.0;
|
||||
double water_oil_contact_depth = 0.0;
|
||||
double water_oil_contact_capillary_pressure = 0.0;
|
||||
double gas_oil_contact_depth = 0.0;
|
||||
double gas_oil_contact_capillary_pressure = 0.0;
|
||||
|
||||
bool live_oil_init_proc;
|
||||
bool wet_gas_init_proc;
|
||||
int init_target_accuracy;
|
||||
bool humid_gas_init_proc;
|
||||
bool live_oil_init_proc = false;
|
||||
bool wet_gas_init_proc = false;
|
||||
int init_target_accuracy = 0;
|
||||
bool humid_gas_init_proc = false;
|
||||
};
|
||||
|
||||
class Equil {
|
||||
class StressEquilRecord {
|
||||
public:
|
||||
using const_iterator = std::vector< EquilRecord >::const_iterator;
|
||||
StressEquilRecord() = default;
|
||||
explicit StressEquilRecord(const DeckRecord& record);
|
||||
|
||||
Equil() = default;
|
||||
explicit Equil( const DeckKeyword& );
|
||||
static StressEquilRecord serializationTestObject();
|
||||
|
||||
static Equil serializationTestObject();
|
||||
bool operator==(const StressEquilRecord& data) const;
|
||||
|
||||
const EquilRecord& getRecord( size_t id ) const;
|
||||
double datumDepth() const;
|
||||
double datumPosX() const;
|
||||
double datumPosY() const;
|
||||
double stressXX() const;
|
||||
double stressXX_grad() const;
|
||||
double stressYY() const;
|
||||
double stressYY_grad() const;
|
||||
double stressZZ() const;
|
||||
double stressZZ_grad() const;
|
||||
|
||||
template<class Serializer>
|
||||
void serializeOp(Serializer& serializer)
|
||||
{
|
||||
serializer(datum_depth);
|
||||
serializer(datum_posx);
|
||||
serializer(datum_posy);
|
||||
serializer(stress_xx);
|
||||
serializer(stress_xx_grad);
|
||||
serializer(stress_yy);
|
||||
serializer(stress_yy_grad);
|
||||
serializer(stress_zz);
|
||||
serializer(stress_zz_grad);
|
||||
}
|
||||
|
||||
private:
|
||||
double datum_depth = 0.0;
|
||||
double datum_posx = 0.0;
|
||||
double datum_posy = 0.0;
|
||||
double stress_xx = 0.0;
|
||||
double stress_xx_grad = 0.0;
|
||||
double stress_yy = 0.0;
|
||||
double stress_yy_grad = 0.0;
|
||||
double stress_zz = 0.0;
|
||||
double stress_zz_grad = 0.0;
|
||||
};
|
||||
|
||||
template<class RecordType>
|
||||
class EquilContainer {
|
||||
public:
|
||||
using const_iterator = typename std::vector<RecordType>::const_iterator;
|
||||
|
||||
EquilContainer() = default;
|
||||
explicit EquilContainer( const DeckKeyword& );
|
||||
|
||||
static EquilContainer serializationTestObject();
|
||||
|
||||
const RecordType& getRecord(std::size_t id) const;
|
||||
|
||||
size_t size() const;
|
||||
bool empty() const;
|
||||
@@ -72,7 +127,7 @@ namespace Opm {
|
||||
const_iterator begin() const;
|
||||
const_iterator end() const;
|
||||
|
||||
bool operator==(const Equil& data) const;
|
||||
bool operator==(const EquilContainer& data) const;
|
||||
|
||||
template<class Serializer>
|
||||
void serializeOp(Serializer& serializer)
|
||||
@@ -81,9 +136,11 @@ namespace Opm {
|
||||
}
|
||||
|
||||
private:
|
||||
std::vector< EquilRecord > m_records;
|
||||
std::vector<RecordType> m_records;
|
||||
};
|
||||
|
||||
using Equil = EquilContainer<EquilRecord>;
|
||||
using StressEquil = EquilContainer<StressEquilRecord>;
|
||||
}
|
||||
|
||||
#endif //OPM_EQUIL_HPP
|
||||
|
||||
@@ -45,6 +45,9 @@ namespace Opm {
|
||||
bool hasEquil() const;
|
||||
const Equil& getEquil() const;
|
||||
|
||||
bool hasStressEquil() const;
|
||||
const StressEquil& getStressEquil() const;
|
||||
|
||||
bool hasGravity() const;
|
||||
|
||||
bool hasFoamConfig() const;
|
||||
@@ -64,6 +67,7 @@ namespace Opm {
|
||||
void serializeOp(Serializer& serializer)
|
||||
{
|
||||
serializer(equil);
|
||||
serializer(stress_equil);
|
||||
serializer(foamconfig);
|
||||
serializer(m_filleps);
|
||||
serializer(m_gravity);
|
||||
@@ -74,6 +78,7 @@ namespace Opm {
|
||||
|
||||
private:
|
||||
Equil equil;
|
||||
StressEquil stress_equil;
|
||||
FoamConfig foamconfig;
|
||||
bool m_filleps;
|
||||
bool m_gravity = true;
|
||||
|
||||
Reference in New Issue
Block a user