Skip to content

Commit

Permalink
[deactivation] enabled in the other processes
Browse files Browse the repository at this point in the history
  • Loading branch information
wenqing committed Dec 13, 2018
1 parent 551997f commit df3fac5
Show file tree
Hide file tree
Showing 5 changed files with 91 additions and 35 deletions.
27 changes: 19 additions & 8 deletions ProcessLib/LiquidFlow/LiquidFlowProcess.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -87,10 +87,16 @@ void LiquidFlowProcess::assembleConcreteProcess(const double t,

std::vector<std::reference_wrapper<NumLib::LocalToGlobalIndexMap>>
dof_table = {std::ref(*_local_to_global_index_map)};


const int process_id = 0;
ProcessLib::ProcessVariable const& pv = getProcessVariables(process_id)[0];

// Call global assembler for each local assembly item.
GlobalExecutor::executeMemberDereferenced(
GlobalExecutor::executeSelectedMemberDereferenced(
_global_assembler, &VectorMatrixAssembler::assemble, _local_assemblers,
dof_table, t, x, M, K, b, _coupled_solutions);
pv.getElementDeactivationFlags(), dof_table, t, x, M, K, b,
_coupled_solutions);
}

void LiquidFlowProcess::assembleWithJacobianConcreteProcess(
Expand All @@ -102,22 +108,27 @@ void LiquidFlowProcess::assembleWithJacobianConcreteProcess(

std::vector<std::reference_wrapper<NumLib::LocalToGlobalIndexMap>>
dof_table = {std::ref(*_local_to_global_index_map)};
const int process_id = 0;
ProcessLib::ProcessVariable const& pv = getProcessVariables(process_id)[0];

// Call global assembler for each local assembly item.
GlobalExecutor::executeMemberDereferenced(
GlobalExecutor::executeSelectedMemberDereferenced(
_global_assembler, &VectorMatrixAssembler::assembleWithJacobian,
_local_assemblers, dof_table, t, x, xdot, dxdot_dx, dx_dx, M, K, b, Jac,
_coupled_solutions);
_local_assemblers, pv.getElementDeactivationFlags(), dof_table, t,
x, xdot, dxdot_dx, dx_dx, M, K, b, Jac, _coupled_solutions);
}

void LiquidFlowProcess::computeSecondaryVariableConcrete(const double t,
GlobalVector const& x,
int const process_id)
{
ProcessLib::ProcessVariable const& pv = getProcessVariables(process_id)[0];

DBUG("Compute the velocity for LiquidFlowProcess.");
GlobalExecutor::executeMemberOnDereferenced(
GlobalExecutor::executeSelectedMemberOnDereferenced(
&LiquidFlowLocalAssemblerInterface::computeSecondaryVariable,
_local_assemblers, getDOFTable(process_id), t, x,
_coupled_solutions);
_local_assemblers, pv.getElementDeactivationFlags(),
getDOFTable(process_id), t, x, _coupled_solutions);
}

} // end of namespace
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,10 +74,15 @@ void RichardsComponentTransportProcess::assembleConcreteProcess(

std::vector<std::reference_wrapper<NumLib::LocalToGlobalIndexMap>>
dof_table = {std::ref(*_local_to_global_index_map)};
const int process_id =
_use_monolithic_scheme ? 0 : _coupled_solutions->process_id;
ProcessLib::ProcessVariable const& pv = getProcessVariables(process_id)[0];

// Call global assembler for each local assembly item.
GlobalExecutor::executeMemberDereferenced(
GlobalExecutor::executeSelectedMemberDereferenced(
_global_assembler, &VectorMatrixAssembler::assemble, _local_assemblers,
dof_table, t, x, M, K, b, _coupled_solutions);
pv.getElementDeactivationFlags(), dof_table, t, x, M, K, b,
_coupled_solutions);
}

