From bccae2641d835e4474131b9875f910e7da16acfa Mon Sep 17 00:00:00 2001 From: Wenqing Wang <wenqing.wang@ufz.de> Date: Mon, 10 Dec 2018 17:02:51 +0100 Subject: [PATCH] [deactivation] enabled in H2 processes --- .../ThermalTwoPhaseFlowWithPPProcess.cpp | 25 ++++++++++++------ .../TwoPhaseFlowWithPPProcess.cpp | 17 ++++++++---- .../TwoPhaseFlowWithPrhoProcess.cpp | 26 +++++++++++++------ 3 files changed, 47 insertions(+), 21 deletions(-) diff --git a/ProcessLib/ThermalTwoPhaseFlowWithPP/ThermalTwoPhaseFlowWithPPProcess.cpp b/ProcessLib/ThermalTwoPhaseFlowWithPP/ThermalTwoPhaseFlowWithPPProcess.cpp index 41fa863e118..88ace5986d4 100644 --- a/ProcessLib/ThermalTwoPhaseFlowWithPP/ThermalTwoPhaseFlowWithPPProcess.cpp +++ b/ProcessLib/ThermalTwoPhaseFlowWithPP/ThermalTwoPhaseFlowWithPPProcess.cpp @@ -83,10 +83,14 @@ void ThermalTwoPhaseFlowWithPPProcess::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 ThermalTwoPhaseFlowWithPPProcess::assembleWithJacobianConcreteProcess( @@ -98,21 +102,26 @@ void ThermalTwoPhaseFlowWithPPProcess::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 ThermalTwoPhaseFlowWithPPProcess::preTimestepConcreteProcess( GlobalVector const& x, double const t, double const delta_t, - const int /*process_id*/) + const int process_id) { DBUG("PreTimestep ThermalTwoPhaseFlowWithPPProcess."); - GlobalExecutor::executeMemberOnDereferenced( + ProcessLib::ProcessVariable const& pv = getProcessVariables(process_id)[0]; + GlobalExecutor::executeSelectedMemberOnDereferenced( &LocalAssemblerInterface::preTimestep, _local_assemblers, - *_local_to_global_index_map, x, t, delta_t); + pv.getElementDeactivationFlags(), *_local_to_global_index_map, x, t, + delta_t); } } // end of namespace diff --git a/ProcessLib/TwoPhaseFlowWithPP/TwoPhaseFlowWithPPProcess.cpp b/ProcessLib/TwoPhaseFlowWithPP/TwoPhaseFlowWithPPProcess.cpp index c6e4be37e09..3a75bf8f365 100644 --- a/ProcessLib/TwoPhaseFlowWithPP/TwoPhaseFlowWithPPProcess.cpp +++ b/ProcessLib/TwoPhaseFlowWithPP/TwoPhaseFlowWithPPProcess.cpp @@ -80,10 +80,14 @@ void TwoPhaseFlowWithPPProcess::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 TwoPhaseFlowWithPPProcess::assembleWithJacobianConcreteProcess( @@ -95,11 +99,14 @@ void TwoPhaseFlowWithPPProcess::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); } } // end of namespace diff --git a/ProcessLib/TwoPhaseFlowWithPrho/TwoPhaseFlowWithPrhoProcess.cpp b/ProcessLib/TwoPhaseFlowWithPrho/TwoPhaseFlowWithPrhoProcess.cpp index 9e7309706bc..ae7ebc46733 100644 --- a/ProcessLib/TwoPhaseFlowWithPrho/TwoPhaseFlowWithPrhoProcess.cpp +++ b/ProcessLib/TwoPhaseFlowWithPrho/TwoPhaseFlowWithPrhoProcess.cpp @@ -80,10 +80,14 @@ void TwoPhaseFlowWithPrhoProcess::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 TwoPhaseFlowWithPrhoProcess::assembleWithJacobianConcreteProcess( @@ -95,21 +99,27 @@ void TwoPhaseFlowWithPrhoProcess::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 TwoPhaseFlowWithPrhoProcess::preTimestepConcreteProcess( GlobalVector const& x, double const t, double const dt, - const int /*process_id*/) + const int process_id) { DBUG("PreTimestep TwoPhaseFlowWithPrhoProcess."); - 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); } } // end of namespace -- GitLab