Skip to content
Snippets Groups Projects
Commit fbfe9af0 authored by renchao.lu's avatar renchao.lu
Browse files

Merge branch 'UpdateLiquidFlowUsingMPLBracketOperator' into 'master'

[PL/LiquidFlow] Access MPL properties with [] instead of property().

See merge request ogs/ogs!3609
parents 574a2bd2 14126c79
No related branches found
No related tags found
No related merge requests found
...@@ -36,18 +36,16 @@ void LiquidFlowLocalAssembler<ShapeFunction, IntegrationMethod, GlobalDim>:: ...@@ -36,18 +36,16 @@ void LiquidFlowLocalAssembler<ShapeFunction, IntegrationMethod, GlobalDim>::
ParameterLib::SpatialPosition pos; ParameterLib::SpatialPosition pos;
pos.setElementID(_element.getID()); pos.setElementID(_element.getID());
auto const& medium = _process_data.media_map->getMedium(_element.getID()); auto const& medium = *_process_data.media_map->getMedium(_element.getID());
MaterialPropertyLib::VariableArray vars; MaterialPropertyLib::VariableArray vars;
vars[static_cast<int>(MaterialPropertyLib::Variable::temperature)] = vars[static_cast<int>(MaterialPropertyLib::Variable::temperature)] =
medium medium[MaterialPropertyLib::PropertyType::reference_temperature]
->property(MaterialPropertyLib::PropertyType::reference_temperature)
.template value<double>(vars, pos, t, dt); .template value<double>(vars, pos, t, dt);
vars[static_cast<int>(MaterialPropertyLib::Variable::phase_pressure)] = vars[static_cast<int>(MaterialPropertyLib::Variable::phase_pressure)] =
std::numeric_limits<double>::quiet_NaN(); std::numeric_limits<double>::quiet_NaN();
auto const permeability = auto const permeability = MaterialPropertyLib::formEigenTensor<GlobalDim>(
MaterialPropertyLib::formEigenTensor<GlobalDim>( medium[MaterialPropertyLib::PropertyType::permeability].value(vars, pos,
medium->property(MaterialPropertyLib::PropertyType::permeability) t, dt));
.value(vars, pos, t, dt));
// Note: For Inclined 1D in 2D/3D or 2D element in 3D, the first item in // Note: For Inclined 1D in 2D/3D or 2D element in 3D, the first item in
// the assert must be changed to permeability.rows() == // the assert must be changed to permeability.rows() ==
// _element->getDimension() // _element->getDimension()
...@@ -88,8 +86,8 @@ LiquidFlowLocalAssembler<ShapeFunction, IntegrationMethod, GlobalDim>::getFlux( ...@@ -88,8 +86,8 @@ LiquidFlowLocalAssembler<ShapeFunction, IntegrationMethod, GlobalDim>::getFlux(
ParameterLib::SpatialPosition pos; ParameterLib::SpatialPosition pos;
pos.setElementID(_element.getID()); pos.setElementID(_element.getID());
auto const& medium = _process_data.media_map->getMedium(_element.getID()); auto const& medium = *_process_data.media_map->getMedium(_element.getID());
auto const& liquid_phase = medium->phase("AqueousLiquid"); auto const& liquid_phase = medium.phase("AqueousLiquid");
MaterialPropertyLib::VariableArray vars; MaterialPropertyLib::VariableArray vars;
...@@ -100,10 +98,10 @@ LiquidFlowLocalAssembler<ShapeFunction, IntegrationMethod, GlobalDim>::getFlux( ...@@ -100,10 +98,10 @@ LiquidFlowLocalAssembler<ShapeFunction, IntegrationMethod, GlobalDim>::getFlux(
auto const intrinsic_permeability = auto const intrinsic_permeability =
MaterialPropertyLib::formEigenTensor<GlobalDim>( MaterialPropertyLib::formEigenTensor<GlobalDim>(
medium->property(MaterialPropertyLib::PropertyType::permeability) medium[MaterialPropertyLib::PropertyType::permeability].value(
.value(vars, pos, t, dt)); vars, pos, t, dt));
auto const viscosity = auto const viscosity =
liquid_phase.property(MaterialPropertyLib::PropertyType::viscosity) liquid_phase[MaterialPropertyLib::PropertyType::viscosity]
.template value<double>(vars, pos, t, dt); .template value<double>(vars, pos, t, dt);
Eigen::Vector3d flux(0.0, 0.0, 0.0); Eigen::Vector3d flux(0.0, 0.0, 0.0);
...@@ -140,13 +138,12 @@ void LiquidFlowLocalAssembler<ShapeFunction, IntegrationMethod, GlobalDim>:: ...@@ -140,13 +138,12 @@ void LiquidFlowLocalAssembler<ShapeFunction, IntegrationMethod, GlobalDim>::
ParameterLib::SpatialPosition pos; ParameterLib::SpatialPosition pos;
pos.setElementID(_element.getID()); pos.setElementID(_element.getID());
auto const& medium = _process_data.media_map->getMedium(_element.getID()); auto const& medium = *_process_data.media_map->getMedium(_element.getID());
auto const& liquid_phase = medium->phase("AqueousLiquid"); auto const& liquid_phase = medium.phase("AqueousLiquid");
MaterialPropertyLib::VariableArray vars; MaterialPropertyLib::VariableArray vars;
vars[static_cast<int>(MaterialPropertyLib::Variable::temperature)] = vars[static_cast<int>(MaterialPropertyLib::Variable::temperature)] =
medium medium[MaterialPropertyLib::PropertyType::reference_temperature]
->property(MaterialPropertyLib::PropertyType::reference_temperature)
.template value<double>(vars, pos, t, dt); .template value<double>(vars, pos, t, dt);
for (unsigned ip = 0; ip < n_integration_points; ip++) for (unsigned ip = 0; ip < n_integration_points; ip++)
...@@ -160,21 +157,20 @@ void LiquidFlowLocalAssembler<ShapeFunction, IntegrationMethod, GlobalDim>:: ...@@ -160,21 +157,20 @@ void LiquidFlowLocalAssembler<ShapeFunction, IntegrationMethod, GlobalDim>::
// Compute density: // Compute density:
auto const fluid_density = auto const fluid_density =
liquid_phase.property(MaterialPropertyLib::PropertyType::density) liquid_phase[MaterialPropertyLib::PropertyType::density]
.template value<double>(vars, pos, t, dt); .template value<double>(vars, pos, t, dt);
assert(fluid_density > 0.); assert(fluid_density > 0.);
auto const ddensity_dpressure = auto const ddensity_dpressure =
liquid_phase.property(MaterialPropertyLib::PropertyType::density) liquid_phase[MaterialPropertyLib::PropertyType::density]
.template dValue<double>( .template dValue<double>(
vars, MaterialPropertyLib::Variable::phase_pressure, pos, vars, MaterialPropertyLib::Variable::phase_pressure, pos, t,
t, dt); dt);
auto const porosity = auto const porosity =
medium->property(MaterialPropertyLib::PropertyType::porosity) medium[MaterialPropertyLib::PropertyType::porosity]
.template value<double>(vars, pos, t, dt);
auto const storage =
medium->property(MaterialPropertyLib::PropertyType::storage)
.template value<double>(vars, pos, t, dt); .template value<double>(vars, pos, t, dt);
auto const storage = medium[MaterialPropertyLib::PropertyType::storage]
.template value<double>(vars, pos, t, dt);
// Assemble mass matrix, M // Assemble mass matrix, M
local_M.noalias() += local_M.noalias() +=
...@@ -183,15 +179,14 @@ void LiquidFlowLocalAssembler<ShapeFunction, IntegrationMethod, GlobalDim>:: ...@@ -183,15 +179,14 @@ void LiquidFlowLocalAssembler<ShapeFunction, IntegrationMethod, GlobalDim>::
// Compute viscosity: // Compute viscosity:
auto const viscosity = auto const viscosity =
liquid_phase.property(MaterialPropertyLib::PropertyType::viscosity) liquid_phase[MaterialPropertyLib::PropertyType::viscosity]
.template value<double>(vars, pos, t, dt); .template value<double>(vars, pos, t, dt);
pos.setIntegrationPoint(ip); pos.setIntegrationPoint(ip);
auto const permeability = auto const permeability =
MaterialPropertyLib::formEigenTensor<GlobalDim>( MaterialPropertyLib::formEigenTensor<GlobalDim>(
medium medium[MaterialPropertyLib::PropertyType::permeability].value(
->property(MaterialPropertyLib::PropertyType::permeability) vars, pos, t, dt));
.value(vars, pos, t, dt));
// Assemble Laplacian, K, and RHS by the gravitational term // Assemble Laplacian, K, and RHS by the gravitational term
LaplacianGravityVelocityCalculator::calculateLaplacianAndGravityTerm( LaplacianGravityVelocityCalculator::calculateLaplacianAndGravityTerm(
...@@ -228,18 +223,16 @@ LiquidFlowLocalAssembler<ShapeFunction, IntegrationMethod, GlobalDim>:: ...@@ -228,18 +223,16 @@ LiquidFlowLocalAssembler<ShapeFunction, IntegrationMethod, GlobalDim>::
ParameterLib::SpatialPosition pos; ParameterLib::SpatialPosition pos;
pos.setElementID(_element.getID()); pos.setElementID(_element.getID());
auto const& medium = _process_data.media_map->getMedium(_element.getID()); auto const& medium = *_process_data.media_map->getMedium(_element.getID());
MaterialPropertyLib::VariableArray vars; MaterialPropertyLib::VariableArray vars;
vars[static_cast<int>(MaterialPropertyLib::Variable::temperature)] = vars[static_cast<int>(MaterialPropertyLib::Variable::temperature)] =
medium medium[MaterialPropertyLib::PropertyType::reference_temperature]
->property(MaterialPropertyLib::PropertyType::reference_temperature)
.template value<double>(vars, pos, t, dt); .template value<double>(vars, pos, t, dt);
vars[static_cast<int>(MaterialPropertyLib::Variable::phase_pressure)] = vars[static_cast<int>(MaterialPropertyLib::Variable::phase_pressure)] =
std::numeric_limits<double>::quiet_NaN(); std::numeric_limits<double>::quiet_NaN();
auto const permeability = auto const permeability = MaterialPropertyLib::formEigenTensor<GlobalDim>(
MaterialPropertyLib::formEigenTensor<GlobalDim>( medium[MaterialPropertyLib::PropertyType::permeability].value(vars, pos,
medium->property(MaterialPropertyLib::PropertyType::permeability) t, dt));
.value(vars, pos, t, dt));
// Note: For Inclined 1D in 2D/3D or 2D element in 3D, the first item in // Note: For Inclined 1D in 2D/3D or 2D element in 3D, the first item in
// the assert must be changed to perm.rows() == _element->getDimension() // the assert must be changed to perm.rows() == _element->getDimension()
assert(permeability.rows() == GlobalDim || permeability.rows() == 1); assert(permeability.rows() == GlobalDim || permeability.rows() == 1);
...@@ -277,13 +270,12 @@ void LiquidFlowLocalAssembler<ShapeFunction, IntegrationMethod, GlobalDim>:: ...@@ -277,13 +270,12 @@ void LiquidFlowLocalAssembler<ShapeFunction, IntegrationMethod, GlobalDim>::
unsigned const n_integration_points = unsigned const n_integration_points =
_integration_method.getNumberOfPoints(); _integration_method.getNumberOfPoints();
auto const& medium = _process_data.media_map->getMedium(_element.getID()); auto const& medium = *_process_data.media_map->getMedium(_element.getID());
auto const& liquid_phase = medium->phase("AqueousLiquid"); auto const& liquid_phase = medium.phase("AqueousLiquid");
MaterialPropertyLib::VariableArray vars; MaterialPropertyLib::VariableArray vars;
vars[static_cast<int>(MaterialPropertyLib::Variable::temperature)] = vars[static_cast<int>(MaterialPropertyLib::Variable::temperature)] =
medium medium[MaterialPropertyLib::PropertyType::reference_temperature]
->property(MaterialPropertyLib::PropertyType::reference_temperature)
.template value<double>(vars, pos, t, dt); .template value<double>(vars, pos, t, dt);
for (unsigned ip = 0; ip < n_integration_points; ip++) for (unsigned ip = 0; ip < n_integration_points; ip++)
{ {
...@@ -295,18 +287,17 @@ void LiquidFlowLocalAssembler<ShapeFunction, IntegrationMethod, GlobalDim>:: ...@@ -295,18 +287,17 @@ void LiquidFlowLocalAssembler<ShapeFunction, IntegrationMethod, GlobalDim>::
// Compute density: // Compute density:
auto const fluid_density = auto const fluid_density =
liquid_phase.property(MaterialPropertyLib::PropertyType::density) liquid_phase[MaterialPropertyLib::PropertyType::density]
.template value<double>(vars, pos, t, dt); .template value<double>(vars, pos, t, dt);
// Compute viscosity: // Compute viscosity:
auto const viscosity = auto const viscosity =
liquid_phase.property(MaterialPropertyLib::PropertyType::viscosity) liquid_phase[MaterialPropertyLib::PropertyType::viscosity]
.template value<double>(vars, pos, t, dt); .template value<double>(vars, pos, t, dt);
auto const permeability = auto const permeability =
MaterialPropertyLib::formEigenTensor<GlobalDim>( MaterialPropertyLib::formEigenTensor<GlobalDim>(
medium medium[MaterialPropertyLib::PropertyType::permeability].value(
->property(MaterialPropertyLib::PropertyType::permeability) vars, pos, t, dt));
.value(vars, pos, t, dt));
LaplacianGravityVelocityCalculator::calculateVelocity( LaplacianGravityVelocityCalculator::calculateVelocity(
ip, local_p_vec, ip_data, permeability, viscosity, ip, local_p_vec, ip_data, permeability, viscosity,
fluid_density * _process_data.gravitational_acceleration, fluid_density * _process_data.gravitational_acceleration,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment