diff --git a/ProcessLib/ComponentTransport/ComponentTransportProcess.cpp b/ProcessLib/ComponentTransport/ComponentTransportProcess.cpp index 40826eaa2903d55565ed7a5e0da52b1c822379dd..f7fca31e3c1baedd353ca5cf6646aa7c996ac2c6 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 84437c0f4851d9a6c3289c2c4fb9c663ff66f046..20f7dc87c0b1b6f74bb2c9c06ff01f9cd36d08a4 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 010552376497d308aa31f8877c2c94fc65f25a87..43a2c3cd2bc62f1f11b3fdb7784b5aca780a0176 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 43a783e95ebd3500e9d693bb829434fb057ae0cd..dad280e941880b27694d9debec5e15c105632440 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 8da71f612fdfd3e377fa69c2e66face6d23af661..d17adcfe99dba7b44dd5962fbf252862dffb1ff0 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 a5048e295cd1daaa2f4507d3d955a06bb0a8d8d6..355dba18b5b6247ed94fac2eb8ba09fd0450502b 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 b2e8e3a47422167747d6a232aadab614cd5c61d1..049fabc012261e297929166099476d043250ad69 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 55d2d7c151ae082a1b49a302cb0f7fc1858dbf6a..60e39b8238c07d0e3064bef9a1517330579d7324 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 0a3d7dae3216cbeff95f6e6d3d6a5e8bf9949e93..d9ec27acec176bfffb750439dd54aa0de9feea60 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 21fba78701412f923eeae17bedaae80f898b204c..640d83932da9fb71d7381d5764a9040471e86b61 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 2c898de4e48d08d42b772d8c4860455005ff86c9..c063da8245674f0a6470da941c8e900cfbd65c7b 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 91070d20779b7991e2bb09ad9e5074b88dce6465..93683310f80a3891a16052cc16f6118864cbc796 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 734f21174390cc1f144f12b90c55898d79ee11e4..fd91315c3dc305039fee56f2946af0146cf2f4dc 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 6b61dc812a5721c3da77be9820e4b38907bca094..91236ab430d7aeafa3e1f48271ae5f9da1970dc3 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 fca99047492803d242e996078ecee3bb2cf74f9d..9bd7152f130953eca6dd3ad15d182ee9ae81e407 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 df885f24062e0c3bd56f18358dfe47a599ebf675..97c3b24786cccf6eaa67df62dfe6e4be9d989b2b 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 073e95c291a64d0e7195a994287953c206d2719e..7949d6ddc7cec486f6109ceb60dadc91a6477a1b 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 f1b44fa2272d61ddcdb5e666c538dc29e4349cba..939b9132692d004dbed1ff971620d6f7f797bae8 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 dd9363a9f20e5ed6d2de6b53c7d9d6e34501286e..e1b87408b5903bb19d76d1b2dd0d4eec8c7feee5 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 178736056c70b9a63d8c97d3759a9da2e7e52054..a1bb0e86a6198780fbc22ba0decbdd2989307f92 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 91ca1a01f375e994a8aa95e650d466cc1967daaf..79523dbe73e218004a1498c3430d421ff5586d90 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 87449a97678dea23577fda6ed7669f9efe20634a..195b5cdb53ee9c3e0538a73258002c73cbafe3df 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 8cf9ac87fde8b53d50c809e1b4d1370f2d3a6f77..b9b82ddd421d475127518252bf7cc0b2a0cbf1bd 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 ed1ccf656d7216b827945ae54f0d293cf5aad988..e6dfa66fee7cdb4f7928b0d76239599312f33410 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 b2cf8df0b0303c6853939d39738aafb899383f90..78e77d62a6b8a53600682cd0923ef57005d4b814 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 6e7fb5f328c461919811627d356fc4d4822b770a..1a08460b21df04fec00f9b69570f65e0284b6292 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 376d91d356f1ed5823af425e1234b861c1ae065a..3d9c99895e1f44701df787f6a3ee504d3b0ec5e1 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 ef8105649ef78cb1d8637f5d45a7d8aa5b720c40..2c6fd14e34d6f89ce3d39b86d2742217c3a55ece 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 b148a74985192e8fb92ea2360813b349800f2a7c..ccf2163602fa2908caa449cd5e9213e6bc1ee8dc 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 9f73bb1e06a319b6beabacf217b73ca904b82c39..1dccdef1d6bf5526d050142a3c7846ebc5724866 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;