27template <
typename PROP_VAL_TYPE>
40 std::vector<std::unique_ptr<
42 capillary_pressure_models,
44 std::unique_ptr<MaterialLib::PorousMedium::RelativePermeability>>&&
45 relative_permeability_models);
51 const double p,
const double T,
const double saturation)
const;
54 const double p,
const double T,
55 const double saturation)
const;
58 const double p,
const double T,
59 const double saturation)
const;
61 const int material_id,
const double t,
63 const double T,
const double saturation)
const;
66 const int material_id,
84 std::unique_ptr<MaterialLib::PorousMedium::CapillaryPressureSaturation>>
87 std::unique_ptr<MaterialLib::PorousMedium::RelativePermeability>>
103 double const X,
double const T,
double Sw,
110 double const pl,
double const X,
double const T,
117 double const rho_wet_h2);
122 double rho_wet_h2,
double rho_nonwet_h2,
128 double const T,
int current_material_id)
const;
132 double calculatedSwdX(
double const pl,
const double ,
const double S,
133 const double rho_wet_h2,
double const T,
134 int current_material_id)
const;
138 double calculatedXmdX(
double pl,
double Sw,
double rho_wet_h2,
double dSwdX,
139 int current_material_id)
const;
143 double calculatedXmdP(
double pl,
double Sw,
double rho_wet_h2,
double dSwdP,
144 int current_material_id)
const;
Definition of the PiecewiseLinearInterpolation class.
std::array< double, PropertyVariableNumber > ArrayType
Base class of capillary pressure models.
static double calculateSaturation(double, double X, double Sw, double rho_wet_h2, double rho_nonwet_h2, double)
double calculatedXmdP(double pl, double Sw, double rho_wet_h2, double dSwdP, int current_material_id) const
MaterialLib::Fluid::FluidProperty::ArrayType ArrayType
std::vector< std::unique_ptr< MaterialLib::PorousMedium::CapillaryPressureSaturation > > _capillary_pressure_models
double calculatedSwdX(double const pl, const double, const double S, const double rho_wet_h2, double const T, int current_material_id) const
double getNonwetRelativePermeability(const double t, const ParameterLib::SpatialPosition &pos, const double p, const double T, const double saturation) const
void calculateResidual(const int material_id, double const pl, double const X, double const T, double Sw, double rho_h2_wet, ResidualVector &res)
Eigen::Matrix< double, jacobian_residual_size, 1 > ResidualVector
double getWetRelativePermeability(const double t, const ParameterLib::SpatialPosition &pos, const double p, const double T, const double saturation) const
static int const jacobian_residual_size
void calculateJacobian(const int material_id, double const t, ParameterLib::SpatialPosition const &x, double const pl, double const X, double const T, JacobianMatrix &Jac, double Sw, double rho_h2_wet)
TwoPhaseFlowWithPrhoMaterialProperties(MeshLib::PropertyVector< int > const *material_ids, std::vector< std::unique_ptr< MaterialLib::PorousMedium::CapillaryPressureSaturation > > &&capillary_pressure_models, std::vector< std::unique_ptr< MaterialLib::PorousMedium::RelativePermeability > > &&relative_permeability_models)
static double calculateEquilibiumRhoWetLight(double const pg, double const Sw, double const rho_wet_h2)
double getCapillaryPressureDerivative(const int material_id, const double t, const ParameterLib::SpatialPosition &pos, const double p, const double T, const double saturation) const
Eigen::Matrix< double, jacobian_residual_size, jacobian_residual_size, Eigen::RowMajor > JacobianMatrix
double calculatedSwdP(double pl, double S, double rho_wet_h2, double const T, int current_material_id) const
int getMaterialID(const std::size_t element_id)
double getCapillaryPressure(const int material_id, const double t, const ParameterLib::SpatialPosition &pos, const double p, const double T, const double saturation) const
bool computeConstitutiveRelation(double const t, ParameterLib::SpatialPosition const &x, const int material_id, double const pg, double const X, double const T, double &Sw, double &X_m, double &dsw_dpg, double &dsw_dX, double &dxm_dpg, double &dxm_dX)
MeshLib::PropertyVector< int > const *const _material_ids
Eigen::Matrix< double, jacobian_residual_size, 1 > UnknownVector
double calculatedXmdX(double pl, double Sw, double rho_wet_h2, double dSwdX, int current_material_id) const
std::vector< std::unique_ptr< MaterialLib::PorousMedium::RelativePermeability > > _relative_permeability_models