Skip to content
Snippets Groups Projects
Commit 463df5ec authored by wenqing's avatar wenqing
Browse files

[HM] Removed the usage of _use_monolithic_scheme

parent 071980e7
No related branches found
No related tags found
No related merge requests found
......@@ -84,7 +84,7 @@ HydroMechanicsProcess<DisplacementDim>::getMatrixSpecifications(
{
// For the monolithic scheme or the M process (deformation) in the staggered
// scheme.
if (_use_monolithic_scheme || process_id == 1)
if (_process_data.isMonolithicSchemeUsed() || process_id == 1)
{
auto const& l = *_local_to_global_index_map;
return {l.dofSizeWithoutGhosts(), l.dofSizeWithoutGhosts(),
......@@ -119,7 +119,7 @@ void HydroMechanicsProcess<DisplacementDim>::constructDofTable()
// by location order is needed for output
NumLib::ComponentOrder::BY_LOCATION);
if (_use_monolithic_scheme)
if (_process_data.isMonolithicSchemeUsed())
{
// For pressure, which is the first
std::vector<MeshLib::MeshSubset> all_mesh_subsets{
......@@ -260,7 +260,7 @@ void HydroMechanicsProcess<DisplacementDim>::initializeConcreteProcess(
template <int DisplacementDim>
void HydroMechanicsProcess<DisplacementDim>::initializeBoundaryConditions()
{
if (_use_monolithic_scheme)
if (_process_data.isMonolithicSchemeUsed())
{
const int process_id_of_hydromechanics = 0;
initializeProcessBoundaryConditionsAndSourceTerms(
......@@ -315,7 +315,8 @@ void HydroMechanicsProcess<DisplacementDim>::
std::vector<std::reference_wrapper<NumLib::LocalToGlobalIndexMap>>
dof_tables;
// For the monolithic scheme
if (_use_monolithic_scheme)
bool const use_monolithic_scheme = _process_data.isMonolithicSchemeUsed();
if (use_monolithic_scheme)
{
DBUG(
"Assemble the Jacobian of HydroMechanics for the monolithic "
......@@ -350,7 +351,7 @@ void HydroMechanicsProcess<DisplacementDim>::
auto copyRhs = [&](int const variable_id, auto& output_vector)
{
if (_use_monolithic_scheme)
if (use_monolithic_scheme)
{
transformVariableFromGlobalVector(b, variable_id, dof_tables[0],
output_vector,
......@@ -363,11 +364,11 @@ void HydroMechanicsProcess<DisplacementDim>::
std::negate<double>());
}
};
if (_use_monolithic_scheme || process_id == 0)
if (use_monolithic_scheme || process_id == 0)
{
copyRhs(0, *_hydraulic_flow);
}
if (_use_monolithic_scheme || process_id == 1)
if (use_monolithic_scheme || process_id == 1)
{
copyRhs(1, *_nodal_forces);
}
......@@ -415,7 +416,7 @@ void HydroMechanicsProcess<DisplacementDim>::postTimestepConcreteProcess(
GlobalExecutor::executeSelectedMemberOnDereferenced(
&LocalAssemblerIF::postTimestep, _local_assemblers,
pv.getActiveElementIDs(), dof_tables, x, x_dot, t, dt,
_use_monolithic_scheme, process_id);
_process_data.isMonolithicSchemeUsed(), process_id);
}
template <int DisplacementDim>
......@@ -429,7 +430,7 @@ void HydroMechanicsProcess<DisplacementDim>::postNonLinearSolverConcreteProcess(
GlobalExecutor::executeSelectedMemberOnDereferenced(
&LocalAssemblerIF::postNonLinearSolver, _local_assemblers,
pv.getActiveElementIDs(), getDOFTable(process_id), x, xdot, t, dt,
_use_monolithic_scheme, process_id);
_process_data.isMonolithicSchemeUsed(), process_id);
}
template <int DisplacementDim>
......@@ -449,7 +450,7 @@ void HydroMechanicsProcess<DisplacementDim>::
GlobalExecutor::executeSelectedMemberOnDereferenced(
&LocalAssemblerIF::setInitialConditions, _local_assemblers,
pv.getActiveElementIDs(), getDOFTable(process_id), *x[process_id], t,
_use_monolithic_scheme, process_id);
_process_data.isMonolithicSchemeUsed(), process_id);
}
template <int DisplacementDim>
......
......@@ -107,6 +107,11 @@ private:
NumLib::LocalToGlobalIndexMap const& getDOFTable(
const int process_id) const override;
bool isMonolithicSchemeUsed() const override
{
return _process_data.isMonolithicSchemeUsed();
}
private:
std::vector<MeshLib::Node*> _base_nodes;
std::unique_ptr<MeshLib::MeshSubset const> _mesh_subset_base_nodes;
......@@ -141,7 +146,7 @@ private:
/// process has process_id == 1 in the staggered scheme.
bool hasMechanicalProcess(int const process_id) const
{
return _use_monolithic_scheme || process_id == 1;
return _process_data.isMonolithicSchemeUsed() || process_id == 1;
}
MeshLib::PropertyVector<double>* _nodal_forces = nullptr;
......
......@@ -100,6 +100,11 @@ struct HydroMechanicsProcessData
/// with elements in the order k_xx, k_yy, k_zz, k_xy, k_yz, k_xz
MeshLib::PropertyVector<double>* permeability = nullptr;
bool isMonolithicSchemeUsed() const
{
return std::holds_alternative<Monolithic>(coupling_scheme);
}
EIGEN_MAKE_ALIGNED_OPERATOR_NEW;
};
......
......@@ -106,7 +106,10 @@ public:
void updateDeactivatedSubdomains(double const time, const int process_id);
bool isMonolithicSchemeUsed() const { return _use_monolithic_scheme; }
virtual bool isMonolithicSchemeUsed() const
{
return _use_monolithic_scheme;
}
virtual void setCoupledTermForTheStaggeredSchemeToLocalAssemblers(
int const /*process_id*/)
{
......
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