void RichardsComponentTransportProcess::assembleWithJacobianConcreteProcess(
Expand All @@ -88,12 +93,16 @@ void RichardsComponentTransportProcess::assembleWithJacobianConcreteProcess(
DBUG("AssembleWithJacobian RichardsComponentTransportProcess.");

std::vector<std::reference_wrapper<NumLib::LocalToGlobalIndexMap>>
dof_table = {std::ref(*_local_to_global_index_map)};
dof_table = {std::ref(*_local_to_global_index_map)};
const int process_id =
_use_monolithic_scheme ? 0 : _coupled_solutions->process_id;
ProcessLib::ProcessVariable const& pv = getProcessVariables(process_id)[0];

// Call global assembler for each local assembly item.
GlobalExecutor::executeMemberDereferenced(
GlobalExecutor::executeSelectedMemberDereferenced(
_global_assembler, &VectorMatrixAssembler::assembleWithJacobian,
_local_assemblers, dof_table, t, x, xdot, dxdot_dx,
dx_dx, M, K, b, Jac, _coupled_solutions);
_local_assemblers, pv.getElementDeactivationFlags(), dof_table, t, x,
xdot, dxdot_dx, dx_dx, M, K, b, Jac, _coupled_solutions);
}

} // namespace RichardsComponentTransport
Expand Down
17 changes: 12 additions & 5 deletions ProcessLib/RichardsFlow/RichardsFlowProcess.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -74,10 +74,14 @@ void RichardsFlowProcess::assembleConcreteProcess(

std::vector<std::reference_wrapper<NumLib::LocalToGlobalIndexMap>>
dof_table = {std::ref(*_local_to_global_index_map)};
const int process_id = 0;
ProcessLib::ProcessVariable const& pv = getProcessVariables(process_id)[0];

// Call global assembler for each local assembly item.
GlobalExecutor::executeMemberDereferenced(
GlobalExecutor::executeSelectedMemberDereferenced(
_global_assembler, &VectorMatrixAssembler::assemble, _local_assemblers,
dof_table, t, x, M, K, b, _coupled_solutions);
pv.getElementDeactivationFlags(), dof_table, t, x, M, K, b,
_coupled_solutions);
}

void RichardsFlowProcess::assembleWithJacobianConcreteProcess(
Expand All @@ -89,11 +93,14 @@ void RichardsFlowProcess::assembleWithJacobianConcreteProcess(

std::vector<std::reference_wrapper<NumLib::LocalToGlobalIndexMap>>
dof_table = {std::ref(*_local_to_global_index_map)};
const int process_id = 0;
ProcessLib::ProcessVariable const& pv = getProcessVariables(process_id)[0];

// Call global assembler for each local assembly item.
GlobalExecutor::executeMemberDereferenced(
GlobalExecutor::executeSelectedMemberDereferenced(
_global_assembler, &VectorMatrixAssembler::assembleWithJacobian,
_local_assemblers, dof_table, t, x, xdot, dxdot_dx,
dx_dx, M, K, b, Jac, _coupled_solutions);
_local_assemblers, pv.getElementDeactivationFlags(), dof_table, t, x,
xdot, dxdot_dx, dx_dx, M, K, b, Jac, _coupled_solutions);
}

} // namespace RichardsFlow
Expand Down
42 changes: 31 additions & 11 deletions ProcessLib/RichardsMechanics/RichardsMechanicsProcess.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -238,10 +238,15 @@ void RichardsMechanicsProcess<DisplacementDim>::assembleConcreteProcess(

std::vector<std::reference_wrapper<NumLib::LocalToGlobalIndexMap>>
dof_table = {std::ref(*_local_to_global_index_map)};
const int process_id =
_use_monolithic_scheme ? 0 : _coupled_solutions->process_id;
ProcessLib::ProcessVariable const& pv = getProcessVariables(process_id)[0];

// Call global assembler for each local assembly item.
GlobalExecutor::executeMemberDereferenced(
GlobalExecutor::executeSelectedMemberDereferenced(
_global_assembler, &VectorMatrixAssembler::assemble, _local_assemblers,
dof_table, t, x, M, K, b, _coupled_solutions);
pv.getElementDeactivationFlags(), dof_table, t, x, M, K, b,
_coupled_solutions);
}

template <int DisplacementDim>
Expand Down Expand Up @@ -282,10 +287,14 @@ void RichardsMechanicsProcess<DisplacementDim>::
dof_tables.emplace_back(*_local_to_global_index_map);
}

GlobalExecutor::executeMemberDereferenced(
const int process_id =
_use_monolithic_scheme ? 0 : _coupled_solutions->process_id;
ProcessLib::ProcessVariable const& pv = getProcessVariables(process_id)[0];

GlobalExecutor::executeSelectedMemberDereferenced(
_global_assembler, &VectorMatrixAssembler::assembleWithJacobian,
_local_assemblers, dof_tables, t, x, xdot, dxdot_dx, dx_dx, M, K, b,
Jac, _coupled_solutions);
_local_assemblers, pv.getElementDeactivationFlags(), dof_tables, t, x,
xdot, dxdot_dx, dx_dx, M, K, b, Jac, _coupled_solutions);

