From e8ae2db13dbdad77b8c569a7dc8bc2f3d0ddd968 Mon Sep 17 00:00:00 2001 From: Wenqing Wang <wenqing.wang@ufz.de> Date: Mon, 21 Aug 2017 10:38:54 +0200 Subject: [PATCH] [Coupling] Removed the argument of coupling_term from the member functions of process classes --- .../ComponentTransportProcess.cpp | 10 +++--- .../ComponentTransportProcess.h | 5 ++- .../GroundwaterFlowProcess.cpp | 11 +++--- .../GroundwaterFlow/GroundwaterFlowProcess.h | 7 ++-- ProcessLib/HT/HTProcess.cpp | 11 +++--- ProcessLib/HT/HTProcess.h | 7 ++-- .../HeatConduction/HeatConductionProcess.cpp | 17 ++++----- .../HeatConduction/HeatConductionProcess.h | 10 ++---- .../HydroMechanicsProcess-impl.h | 9 +++-- .../HydroMechanics/HydroMechanicsProcess.h | 5 ++- .../HydroMechanics/HydroMechanicsProcess.cpp | 6 ++-- .../HydroMechanics/HydroMechanicsProcess.h | 15 +++----- .../SmallDeformationProcess.h | 11 +++--- ProcessLib/LiquidFlow/LiquidFlowProcess.cpp | 15 ++++---- ProcessLib/LiquidFlow/LiquidFlowProcess.h | 9 ++--- ProcessLib/PhaseField/PhaseFieldProcess.h | 9 +++-- .../RichardsFlow/RichardsFlowProcess.cpp | 16 ++++----- ProcessLib/RichardsFlow/RichardsFlowProcess.h | 8 ++--- .../SmallDeformationProcess-impl.h | 9 +++-- .../SmallDeformationProcess.h | 5 ++- ProcessLib/TES/TESProcess.cpp | 11 +++--- ProcessLib/TES/TESProcess.h | 7 ++-- .../ThermalTwoPhaseFlowWithPPProcess.cpp | 10 +++--- .../ThermalTwoPhaseFlowWithPPProcess.h | 5 ++- .../ThermoMechanics/ThermoMechanicsProcess.h | 9 +++-- .../TwoPhaseFlowWithPPProcess.cpp | 11 +++--- .../TwoPhaseFlowWithPPProcess.h | 7 ++-- .../TwoPhaseFlowWithPrhoProcess.cpp | 11 +++--- .../TwoPhaseFlowWithPrhoProcess.h | 6 ++-- ProcessLib/UncoupledProcessesTimeLoop.cpp | 36 +++++++++---------- 30 files changed, 122 insertions(+), 186 deletions(-) diff --git a/ProcessLib/ComponentTransport/ComponentTransportProcess.cpp b/ProcessLib/ComponentTransport/ComponentTransportProcess.cpp index 40826eaa290..f7fca31e3c1 100644 --- a/ProcessLib/ComponentTransport/ComponentTransportProcess.cpp +++ b/ProcessLib/ComponentTransport/ComponentTransportProcess.cpp @@ -56,22 +56,20 @@ void ComponentTransportProcess::assembleConcreteProcess( GlobalVector const& x, GlobalMatrix& M, GlobalMatrix& K, - GlobalVector& b, - StaggeredCouplingTerm const& coupling_term) + GlobalVector& b) { DBUG("Assemble ComponentTransportProcess."); // Call global assembler for each local assembly item. GlobalExecutor::executeMemberDereferenced( _global_assembler, &VectorMatrixAssembler::assemble, _local_assemblers, - *_local_to_global_index_map, t, x, M, K, b, coupling_term); + *_local_to_global_index_map, t, x, M, K, b, *_coupling_term.lock()); } void ComponentTransportProcess::assembleWithJacobianConcreteProcess( const double t, GlobalVector const& x, GlobalVector const& xdot, const double dxdot_dx, const double dx_dx, GlobalMatrix& M, GlobalMatrix& K, - GlobalVector& b, GlobalMatrix& Jac, - StaggeredCouplingTerm const& coupling_term) + GlobalVector& b, GlobalMatrix& Jac) { DBUG("AssembleWithJacobian ComponentTransportProcess."); @@ -79,7 +77,7 @@ void ComponentTransportProcess::assembleWithJacobianConcreteProcess( GlobalExecutor::executeMemberDereferenced( _global_assembler, &VectorMatrixAssembler::assembleWithJacobian, _local_assemblers, *_local_to_global_index_map, t, x, xdot, dxdot_dx, - dx_dx, M, K, b, Jac, coupling_term); + dx_dx, M, K, b, Jac, *_coupling_term.lock()); } } // namespace ComponentTransport diff --git a/ProcessLib/ComponentTransport/ComponentTransportProcess.h b/ProcessLib/ComponentTransport/ComponentTransportProcess.h index 84437c0f485..20f7dc87c0b 100644 --- a/ProcessLib/ComponentTransport/ComponentTransportProcess.h +++ b/ProcessLib/ComponentTransport/ComponentTransportProcess.h @@ -103,13 +103,12 @@ private: void assembleConcreteProcess( const double t, GlobalVector const& x, GlobalMatrix& M, GlobalMatrix& K, - GlobalVector& b, StaggeredCouplingTerm const& coupling_term) override; + GlobalVector& b) override; void assembleWithJacobianConcreteProcess( const double t, GlobalVector const& x, GlobalVector const& xdot, const double dxdot_dx, const double dx_dx, GlobalMatrix& M, - GlobalMatrix& K, GlobalVector& b, GlobalMatrix& Jac, - StaggeredCouplingTerm const& coupling_term) override; + GlobalMatrix& K, GlobalVector& b, GlobalMatrix& Jac) override; ComponentTransportProcessData _process_data; diff --git a/ProcessLib/GroundwaterFlow/GroundwaterFlowProcess.cpp b/ProcessLib/GroundwaterFlow/GroundwaterFlowProcess.cpp index 01055237649..43a2c3cd2bc 100644 --- a/ProcessLib/GroundwaterFlow/GroundwaterFlowProcess.cpp +++ b/ProcessLib/GroundwaterFlow/GroundwaterFlowProcess.cpp @@ -61,23 +61,20 @@ void GroundwaterFlowProcess::assembleConcreteProcess(const double t, GlobalVector const& x, GlobalMatrix& M, GlobalMatrix& K, - GlobalVector& b, - StaggeredCouplingTerm - const& coupling_term) + GlobalVector& b) { DBUG("Assemble GroundwaterFlowProcess."); // Call global assembler for each local assembly item. GlobalExecutor::executeMemberDereferenced( _global_assembler, &VectorMatrixAssembler::assemble, _local_assemblers, - *_local_to_global_index_map, t, x, M, K, b, coupling_term); + *_local_to_global_index_map, t, x, M, K, b, *_coupling_term.lock()); } void GroundwaterFlowProcess::assembleWithJacobianConcreteProcess( const double t, GlobalVector const& x, GlobalVector const& xdot, const double dxdot_dx, const double dx_dx, GlobalMatrix& M, GlobalMatrix& K, - GlobalVector& b, GlobalMatrix& Jac, - StaggeredCouplingTerm const& coupling_term) + GlobalVector& b, GlobalMatrix& Jac) { DBUG("AssembleWithJacobian GroundwaterFlowProcess."); @@ -85,7 +82,7 @@ void GroundwaterFlowProcess::assembleWithJacobianConcreteProcess( GlobalExecutor::executeMemberDereferenced( _global_assembler, &VectorMatrixAssembler::assembleWithJacobian, _local_assemblers, *_local_to_global_index_map, t, x, xdot, dxdot_dx, - dx_dx, M, K, b, Jac, coupling_term); + dx_dx, M, K, b, Jac, *_coupling_term.lock()); } } // namespace GroundwaterFlow diff --git a/ProcessLib/GroundwaterFlow/GroundwaterFlowProcess.h b/ProcessLib/GroundwaterFlow/GroundwaterFlowProcess.h index 43a783e95eb..dad280e9418 100644 --- a/ProcessLib/GroundwaterFlow/GroundwaterFlowProcess.h +++ b/ProcessLib/GroundwaterFlow/GroundwaterFlowProcess.h @@ -95,15 +95,12 @@ private: void assembleConcreteProcess(const double t, GlobalVector const& x, GlobalMatrix& M, GlobalMatrix& K, - GlobalVector& b, - StaggeredCouplingTerm const& coupling_term - ) override; + GlobalVector& b) override; void assembleWithJacobianConcreteProcess( const double t, GlobalVector const& x, GlobalVector const& xdot, const double dxdot_dx, const double dx_dx, GlobalMatrix& M, - GlobalMatrix& K, GlobalVector& b, GlobalMatrix& Jac, - StaggeredCouplingTerm const& coupling_term) override; + GlobalMatrix& K, GlobalVector& b, GlobalMatrix& Jac) override; GroundwaterFlowProcessData _process_data; diff --git a/ProcessLib/HT/HTProcess.cpp b/ProcessLib/HT/HTProcess.cpp index 8da71f612fd..d17adcfe99d 100644 --- a/ProcessLib/HT/HTProcess.cpp +++ b/ProcessLib/HT/HTProcess.cpp @@ -55,23 +55,20 @@ void HTProcess::assembleConcreteProcess(const double t, GlobalVector const& x, GlobalMatrix& M, GlobalMatrix& K, - GlobalVector& b, - StaggeredCouplingTerm const& - coupling_term) + GlobalVector& b) { DBUG("Assemble HTProcess."); // Call global assembler for each local assembly item. GlobalExecutor::executeMemberDereferenced( _global_assembler, &VectorMatrixAssembler::assemble, _local_assemblers, - *_local_to_global_index_map, t, x, M, K, b, coupling_term); + *_local_to_global_index_map, t, x, M, K, b, *_coupling_term.lock()); } void HTProcess::assembleWithJacobianConcreteProcess( const double t, GlobalVector const& x, GlobalVector const& xdot, const double dxdot_dx, const double dx_dx, GlobalMatrix& M, GlobalMatrix& K, - GlobalVector& b, GlobalMatrix& Jac, - StaggeredCouplingTerm const& coupling_term) + GlobalVector& b, GlobalMatrix& Jac) { DBUG("AssembleWithJacobian HTProcess."); @@ -79,7 +76,7 @@ void HTProcess::assembleWithJacobianConcreteProcess( GlobalExecutor::executeMemberDereferenced( _global_assembler, &VectorMatrixAssembler::assembleWithJacobian, _local_assemblers, *_local_to_global_index_map, t, x, xdot, dxdot_dx, - dx_dx, M, K, b, Jac, coupling_term); + dx_dx, M, K, b, Jac, *_coupling_term.lock()); } } // namespace HT diff --git a/ProcessLib/HT/HTProcess.h b/ProcessLib/HT/HTProcess.h index a5048e295cd..355dba18b5b 100644 --- a/ProcessLib/HT/HTProcess.h +++ b/ProcessLib/HT/HTProcess.h @@ -65,15 +65,12 @@ private: void assembleConcreteProcess(const double t, GlobalVector const& x, GlobalMatrix& M, GlobalMatrix& K, - GlobalVector& b, - StaggeredCouplingTerm const& coupling_term - ) override; + GlobalVector& b) override; void assembleWithJacobianConcreteProcess( const double t, GlobalVector const& x, GlobalVector const& xdot, const double dxdot_dx, const double dx_dx, GlobalMatrix& M, - GlobalMatrix& K, GlobalVector& b, GlobalMatrix& Jac, - StaggeredCouplingTerm const& coupling_term) override; + GlobalMatrix& K, GlobalVector& b, GlobalMatrix& Jac) override; HTProcessData _process_data; diff --git a/ProcessLib/HeatConduction/HeatConductionProcess.cpp b/ProcessLib/HeatConduction/HeatConductionProcess.cpp index b2e8e3a4742..049fabc0122 100644 --- a/ProcessLib/HeatConduction/HeatConductionProcess.cpp +++ b/ProcessLib/HeatConduction/HeatConductionProcess.cpp @@ -88,23 +88,20 @@ void HeatConductionProcess::assembleConcreteProcess(const double t, GlobalVector const& x, GlobalMatrix& M, GlobalMatrix& K, - GlobalVector& b, - StaggeredCouplingTerm - const& coupling_term) + GlobalVector& b) { DBUG("Assemble HeatConductionProcess."); // Call global assembler for each local assembly item. GlobalExecutor::executeMemberDereferenced( _global_assembler, &VectorMatrixAssembler::assemble, _local_assemblers, - *_local_to_global_index_map, t, x, M, K, b, coupling_term); + *_local_to_global_index_map, t, x, M, K, b, *_coupling_term.lock()); } void HeatConductionProcess::assembleWithJacobianConcreteProcess( const double t, GlobalVector const& x, GlobalVector const& xdot, const double dxdot_dx, const double dx_dx, GlobalMatrix& M, GlobalMatrix& K, - GlobalVector& b, GlobalMatrix& Jac, - StaggeredCouplingTerm const& coupling_term) + GlobalVector& b, GlobalMatrix& Jac) { DBUG("AssembleWithJacobian HeatConductionProcess."); @@ -112,17 +109,17 @@ void HeatConductionProcess::assembleWithJacobianConcreteProcess( GlobalExecutor::executeMemberDereferenced( _global_assembler, &VectorMatrixAssembler::assembleWithJacobian, _local_assemblers, *_local_to_global_index_map, t, x, xdot, dxdot_dx, - dx_dx, M, K, b, Jac, coupling_term); + dx_dx, M, K, b, Jac, *_coupling_term.lock()); } void HeatConductionProcess::computeSecondaryVariableConcrete( - const double t, GlobalVector const& x, - StaggeredCouplingTerm const& coupled_term) + const double t, GlobalVector const& x) { DBUG("Compute heat flux for HeatConductionProcess."); GlobalExecutor::executeMemberOnDereferenced( &HeatConductionLocalAssemblerInterface::computeSecondaryVariable, - _local_assemblers, *_local_to_global_index_map, t, x, coupled_term); + _local_assemblers, *_local_to_global_index_map, t, x, + *_coupling_term.lock()); } } // namespace HeatConduction diff --git a/ProcessLib/HeatConduction/HeatConductionProcess.h b/ProcessLib/HeatConduction/HeatConductionProcess.h index 55d2d7c151a..60e39b8238c 100644 --- a/ProcessLib/HeatConduction/HeatConductionProcess.h +++ b/ProcessLib/HeatConduction/HeatConductionProcess.h @@ -39,8 +39,7 @@ public: bool isLinear() const override { return true; } void computeSecondaryVariableConcrete( - double const t, GlobalVector const& x, - StaggeredCouplingTerm const& coupled_term) override; + double const t, GlobalVector const& x) override; void preTimestepConcreteProcess(GlobalVector const& x, const double t, const double delta_t) override; @@ -59,15 +58,12 @@ private: void assembleConcreteProcess(const double t, GlobalVector const& x, GlobalMatrix& M, GlobalMatrix& K, - GlobalVector& b, - StaggeredCouplingTerm const& coupling_term - ) override; + GlobalVector& b) override; void assembleWithJacobianConcreteProcess( const double t, GlobalVector const& x, GlobalVector const& xdot, const double dxdot_dx, const double dx_dx, GlobalMatrix& M, - GlobalMatrix& K, GlobalVector& b, GlobalMatrix& Jac, - StaggeredCouplingTerm const& coupling_term) override; + GlobalMatrix& K, GlobalVector& b, GlobalMatrix& Jac) override; HeatConductionProcessData _process_data; diff --git a/ProcessLib/HydroMechanics/HydroMechanicsProcess-impl.h b/ProcessLib/HydroMechanics/HydroMechanicsProcess-impl.h index 0a3d7dae321..d9ec27acec1 100644 --- a/ProcessLib/HydroMechanics/HydroMechanicsProcess-impl.h +++ b/ProcessLib/HydroMechanics/HydroMechanicsProcess-impl.h @@ -185,14 +185,14 @@ void HydroMechanicsProcess<DisplacementDim>::initializeConcreteProcess( template <int DisplacementDim> void HydroMechanicsProcess<DisplacementDim>::assembleConcreteProcess( const double t, GlobalVector const& x, GlobalMatrix& M, GlobalMatrix& K, - GlobalVector& b, StaggeredCouplingTerm const& coupling_term) + GlobalVector& b) { DBUG("Assemble HydroMechanicsProcess."); // Call global assembler for each local assembly item. GlobalExecutor::executeMemberDereferenced( _global_assembler, &VectorMatrixAssembler::assemble, _local_assemblers, - *_local_to_global_index_map, t, x, M, K, b, coupling_term); + *_local_to_global_index_map, t, x, M, K, b, *_coupling_term.lock()); } template <int DisplacementDim> @@ -200,8 +200,7 @@ void HydroMechanicsProcess<DisplacementDim>:: assembleWithJacobianConcreteProcess( const double t, GlobalVector const& x, GlobalVector const& xdot, const double dxdot_dx, const double dx_dx, GlobalMatrix& M, - GlobalMatrix& K, GlobalVector& b, GlobalMatrix& Jac, - StaggeredCouplingTerm const& coupling_term) + GlobalMatrix& K, GlobalVector& b, GlobalMatrix& Jac) { DBUG("AssembleJacobian HydroMechanicsProcess."); @@ -209,7 +208,7 @@ void HydroMechanicsProcess<DisplacementDim>:: GlobalExecutor::executeMemberDereferenced( _global_assembler, &VectorMatrixAssembler::assembleWithJacobian, _local_assemblers, *_local_to_global_index_map, t, x, xdot, dxdot_dx, - dx_dx, M, K, b, Jac, coupling_term); + dx_dx, M, K, b, Jac, *_coupling_term.lock()); } template <int DisplacementDim> void HydroMechanicsProcess<DisplacementDim>::preTimestepConcreteProcess( diff --git a/ProcessLib/HydroMechanics/HydroMechanicsProcess.h b/ProcessLib/HydroMechanics/HydroMechanicsProcess.h index 21fba787014..640d83932da 100644 --- a/ProcessLib/HydroMechanics/HydroMechanicsProcess.h +++ b/ProcessLib/HydroMechanics/HydroMechanicsProcess.h @@ -57,13 +57,12 @@ private: void assembleConcreteProcess( const double t, GlobalVector const& x, GlobalMatrix& M, GlobalMatrix& K, - GlobalVector& b, StaggeredCouplingTerm const& coupling_term) override; + GlobalVector& b) override; void assembleWithJacobianConcreteProcess( const double t, GlobalVector const& x, GlobalVector const& xdot, const double dxdot_dx, const double dx_dx, GlobalMatrix& M, - GlobalMatrix& K, GlobalVector& b, GlobalMatrix& Jac, - StaggeredCouplingTerm const& coupling_term) override; + GlobalMatrix& K, GlobalVector& b, GlobalMatrix& Jac) override; void preTimestepConcreteProcess(GlobalVector const& x, double const t, double const dt) override; diff --git a/ProcessLib/LIE/HydroMechanics/HydroMechanicsProcess.cpp b/ProcessLib/LIE/HydroMechanics/HydroMechanicsProcess.cpp index 2c898de4e48..c063da82456 100644 --- a/ProcessLib/LIE/HydroMechanics/HydroMechanicsProcess.cpp +++ b/ProcessLib/LIE/HydroMechanics/HydroMechanicsProcess.cpp @@ -402,13 +402,13 @@ void HydroMechanicsProcess<GlobalDim>::initializeConcreteProcess( template <unsigned GlobalDim> void HydroMechanicsProcess<GlobalDim>::computeSecondaryVariableConcrete( - const double t, GlobalVector const& x, - StaggeredCouplingTerm const& coupled_term) + const double t, GlobalVector const& x) { DBUG("Compute the secondary variables for HydroMechanicsProcess."); GlobalExecutor::executeMemberOnDereferenced( &HydroMechanicsLocalAssemblerInterface::computeSecondaryVariable, - _local_assemblers, *_local_to_global_index_map, t, x, coupled_term); + _local_assemblers, *_local_to_global_index_map, t, x, + *_coupling_term.lock()); // Copy displacement jumps in a solution vector to mesh property // Remark: the copy is required because mesh properties for primary diff --git a/ProcessLib/LIE/HydroMechanics/HydroMechanicsProcess.h b/ProcessLib/LIE/HydroMechanics/HydroMechanicsProcess.h index 91070d20779..93683310f80 100644 --- a/ProcessLib/LIE/HydroMechanics/HydroMechanicsProcess.h +++ b/ProcessLib/LIE/HydroMechanics/HydroMechanicsProcess.h @@ -53,9 +53,7 @@ public: //! @} void computeSecondaryVariableConcrete(double const t, - GlobalVector const& x, - StaggeredCouplingTerm const& - coupled_term) override; + GlobalVector const& x) override; private: using LocalAssemblerInterface = HydroMechanicsLocalAssemblerInterface; @@ -69,9 +67,7 @@ private: void assembleConcreteProcess(const double t, GlobalVector const& x, GlobalMatrix& M, GlobalMatrix& K, - GlobalVector& b, - StaggeredCouplingTerm const& - coupling_term) override + GlobalVector& b) override { DBUG("Assemble HydroMechanicsProcess."); @@ -79,14 +75,13 @@ private: GlobalExecutor::executeMemberDereferenced( _global_assembler, &VectorMatrixAssembler::assemble, _local_assemblers, *_local_to_global_index_map, t, x, M, K, b, - coupling_term); + *_coupling_term.lock()); } void assembleWithJacobianConcreteProcess( const double t, GlobalVector const& x, GlobalVector const& xdot, const double dxdot_dx, const double dx_dx, GlobalMatrix& M, - GlobalMatrix& K, GlobalVector& b, GlobalMatrix& Jac, - StaggeredCouplingTerm const& coupling_term) override + GlobalMatrix& K, GlobalVector& b, GlobalMatrix& Jac) override { DBUG("AssembleWithJacobian HydroMechanicsProcess."); @@ -94,7 +89,7 @@ private: GlobalExecutor::executeMemberDereferenced( _global_assembler, &VectorMatrixAssembler::assembleWithJacobian, _local_assemblers, *_local_to_global_index_map, t, x, xdot, - dxdot_dx, dx_dx, M, K, b, Jac, coupling_term); + dxdot_dx, dx_dx, M, K, b, Jac, *_coupling_term.lock()); } void preTimestepConcreteProcess(GlobalVector const& x, double const t, diff --git a/ProcessLib/LIE/SmallDeformation/SmallDeformationProcess.h b/ProcessLib/LIE/SmallDeformation/SmallDeformationProcess.h index 734f2117439..fd91315c3dc 100644 --- a/ProcessLib/LIE/SmallDeformation/SmallDeformationProcess.h +++ b/ProcessLib/LIE/SmallDeformation/SmallDeformationProcess.h @@ -65,9 +65,7 @@ private: void assembleConcreteProcess(const double t, GlobalVector const& x, GlobalMatrix& M, GlobalMatrix& K, - GlobalVector& b, - StaggeredCouplingTerm const& - coupling_term) override + GlobalVector& b) override { DBUG("Assemble SmallDeformationProcess."); @@ -75,14 +73,13 @@ private: GlobalExecutor::executeMemberDereferenced( _global_assembler, &VectorMatrixAssembler::assemble, _local_assemblers, *_local_to_global_index_map, t, x, M, K, b, - coupling_term); + *_coupling_term.lock()); } void assembleWithJacobianConcreteProcess( const double t, GlobalVector const& x, GlobalVector const& xdot, const double dxdot_dx, const double dx_dx, GlobalMatrix& M, - GlobalMatrix& K, GlobalVector& b, GlobalMatrix& Jac, - StaggeredCouplingTerm const& coupling_term) override + GlobalMatrix& K, GlobalVector& b, GlobalMatrix& Jac) override { DBUG("AssembleWithJacobian SmallDeformationProcess."); @@ -90,7 +87,7 @@ private: GlobalExecutor::executeMemberDereferenced( _global_assembler, &VectorMatrixAssembler::assembleWithJacobian, _local_assemblers, *_local_to_global_index_map, t, x, xdot, - dxdot_dx, dx_dx, M, K, b, Jac, coupling_term); + dxdot_dx, dx_dx, M, K, b, Jac, *_coupling_term.lock()); } void preTimestepConcreteProcess(GlobalVector const& x, double const t, diff --git a/ProcessLib/LiquidFlow/LiquidFlowProcess.cpp b/ProcessLib/LiquidFlow/LiquidFlowProcess.cpp index 6b61dc812a5..91236ab430d 100644 --- a/ProcessLib/LiquidFlow/LiquidFlowProcess.cpp +++ b/ProcessLib/LiquidFlow/LiquidFlowProcess.cpp @@ -94,20 +94,19 @@ void LiquidFlowProcess::initializeConcreteProcess( void LiquidFlowProcess::assembleConcreteProcess( const double t, GlobalVector const& x, GlobalMatrix& M, GlobalMatrix& K, - GlobalVector& b, StaggeredCouplingTerm const& coupling_term) + GlobalVector& b) { DBUG("Assemble LiquidFlowProcess."); // Call global assembler for each local assembly item. GlobalExecutor::executeMemberDereferenced( _global_assembler, &VectorMatrixAssembler::assemble, _local_assemblers, - *_local_to_global_index_map, t, x, M, K, b, coupling_term); + *_local_to_global_index_map, t, x, M, K, b, *_coupling_term.lock()); } void LiquidFlowProcess::assembleWithJacobianConcreteProcess( const double t, GlobalVector const& x, GlobalVector const& xdot, const double dxdot_dx, const double dx_dx, GlobalMatrix& M, GlobalMatrix& K, - GlobalVector& b, GlobalMatrix& Jac, - StaggeredCouplingTerm const& coupling_term) + GlobalVector& b, GlobalMatrix& Jac) { DBUG("AssembleWithJacobian LiquidFlowProcess."); @@ -115,18 +114,18 @@ void LiquidFlowProcess::assembleWithJacobianConcreteProcess( GlobalExecutor::executeMemberDereferenced( _global_assembler, &VectorMatrixAssembler::assembleWithJacobian, _local_assemblers, *_local_to_global_index_map, t, x, xdot, dxdot_dx, - dx_dx, M, K, b, Jac, coupling_term); + dx_dx, M, K, b, Jac, *_coupling_term.lock()); } void LiquidFlowProcess::computeSecondaryVariableConcrete( const double t, - GlobalVector const& x, - StaggeredCouplingTerm const& coupled_term) + GlobalVector const& x) { DBUG("Compute the velocity for LiquidFlowProcess."); GlobalExecutor::executeMemberOnDereferenced( &LiquidFlowLocalAssemblerInterface::computeSecondaryVariable, - _local_assemblers, *_local_to_global_index_map, t, x, coupled_term); + _local_assemblers, *_local_to_global_index_map, t, x, + *_coupling_term.lock()); } } // end of namespace diff --git a/ProcessLib/LiquidFlow/LiquidFlowProcess.h b/ProcessLib/LiquidFlow/LiquidFlowProcess.h index fca99047492..9bd7152f130 100644 --- a/ProcessLib/LiquidFlow/LiquidFlowProcess.h +++ b/ProcessLib/LiquidFlow/LiquidFlowProcess.h @@ -74,9 +74,7 @@ public: BaseLib::ConfigTree const& config); void computeSecondaryVariableConcrete( - double const t, - GlobalVector const& x, - StaggeredCouplingTerm const& coupled_term) override; + double const t, GlobalVector const& x) override; bool isLinear() const override { return true; } int getGravitationalAxisID() const { return _gravitational_axis_id; } @@ -97,13 +95,12 @@ private: void assembleConcreteProcess( const double t, GlobalVector const& x, GlobalMatrix& M, GlobalMatrix& K, - GlobalVector& b, StaggeredCouplingTerm const& coupling_term) override; + GlobalVector& b) override; void assembleWithJacobianConcreteProcess( const double t, GlobalVector const& x, GlobalVector const& xdot, const double dxdot_dx, const double dx_dx, GlobalMatrix& M, - GlobalMatrix& K, GlobalVector& b, GlobalMatrix& Jac, - StaggeredCouplingTerm const& coupling_term) override; + GlobalMatrix& K, GlobalVector& b, GlobalMatrix& Jac) override; const int _gravitational_axis_id; const double _gravitational_acceleration; diff --git a/ProcessLib/PhaseField/PhaseFieldProcess.h b/ProcessLib/PhaseField/PhaseFieldProcess.h index df885f24062..97c3b24786c 100644 --- a/ProcessLib/PhaseField/PhaseFieldProcess.h +++ b/ProcessLib/PhaseField/PhaseFieldProcess.h @@ -183,7 +183,7 @@ private: void assembleConcreteProcess( const double t, GlobalVector const& x, GlobalMatrix& M, GlobalMatrix& K, - GlobalVector& b, StaggeredCouplingTerm const& coupling_term) override + GlobalVector& b) override { DBUG("Assemble PhaseFieldProcess."); @@ -191,14 +191,13 @@ private: GlobalExecutor::executeMemberDereferenced( _global_assembler, &VectorMatrixAssembler::assemble, _local_assemblers, *_local_to_global_index_map, t, x, M, K, b, - coupling_term); + *_coupling_term.lock()); } void assembleWithJacobianConcreteProcess( const double t, GlobalVector const& x, GlobalVector const& xdot, const double dxdot_dx, const double dx_dx, GlobalMatrix& M, - GlobalMatrix& K, GlobalVector& b, GlobalMatrix& Jac, - StaggeredCouplingTerm const& coupling_term) override + GlobalMatrix& K, GlobalVector& b, GlobalMatrix& Jac) override { // DBUG("AssembleJacobian PhaseFieldProcess."); @@ -206,7 +205,7 @@ private: GlobalExecutor::executeMemberDereferenced( _global_assembler, &VectorMatrixAssembler::assembleWithJacobian, _local_assemblers, *_local_to_global_index_map, t, x, xdot, - dxdot_dx, dx_dx, M, K, b, Jac, coupling_term); + dxdot_dx, dx_dx, M, K, b, Jac, *_coupling_term.lock()); } void preTimestepConcreteProcess(GlobalVector const& x, double const t, diff --git a/ProcessLib/RichardsFlow/RichardsFlowProcess.cpp b/ProcessLib/RichardsFlow/RichardsFlowProcess.cpp index 073e95c291a..7949d6ddc7c 100644 --- a/ProcessLib/RichardsFlow/RichardsFlowProcess.cpp +++ b/ProcessLib/RichardsFlow/RichardsFlowProcess.cpp @@ -83,22 +83,20 @@ void RichardsFlowProcess::assembleConcreteProcess( GlobalVector const& x, GlobalMatrix& M, GlobalMatrix& K, - GlobalVector& b, - StaggeredCouplingTerm const& coupling_term) + GlobalVector& b) { DBUG("Assemble RichardsFlowProcess."); // Call global assembler for each local assembly item. GlobalExecutor::executeMemberDereferenced( _global_assembler, &VectorMatrixAssembler::assemble, _local_assemblers, - *_local_to_global_index_map, t, x, M, K, b, coupling_term); + *_local_to_global_index_map, t, x, M, K, b, *_coupling_term.lock()); } void RichardsFlowProcess::assembleWithJacobianConcreteProcess( const double t, GlobalVector const& x, GlobalVector const& xdot, const double dxdot_dx, const double dx_dx, GlobalMatrix& M, GlobalMatrix& K, - GlobalVector& b, GlobalMatrix& Jac, - StaggeredCouplingTerm const& coupling_term) + GlobalVector& b, GlobalMatrix& Jac) { DBUG("AssembleWithJacobian RichardsFlowProcess."); @@ -106,17 +104,17 @@ void RichardsFlowProcess::assembleWithJacobianConcreteProcess( GlobalExecutor::executeMemberDereferenced( _global_assembler, &VectorMatrixAssembler::assembleWithJacobian, _local_assemblers, *_local_to_global_index_map, t, x, xdot, dxdot_dx, - dx_dx, M, K, b, Jac, coupling_term); + dx_dx, M, K, b, Jac, *_coupling_term.lock()); } void RichardsFlowProcess::computeSecondaryVariableConcrete( - double const t, GlobalVector const& x, - StaggeredCouplingTerm const& coupling_term) + double const t, GlobalVector const& x) { DBUG("Compute the Darcy velocity for RichardsFlowProcess"); GlobalExecutor::executeMemberOnDereferenced( &RichardsFlowLocalAssemblerInterface::computeSecondaryVariable, - _local_assemblers, *_local_to_global_index_map, t, x, coupling_term); + _local_assemblers, *_local_to_global_index_map, t, x, + *_coupling_term.lock()); } } // namespace RichardsFlow diff --git a/ProcessLib/RichardsFlow/RichardsFlowProcess.h b/ProcessLib/RichardsFlow/RichardsFlowProcess.h index f1b44fa2272..939b9132692 100644 --- a/ProcessLib/RichardsFlow/RichardsFlowProcess.h +++ b/ProcessLib/RichardsFlow/RichardsFlowProcess.h @@ -47,8 +47,7 @@ public: //! @} void computeSecondaryVariableConcrete( - double const t, GlobalVector const& x, - StaggeredCouplingTerm const& coupling_term) override; + double const t, GlobalVector const& x) override; private: void initializeConcreteProcess( @@ -58,13 +57,12 @@ private: void assembleConcreteProcess( const double t, GlobalVector const& x, GlobalMatrix& M, GlobalMatrix& K, - GlobalVector& b, StaggeredCouplingTerm const& coupling_term) override; + GlobalVector& b) override; void assembleWithJacobianConcreteProcess( const double t, GlobalVector const& x, GlobalVector const& xdot, const double dxdot_dx, const double dx_dx, GlobalMatrix& M, - GlobalMatrix& K, GlobalVector& b, GlobalMatrix& Jac, - StaggeredCouplingTerm const& coupling_term) override; + GlobalMatrix& K, GlobalVector& b, GlobalMatrix& Jac) override; RichardsFlowProcessData _process_data; diff --git a/ProcessLib/SmallDeformation/SmallDeformationProcess-impl.h b/ProcessLib/SmallDeformation/SmallDeformationProcess-impl.h index dd9363a9f20..e1b87408b59 100644 --- a/ProcessLib/SmallDeformation/SmallDeformationProcess-impl.h +++ b/ProcessLib/SmallDeformation/SmallDeformationProcess-impl.h @@ -204,14 +204,14 @@ void SmallDeformationProcess<DisplacementDim>::initializeConcreteProcess( template <int DisplacementDim> void SmallDeformationProcess<DisplacementDim>::assembleConcreteProcess( const double t, GlobalVector const& x, GlobalMatrix& M, GlobalMatrix& K, - GlobalVector& b, StaggeredCouplingTerm const& coupling_term) + GlobalVector& b) { DBUG("Assemble SmallDeformationProcess."); // Call global assembler for each local assembly item. GlobalExecutor::executeMemberDereferenced( _global_assembler, &VectorMatrixAssembler::assemble, _local_assemblers, - *_local_to_global_index_map, t, x, M, K, b, coupling_term); + *_local_to_global_index_map, t, x, M, K, b, *_coupling_term.lock()); } template <int DisplacementDim> @@ -219,8 +219,7 @@ void SmallDeformationProcess<DisplacementDim>:: assembleWithJacobianConcreteProcess( const double t, GlobalVector const& x, GlobalVector const& xdot, const double dxdot_dx, const double dx_dx, GlobalMatrix& M, - GlobalMatrix& K, GlobalVector& b, GlobalMatrix& Jac, - StaggeredCouplingTerm const& coupling_term) + GlobalMatrix& K, GlobalVector& b, GlobalMatrix& Jac) { DBUG("AssembleWithJacobian SmallDeformationProcess."); @@ -228,7 +227,7 @@ void SmallDeformationProcess<DisplacementDim>:: GlobalExecutor::executeMemberDereferenced( _global_assembler, &VectorMatrixAssembler::assembleWithJacobian, _local_assemblers, *_local_to_global_index_map, t, x, xdot, dxdot_dx, - dx_dx, M, K, b, Jac, coupling_term); + dx_dx, M, K, b, Jac, *_coupling_term.lock()); b.copyValues(*_nodal_forces); std::transform(_nodal_forces->begin(), _nodal_forces->end(), diff --git a/ProcessLib/SmallDeformation/SmallDeformationProcess.h b/ProcessLib/SmallDeformation/SmallDeformationProcess.h index 178736056c7..a1bb0e86a61 100644 --- a/ProcessLib/SmallDeformation/SmallDeformationProcess.h +++ b/ProcessLib/SmallDeformation/SmallDeformationProcess.h @@ -51,13 +51,12 @@ private: void assembleConcreteProcess( const double t, GlobalVector const& x, GlobalMatrix& M, GlobalMatrix& K, - GlobalVector& b, StaggeredCouplingTerm const& coupling_term) override; + GlobalVector& b) override; void assembleWithJacobianConcreteProcess( const double t, GlobalVector const& x, GlobalVector const& xdot, const double dxdot_dx, const double dx_dx, GlobalMatrix& M, - GlobalMatrix& K, GlobalVector& b, GlobalMatrix& Jac, - StaggeredCouplingTerm const& coupling_term) override; + GlobalMatrix& K, GlobalVector& b, GlobalMatrix& Jac) override; void preTimestepConcreteProcess(GlobalVector const& x, double const t, double const dt) override; diff --git a/ProcessLib/TES/TESProcess.cpp b/ProcessLib/TES/TESProcess.cpp index 91ca1a01f37..79523dbe73e 100644 --- a/ProcessLib/TES/TESProcess.cpp +++ b/ProcessLib/TES/TESProcess.cpp @@ -225,28 +225,25 @@ void TESProcess::assembleConcreteProcess(const double t, GlobalVector const& x, GlobalMatrix& M, GlobalMatrix& K, - GlobalVector& b, - StaggeredCouplingTerm - const& coupling_term) + GlobalVector& b) { DBUG("Assemble TESProcess."); // Call global assembler for each local assembly item. GlobalExecutor::executeMemberDereferenced( _global_assembler, &VectorMatrixAssembler::assemble, _local_assemblers, - *_local_to_global_index_map, t, x, M, K, b, coupling_term); + *_local_to_global_index_map, t, x, M, K, b, *_coupling_term.lock()); } void TESProcess::assembleWithJacobianConcreteProcess( const double t, GlobalVector const& x, GlobalVector const& xdot, const double dxdot_dx, const double dx_dx, GlobalMatrix& M, GlobalMatrix& K, - GlobalVector& b, GlobalMatrix& Jac, - StaggeredCouplingTerm const& coupling_term) + GlobalVector& b, GlobalMatrix& Jac) { GlobalExecutor::executeMemberDereferenced( _global_assembler, &VectorMatrixAssembler::assembleWithJacobian, _local_assemblers, *_local_to_global_index_map, t, x, xdot, dxdot_dx, - dx_dx, M, K, b, Jac, coupling_term); + dx_dx, M, K, b, Jac, *_coupling_term.lock()); } void TESProcess::preTimestepConcreteProcess(GlobalVector const& x, diff --git a/ProcessLib/TES/TESProcess.h b/ProcessLib/TES/TESProcess.h index 87449a97678..195b5cdb53e 100644 --- a/ProcessLib/TES/TESProcess.h +++ b/ProcessLib/TES/TESProcess.h @@ -56,17 +56,14 @@ private: void assembleConcreteProcess(const double t, GlobalVector const& x, GlobalMatrix& M, GlobalMatrix& K, - GlobalVector& b, - StaggeredCouplingTerm const& coupling_term - ) override; + GlobalVector& b) override; void initializeSecondaryVariables(); void assembleWithJacobianConcreteProcess( const double t, GlobalVector const& x, GlobalVector const& xdot, const double dxdot_dx, const double dx_dx, GlobalMatrix& M, - GlobalMatrix& K, GlobalVector& b, GlobalMatrix& Jac, - StaggeredCouplingTerm const& coupling_term) override; + GlobalMatrix& K, GlobalVector& b, GlobalMatrix& Jac) override; GlobalVector const& computeVapourPartialPressure( const double t, diff --git a/ProcessLib/ThermalTwoPhaseFlowWithPP/ThermalTwoPhaseFlowWithPPProcess.cpp b/ProcessLib/ThermalTwoPhaseFlowWithPP/ThermalTwoPhaseFlowWithPPProcess.cpp index 8cf9ac87fde..b9b82ddd421 100644 --- a/ProcessLib/ThermalTwoPhaseFlowWithPP/ThermalTwoPhaseFlowWithPPProcess.cpp +++ b/ProcessLib/ThermalTwoPhaseFlowWithPP/ThermalTwoPhaseFlowWithPPProcess.cpp @@ -74,21 +74,19 @@ void ThermalTwoPhaseFlowWithPPProcess::assembleConcreteProcess( GlobalVector const& x, GlobalMatrix& M, GlobalMatrix& K, - GlobalVector& b, - StaggeredCouplingTerm const& coupling_term) + GlobalVector& b) { DBUG("Assemble ThermalTwoPhaseFlowWithPPProcess."); // Call global assembler for each local assembly item. GlobalExecutor::executeMemberDereferenced( _global_assembler, &VectorMatrixAssembler::assemble, _local_assemblers, - *_local_to_global_index_map, t, x, M, K, b, coupling_term); + *_local_to_global_index_map, t, x, M, K, b, *_coupling_term.lock()); } void ThermalTwoPhaseFlowWithPPProcess::assembleWithJacobianConcreteProcess( const double t, GlobalVector const& x, GlobalVector const& xdot, const double dxdot_dx, const double dx_dx, GlobalMatrix& M, GlobalMatrix& K, - GlobalVector& b, GlobalMatrix& Jac, - StaggeredCouplingTerm const& coupling_term) + GlobalVector& b, GlobalMatrix& Jac) { DBUG("AssembleWithJacobian ThermalTwoPhaseFlowWithPPProcess."); @@ -96,7 +94,7 @@ void ThermalTwoPhaseFlowWithPPProcess::assembleWithJacobianConcreteProcess( GlobalExecutor::executeMemberDereferenced( _global_assembler, &VectorMatrixAssembler::assembleWithJacobian, _local_assemblers, *_local_to_global_index_map, t, x, xdot, dxdot_dx, - dx_dx, M, K, b, Jac, coupling_term); + dx_dx, M, K, b, Jac, *_coupling_term.lock()); } void ThermalTwoPhaseFlowWithPPProcess::preTimestepConcreteProcess( GlobalVector const& x, double const t, double const delta_t) diff --git a/ProcessLib/ThermalTwoPhaseFlowWithPP/ThermalTwoPhaseFlowWithPPProcess.h b/ProcessLib/ThermalTwoPhaseFlowWithPP/ThermalTwoPhaseFlowWithPPProcess.h index ed1ccf656d7..e6dfa66fee7 100644 --- a/ProcessLib/ThermalTwoPhaseFlowWithPP/ThermalTwoPhaseFlowWithPPProcess.h +++ b/ProcessLib/ThermalTwoPhaseFlowWithPP/ThermalTwoPhaseFlowWithPPProcess.h @@ -60,13 +60,12 @@ private: void assembleConcreteProcess( const double t, GlobalVector const& x, GlobalMatrix& M, GlobalMatrix& K, - GlobalVector& b, StaggeredCouplingTerm const& coupling_term) override; + GlobalVector& b) override; void assembleWithJacobianConcreteProcess( const double t, GlobalVector const& x, GlobalVector const& xdot, const double dxdot_dx, const double dx_dx, GlobalMatrix& M, - GlobalMatrix& K, GlobalVector& b, GlobalMatrix& Jac, - StaggeredCouplingTerm const& coupling_term) override; + GlobalMatrix& K, GlobalVector& b, GlobalMatrix& Jac) override; void preTimestepConcreteProcess(GlobalVector const& x, const double t, const double delta_t) override; diff --git a/ProcessLib/ThermoMechanics/ThermoMechanicsProcess.h b/ProcessLib/ThermoMechanics/ThermoMechanicsProcess.h index b2cf8df0b03..78e77d62a6b 100644 --- a/ProcessLib/ThermoMechanics/ThermoMechanicsProcess.h +++ b/ProcessLib/ThermoMechanics/ThermoMechanicsProcess.h @@ -156,7 +156,7 @@ private: void assembleConcreteProcess( const double t, GlobalVector const& x, GlobalMatrix& M, GlobalMatrix& K, - GlobalVector& b, StaggeredCouplingTerm const& coupling_term) override + GlobalVector& b) override { DBUG("Assemble ThermoMechanicsProcess."); @@ -164,14 +164,13 @@ private: GlobalExecutor::executeMemberDereferenced( _global_assembler, &VectorMatrixAssembler::assemble, _local_assemblers, *_local_to_global_index_map, t, x, M, K, b, - coupling_term); + *_coupling_term.lock()); } void assembleWithJacobianConcreteProcess( const double t, GlobalVector const& x, GlobalVector const& xdot, const double dxdot_dx, const double dx_dx, GlobalMatrix& M, - GlobalMatrix& K, GlobalVector& b, GlobalMatrix& Jac, - StaggeredCouplingTerm const& coupling_term) override + GlobalMatrix& K, GlobalVector& b, GlobalMatrix& Jac) override { DBUG("AssembleJacobian ThermoMechanicsProcess."); @@ -179,7 +178,7 @@ private: GlobalExecutor::executeMemberDereferenced( _global_assembler, &VectorMatrixAssembler::assembleWithJacobian, _local_assemblers, *_local_to_global_index_map, t, x, xdot, - dxdot_dx, dx_dx, M, K, b, Jac, coupling_term); + dxdot_dx, dx_dx, M, K, b, Jac, *_coupling_term.lock()); } void preTimestepConcreteProcess(GlobalVector const& x, double const t, diff --git a/ProcessLib/TwoPhaseFlowWithPP/TwoPhaseFlowWithPPProcess.cpp b/ProcessLib/TwoPhaseFlowWithPP/TwoPhaseFlowWithPPProcess.cpp index 6e7fb5f328c..1a08460b21d 100644 --- a/ProcessLib/TwoPhaseFlowWithPP/TwoPhaseFlowWithPPProcess.cpp +++ b/ProcessLib/TwoPhaseFlowWithPP/TwoPhaseFlowWithPPProcess.cpp @@ -72,22 +72,19 @@ void TwoPhaseFlowWithPPProcess::assembleConcreteProcess(const double t, GlobalVector const& x, GlobalMatrix& M, GlobalMatrix& K, - GlobalVector& b, - StaggeredCouplingTerm - const& coupling_term) + GlobalVector& b) { DBUG("Assemble TwoPhaseFlowWithPPProcess."); // Call global assembler for each local assembly item. GlobalExecutor::executeMemberDereferenced( _global_assembler, &VectorMatrixAssembler::assemble, _local_assemblers, - *_local_to_global_index_map, t, x, M, K, b, coupling_term); + *_local_to_global_index_map, t, x, M, K, b, *_coupling_term.lock()); } void TwoPhaseFlowWithPPProcess::assembleWithJacobianConcreteProcess( const double t, GlobalVector const& x, GlobalVector const& xdot, const double dxdot_dx, const double dx_dx, GlobalMatrix& M, GlobalMatrix& K, - GlobalVector& b, GlobalMatrix& Jac, - StaggeredCouplingTerm const& coupling_term) + GlobalVector& b, GlobalMatrix& Jac) { DBUG("AssembleWithJacobian TwoPhaseFlowWithPPProcess."); @@ -95,7 +92,7 @@ void TwoPhaseFlowWithPPProcess::assembleWithJacobianConcreteProcess( GlobalExecutor::executeMemberDereferenced( _global_assembler, &VectorMatrixAssembler::assembleWithJacobian, _local_assemblers, *_local_to_global_index_map, t, x, xdot, dxdot_dx, - dx_dx, M, K, b, Jac, coupling_term); + dx_dx, M, K, b, Jac, *_coupling_term.lock()); } } // end of namespace diff --git a/ProcessLib/TwoPhaseFlowWithPP/TwoPhaseFlowWithPPProcess.h b/ProcessLib/TwoPhaseFlowWithPP/TwoPhaseFlowWithPPProcess.h index 376d91d356f..3d9c99895e1 100644 --- a/ProcessLib/TwoPhaseFlowWithPP/TwoPhaseFlowWithPPProcess.h +++ b/ProcessLib/TwoPhaseFlowWithPP/TwoPhaseFlowWithPPProcess.h @@ -59,15 +59,12 @@ private: void assembleConcreteProcess(const double t, GlobalVector const& x, GlobalMatrix& M, GlobalMatrix& K, - GlobalVector& b, - StaggeredCouplingTerm const& coupling_term - ) override; + GlobalVector& b) override; void assembleWithJacobianConcreteProcess( const double t, GlobalVector const& x, GlobalVector const& xdot, const double dxdot_dx, const double dx_dx, GlobalMatrix& M, - GlobalMatrix& K, GlobalVector& b, GlobalMatrix& Jac, - StaggeredCouplingTerm const& coupling_term) override; + GlobalMatrix& K, GlobalVector& b, GlobalMatrix& Jac) override; TwoPhaseFlowWithPPProcessData _process_data; diff --git a/ProcessLib/TwoPhaseFlowWithPrho/TwoPhaseFlowWithPrhoProcess.cpp b/ProcessLib/TwoPhaseFlowWithPrho/TwoPhaseFlowWithPrhoProcess.cpp index ef8105649ef..2c6fd14e34d 100644 --- a/ProcessLib/TwoPhaseFlowWithPrho/TwoPhaseFlowWithPrhoProcess.cpp +++ b/ProcessLib/TwoPhaseFlowWithPrho/TwoPhaseFlowWithPrhoProcess.cpp @@ -72,22 +72,19 @@ void TwoPhaseFlowWithPrhoProcess::assembleConcreteProcess(const double t, GlobalVector const& x, GlobalMatrix& M, GlobalMatrix& K, - GlobalVector& b, - StaggeredCouplingTerm - const& coupling_term) + GlobalVector& b) { DBUG("Assemble TwoPhaseFlowWithPrhoProcess."); // Call global assembler for each local assembly item. GlobalExecutor::executeMemberDereferenced( _global_assembler, &VectorMatrixAssembler::assemble, _local_assemblers, - *_local_to_global_index_map, t, x, M, K, b, coupling_term); + *_local_to_global_index_map, t, x, M, K, b, *_coupling_term.lock()); } void TwoPhaseFlowWithPrhoProcess::assembleWithJacobianConcreteProcess( const double t, GlobalVector const& x, GlobalVector const& xdot, const double dxdot_dx, const double dx_dx, GlobalMatrix& M, GlobalMatrix& K, - GlobalVector& b, GlobalMatrix& Jac, - StaggeredCouplingTerm const& coupling_term) + GlobalVector& b, GlobalMatrix& Jac) { DBUG("AssembleWithJacobian TwoPhaseFlowWithPrhoProcess."); @@ -95,7 +92,7 @@ void TwoPhaseFlowWithPrhoProcess::assembleWithJacobianConcreteProcess( GlobalExecutor::executeMemberDereferenced( _global_assembler, &VectorMatrixAssembler::assembleWithJacobian, _local_assemblers, *_local_to_global_index_map, t, x, xdot, dxdot_dx, - dx_dx, M, K, b, Jac, coupling_term); + dx_dx, M, K, b, Jac, *_coupling_term.lock()); } void TwoPhaseFlowWithPrhoProcess::preTimestepConcreteProcess( GlobalVector const& x, double const t, double const dt) diff --git a/ProcessLib/TwoPhaseFlowWithPrho/TwoPhaseFlowWithPrhoProcess.h b/ProcessLib/TwoPhaseFlowWithPrho/TwoPhaseFlowWithPrhoProcess.h index b148a749851..ccf2163602f 100644 --- a/ProcessLib/TwoPhaseFlowWithPrho/TwoPhaseFlowWithPrhoProcess.h +++ b/ProcessLib/TwoPhaseFlowWithPrho/TwoPhaseFlowWithPrhoProcess.h @@ -56,14 +56,12 @@ private: void assembleConcreteProcess(const double t, GlobalVector const& x, GlobalMatrix& M, GlobalMatrix& K, - GlobalVector& b, - StaggeredCouplingTerm const& coupling_term) override; + GlobalVector& b) override; void assembleWithJacobianConcreteProcess( const double t, GlobalVector const& x, GlobalVector const& xdot, const double dxdot_dx, const double dx_dx, GlobalMatrix& M, - GlobalMatrix& K, GlobalVector& b, GlobalMatrix& Jac, - StaggeredCouplingTerm const& coupling_term) override; + GlobalMatrix& K, GlobalVector& b, GlobalMatrix& Jac) override; void preTimestepConcreteProcess(GlobalVector const& x, const double t, const double delta_t) override; diff --git a/ProcessLib/UncoupledProcessesTimeLoop.cpp b/ProcessLib/UncoupledProcessesTimeLoop.cpp index 9f73bb1e06a..1dccdef1d6b 100644 --- a/ProcessLib/UncoupledProcessesTimeLoop.cpp +++ b/ProcessLib/UncoupledProcessesTimeLoop.cpp @@ -425,8 +425,7 @@ std::vector<GlobalVector*> setInitialConditions( auto& conv_crit = *spd->conv_crit; setEquationSystem(nonlinear_solver, ode_sys, conv_crit, nl_tag); - nonlinear_solver.assemble( - x0, ProcessLib::createVoidStaggeredCouplingTerm()); + nonlinear_solver.assemble(x0); time_disc.pushState( t0, x0, mat_strg); // TODO: that might do duplicate work } @@ -440,7 +439,6 @@ std::vector<GlobalVector*> setInitialConditions( bool solveOneTimeStepOneProcess(GlobalVector& x, std::size_t const timestep, double const t, double const delta_t, SingleProcessData& process_data, - StaggeredCouplingTerm const& coupling_term, Output const& output_control) { auto& process = process_data.process; @@ -468,7 +466,7 @@ bool solveOneTimeStepOneProcess(GlobalVector& x, std::size_t const timestep, }; bool nonlinear_solver_succeeded = - nonlinear_solver.solve(x, coupling_term, post_iteration_callback); + nonlinear_solver.solve(x, post_iteration_callback); return nonlinear_solver_succeeded; } @@ -867,15 +865,11 @@ bool UncoupledProcessesTimeLoop::solveUncoupledEquationSystems( auto& pcs = spd->process; pcs.preTimestep(x, t, dt); - const auto void_staggered_coupling_term = - ProcessLib::createVoidStaggeredCouplingTerm(); - const auto nonlinear_solver_succeeded = - solveOneTimeStepOneProcess(x, timestep_id, t, dt, *spd, - void_staggered_coupling_term, *_output); + solveOneTimeStepOneProcess(x, timestep_id, t, dt, *spd, *_output); spd->nonlinear_solver_converged = nonlinear_solver_succeeded; pcs.postTimestep(x); - pcs.computeSecondaryVariable(t, x, void_staggered_coupling_term); + pcs.computeSecondaryVariable(t, x); INFO("[time] Solving process #%u took %g s in time step #%u ", pcs_idx, time_timestep_process.elapsed(), timestep_id); @@ -946,12 +940,15 @@ bool UncoupledProcessesTimeLoop::solveCoupledEquationSystemsByStaggeredScheme( spd->process.preTimestep(x, t, dt); } - StaggeredCouplingTerm coupling_term( - spd->coupled_processes, - _solutions_of_coupled_processes[pcs_idx], dt); + std::shared_ptr<StaggeredCouplingTerm> coupling_term = + std::make_shared<StaggeredCouplingTerm>( + spd->coupled_processes, + _solutions_of_coupled_processes[pcs_idx], dt); + + spd->process.setStaggeredCouplingTerm(coupling_term); const auto nonlinear_solver_succeeded = solveOneTimeStepOneProcess( - x, timestep_id, t, dt, *spd, coupling_term, *_output); + x, timestep_id, t, dt, *spd, *_output); spd->nonlinear_solver_converged = nonlinear_solver_succeeded; INFO( @@ -1024,10 +1021,13 @@ bool UncoupledProcessesTimeLoop::solveCoupledEquationSystemsByStaggeredScheme( auto& x = *_process_solutions[pcs_idx]; pcs.postTimestep(x); - StaggeredCouplingTerm coupled_term( - spd->coupled_processes, _solutions_of_coupled_processes[pcs_idx], - 0.0); - pcs.computeSecondaryVariable(t, x, coupled_term); + std::shared_ptr<StaggeredCouplingTerm> coupling_term = + std::make_shared<StaggeredCouplingTerm>( + spd->coupled_processes, + _solutions_of_coupled_processes[pcs_idx], dt); + spd->process.setStaggeredCouplingTerm(coupling_term); + + pcs.computeSecondaryVariable(t, x); _output->doOutput(pcs, spd->process_output, timestep_id, t, x); ++pcs_idx; -- GitLab