auto copyRhs = [&](int const variable_id, auto& output_vector) {
if (_use_monolithic_scheme)
Expand Down Expand Up @@ -322,9 +331,14 @@ void RichardsMechanicsProcess<DisplacementDim>::preTimestepConcreteProcess(
_process_data.t = t;

if (hasMechanicalProcess(process_id))
GlobalExecutor::executeMemberOnDereferenced(
{
ProcessLib::ProcessVariable const& pv =
getProcessVariables(process_id)[0];
GlobalExecutor::executeSelectedMemberOnDereferenced(
&LocalAssemblerInterface::preTimestep, _local_assemblers,
*_local_to_global_index_map, x, t, dt);
pv.getElementDeactivationFlags(), *_local_to_global_index_map, x,
t, dt);
}
}

template <int DisplacementDim>
Expand All @@ -339,10 +353,13 @@ void RichardsMechanicsProcess<
}

DBUG("PostNonLinearSolver RichardsMechanicsProcess.");
ProcessLib::ProcessVariable const& pv = getProcessVariables(process_id)[0];

// Calculate strain, stress or other internal variables of mechanics.
GlobalExecutor::executeMemberOnDereferenced(
GlobalExecutor::executeSelectedMemberOnDereferenced(
&LocalAssemblerInterface::postNonLinearSolver, _local_assemblers,
getDOFTable(process_id), x, t, _use_monolithic_scheme);
pv.getElementDeactivationFlags(), getDOFTable(process_id), x, t,
_use_monolithic_scheme);
}

template <int DisplacementDim>
Expand All @@ -352,9 +369,12 @@ void RichardsMechanicsProcess<
int const process_id)
{
DBUG("Compute the secondary variables for RichardsMechanicsProcess.");
GlobalExecutor::executeMemberOnDereferenced(
ProcessLib::ProcessVariable const& pv = getProcessVariables(process_id)[0];

GlobalExecutor::executeSelectedMemberOnDereferenced(
&LocalAssemblerInterface::computeSecondaryVariable, _local_assemblers,
getDOFTable(process_id), t, x, _coupled_solutions);
pv.getElementDeactivationFlags(), getDOFTable(process_id), t, x,
_coupled_solutions);
}

template <int DisplacementDim>
Expand Down
19 changes: 14 additions & 5 deletions ProcessLib/TES/TESProcess.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -234,10 +234,15 @@ void TESProcess::assembleConcreteProcess(const double t,

std::vector<std::reference_wrapper<NumLib::LocalToGlobalIndexMap>>
dof_table = {std::ref(*_local_to_global_index_map)};
const int process_id =
_use_monolithic_scheme ? 0 : _coupled_solutions->process_id;
ProcessLib::ProcessVariable const& pv = getProcessVariables(process_id)[0];

// Call global assembler for each local assembly item.
GlobalExecutor::executeMemberDereferenced(
GlobalExecutor::executeSelectedMemberDereferenced(
_global_assembler, &VectorMatrixAssembler::assemble, _local_assemblers,
dof_table, t, x, M, K, b, _coupled_solutions);
pv.getElementDeactivationFlags(), dof_table, t, x, M, K, b,
_coupled_solutions);
}

void TESProcess::assembleWithJacobianConcreteProcess(
Expand All @@ -247,11 +252,15 @@ void TESProcess::assembleWithJacobianConcreteProcess(
{
std::vector<std::reference_wrapper<NumLib::LocalToGlobalIndexMap>>
dof_table = {std::ref(*_local_to_global_index_map)};
const int process_id =
_use_monolithic_scheme ? 0 : _coupled_solutions->process_id;
ProcessLib::ProcessVariable const& pv = getProcessVariables(process_id)[0];

// Call global assembler for each local assembly item.
GlobalExecutor::executeMemberDereferenced(
GlobalExecutor::executeSelectedMemberDereferenced(
_global_assembler, &VectorMatrixAssembler::assembleWithJacobian,
_local_assemblers, dof_table, t, x, xdot, dxdot_dx,
dx_dx, M, K, b, Jac, _coupled_solutions);
_local_assemblers, pv.getElementDeactivationFlags(), dof_table, t, x,
xdot, dxdot_dx, dx_dx, M, K, b, Jac, _coupled_solutions);
}

void TESProcess::preTimestepConcreteProcess(GlobalVector const& x,
Expand Down

0 comments on commit df3fac5

Please sign in to comment.