diff --git a/ProcessLib/HydroMechanics/HydroMechanicsFEM-impl.h b/ProcessLib/HydroMechanics/HydroMechanicsFEM-impl.h index 4a3595a374974ce178e12beaefc5a48aa8f24478..cbe46a99d5899fefc75d54fea4ba2727563ea64f 100644 --- a/ProcessLib/HydroMechanics/HydroMechanicsFEM-impl.h +++ b/ProcessLib/HydroMechanics/HydroMechanicsFEM-impl.h @@ -705,6 +705,7 @@ void HydroMechanicsLocalAssembler<ShapeFunctionDisplacement, ShapeFunctionPressure, IntegrationMethod, DisplacementDim>:: postNonLinearSolverConcrete(std::vector<double> const& local_x, + std::vector<double> const& /*local_xdot*/, double const t, double const dt, bool const use_monolithic_scheme) { diff --git a/ProcessLib/HydroMechanics/HydroMechanicsFEM.h b/ProcessLib/HydroMechanics/HydroMechanicsFEM.h index a16cad6cde9c3bb891493dac28a8aca62b3e49ea..97b6be8a462348d688d82fe2def794c3eacd1d71 100644 --- a/ProcessLib/HydroMechanics/HydroMechanicsFEM.h +++ b/ProcessLib/HydroMechanics/HydroMechanicsFEM.h @@ -196,6 +196,7 @@ public: std::vector<double> const& local_x_dot) override; void postNonLinearSolverConcrete(std::vector<double> const& local_x, + std::vector<double> const& local_xdot, double const t, double const dt, bool const use_monolithic_scheme) override; diff --git a/ProcessLib/HydroMechanics/HydroMechanicsProcess.cpp b/ProcessLib/HydroMechanics/HydroMechanicsProcess.cpp index d3f93d024b4425d47224c8632f7dec083f7c9a7b..2f755d8f9e44f972e9e879c0f545907547e46e45 100644 --- a/ProcessLib/HydroMechanics/HydroMechanicsProcess.cpp +++ b/ProcessLib/HydroMechanics/HydroMechanicsProcess.cpp @@ -502,8 +502,8 @@ void HydroMechanicsProcess<DisplacementDim>::postTimestepConcreteProcess( template <int DisplacementDim> void HydroMechanicsProcess<DisplacementDim>::postNonLinearSolverConcreteProcess( - GlobalVector const& x, const double t, double const dt, - const int process_id) + GlobalVector const& x, GlobalVector const& xdot, const double t, + double const dt, const int process_id) { if (!hasMechanicalProcess(process_id)) { @@ -515,7 +515,7 @@ void HydroMechanicsProcess<DisplacementDim>::postNonLinearSolverConcreteProcess( ProcessLib::ProcessVariable const& pv = getProcessVariables(process_id)[0]; GlobalExecutor::executeSelectedMemberOnDereferenced( &LocalAssemblerIF::postNonLinearSolver, _local_assemblers, - pv.getActiveElementIDs(), getDOFTable(process_id), x, t, dt, + pv.getActiveElementIDs(), getDOFTable(process_id), x, xdot, t, dt, _use_monolithic_scheme); } diff --git a/ProcessLib/LocalAssemblerInterface.cpp b/ProcessLib/LocalAssemblerInterface.cpp index a1e30460f7265e846fd76ca1f0c4f12c76e51b38..8823795742e39fcb6d0009538afa41186557211a 100644 --- a/ProcessLib/LocalAssemblerInterface.cpp +++ b/ProcessLib/LocalAssemblerInterface.cpp @@ -123,12 +123,15 @@ void LocalAssemblerInterface::postTimestep( void LocalAssemblerInterface::postNonLinearSolver( std::size_t const mesh_item_id, NumLib::LocalToGlobalIndexMap const& dof_table, GlobalVector const& x, - double const t, double const dt, bool const use_monolithic_scheme) + GlobalVector const& xdot, double const t, double const dt, + bool const use_monolithic_scheme) { auto const indices = NumLib::getIndices(mesh_item_id, dof_table); auto const local_x = x.get(indices); + auto const local_xdot = xdot.get(indices); - postNonLinearSolverConcrete(local_x, t, dt, use_monolithic_scheme); + postNonLinearSolverConcrete(local_x, local_xdot, t, dt, + use_monolithic_scheme); } } // namespace ProcessLib diff --git a/ProcessLib/LocalAssemblerInterface.h b/ProcessLib/LocalAssemblerInterface.h index 9a42e20b46d663a6ae00f6bf7fe55d81d46b570d..b8506c385523c4740b60faaceaa3ec022fd33ebe 100644 --- a/ProcessLib/LocalAssemblerInterface.h +++ b/ProcessLib/LocalAssemblerInterface.h @@ -95,8 +95,9 @@ public: void postNonLinearSolver(std::size_t const mesh_item_id, NumLib::LocalToGlobalIndexMap const& dof_table, - GlobalVector const& x, double const t, - double const dt, bool const use_monolithic_scheme); + GlobalVector const& x, GlobalVector const& xdot, + double const t, double const dt, + bool const use_monolithic_scheme); virtual std::vector<double> interpolateNodalValuesToIntegrationPoints( std::vector<double> const& /*local_x*/) @@ -143,7 +144,8 @@ private: } virtual void postNonLinearSolverConcrete( - std::vector<double> const& /*local_x*/, double const /*t*/, + std::vector<double> const& /*local_x*/, + std::vector<double> const& /*local_xdot*/, double const /*t*/, double const /*dt*/, bool const /*use_monolithic_scheme*/) { } diff --git a/ProcessLib/PhaseField/PhaseFieldProcess.cpp b/ProcessLib/PhaseField/PhaseFieldProcess.cpp index 24914bb733826a6b6016c087a05f4560801757ab..ffe8f9a9aa931e79337c88958b2cd3e33aa31e3e 100644 --- a/ProcessLib/PhaseField/PhaseFieldProcess.cpp +++ b/ProcessLib/PhaseField/PhaseFieldProcess.cpp @@ -289,8 +289,8 @@ void PhaseFieldProcess<DisplacementDim>::postTimestepConcreteProcess( template <int DisplacementDim> void PhaseFieldProcess<DisplacementDim>::postNonLinearSolverConcreteProcess( - GlobalVector const& x, const double t, double const /*dt*/, - const int process_id) + GlobalVector const& x, GlobalVector const& /*xdot*/, const double t, + double const /*dt*/, const int process_id) { _process_data.crack_volume = 0.0; diff --git a/ProcessLib/RichardsMechanics/RichardsMechanicsFEM-impl.h b/ProcessLib/RichardsMechanics/RichardsMechanicsFEM-impl.h index 4f1b15bff1e2ba1eb675b1c594d6d91508edc664..2fbd9078e814ce7776bb80d51356d0f8c32bf40b 100644 --- a/ProcessLib/RichardsMechanics/RichardsMechanicsFEM-impl.h +++ b/ProcessLib/RichardsMechanics/RichardsMechanicsFEM-impl.h @@ -1284,6 +1284,7 @@ void RichardsMechanicsLocalAssembler<ShapeFunctionDisplacement, ShapeFunctionPressure, IntegrationMethod, DisplacementDim>:: postNonLinearSolverConcrete(std::vector<double> const& local_x, + std::vector<double> const& /*local_xdot*/, double const t, double const dt, bool const use_monolithic_scheme) { diff --git a/ProcessLib/RichardsMechanics/RichardsMechanicsFEM.h b/ProcessLib/RichardsMechanics/RichardsMechanicsFEM.h index d076b0e98182c3c503f592b23fd32f8d37ef1a27..51372b341458471e1be326ca1111f2b537abefcc 100644 --- a/ProcessLib/RichardsMechanics/RichardsMechanicsFEM.h +++ b/ProcessLib/RichardsMechanics/RichardsMechanicsFEM.h @@ -163,6 +163,7 @@ public: std::vector<double> const& local_x_dot) override; void postNonLinearSolverConcrete(std::vector<double> const& local_x, + std::vector<double> const& local_xdot, double const t, double const dt, bool const use_monolithic_scheme) override; diff --git a/ProcessLib/RichardsMechanics/RichardsMechanicsProcess.cpp b/ProcessLib/RichardsMechanics/RichardsMechanicsProcess.cpp index 308d34d68cf1faf4dd798fb5258400a5a76f190e..6a0003476dda25ef48d1dff1f1347264e8452e28 100644 --- a/ProcessLib/RichardsMechanics/RichardsMechanicsProcess.cpp +++ b/ProcessLib/RichardsMechanics/RichardsMechanicsProcess.cpp @@ -569,7 +569,7 @@ void RichardsMechanicsProcess<DisplacementDim>:: // Calculate strain, stress or other internal variables of mechanics. GlobalExecutor::executeSelectedMemberOnDereferenced( &LocalAssemblerIF::postNonLinearSolver, _local_assemblers, - pv.getActiveElementIDs(), getDOFTable(process_id), x, t, dt, + pv.getActiveElementIDs(), getDOFTable(process_id), x, xdot, t, dt, _use_monolithic_scheme); } diff --git a/ProcessLib/ThermoHydroMechanics/ThermoHydroMechanicsFEM-impl.h b/ProcessLib/ThermoHydroMechanics/ThermoHydroMechanicsFEM-impl.h index 3568452f1ed9fc2c5e838d5c94c6a06aef784617..6d88cc19e50be5e28066bf012e54c8db4cf84155 100644 --- a/ProcessLib/ThermoHydroMechanics/ThermoHydroMechanicsFEM-impl.h +++ b/ProcessLib/ThermoHydroMechanics/ThermoHydroMechanicsFEM-impl.h @@ -548,6 +548,7 @@ void ThermoHydroMechanicsLocalAssembler<ShapeFunctionDisplacement, ShapeFunctionPressure, IntegrationMethod, DisplacementDim>:: postNonLinearSolverConcrete(std::vector<double> const& local_x, + std::vector<double> const& /*local_xdot*/, double const t, double const dt, bool const use_monolithic_scheme) { diff --git a/ProcessLib/ThermoHydroMechanics/ThermoHydroMechanicsFEM.h b/ProcessLib/ThermoHydroMechanics/ThermoHydroMechanicsFEM.h index 834c83f569b186725d35823e8dcfb1f8a32f9591..06aeb75f36ff416117e90b89ba31805e9398bf2d 100644 --- a/ProcessLib/ThermoHydroMechanics/ThermoHydroMechanicsFEM.h +++ b/ProcessLib/ThermoHydroMechanics/ThermoHydroMechanicsFEM.h @@ -127,6 +127,7 @@ public: std::vector<double> const& local_x_dot) override; void postNonLinearSolverConcrete(std::vector<double> const& local_x, + std::vector<double> const& local_xdot, double const t, double const dt, bool const use_monolithic_scheme) override; diff --git a/ProcessLib/ThermoHydroMechanics/ThermoHydroMechanicsProcess.cpp b/ProcessLib/ThermoHydroMechanics/ThermoHydroMechanicsProcess.cpp index 1d617050c357a1e57e2394b1d85a5f652fbade53..78264e80a535cc7b9d1f970a05ab199e22e091e8 100644 --- a/ProcessLib/ThermoHydroMechanics/ThermoHydroMechanicsProcess.cpp +++ b/ProcessLib/ThermoHydroMechanics/ThermoHydroMechanicsProcess.cpp @@ -371,7 +371,7 @@ void ThermoHydroMechanicsProcess<DisplacementDim>:: // Calculate strain, stress or other internal variables of mechanics. GlobalExecutor::executeMemberOnDereferenced( &LocalAssemblerInterface::postNonLinearSolver, _local_assemblers, - getDOFTable(process_id), x, t, dt, _use_monolithic_scheme); + getDOFTable(process_id), x, xdot, t, dt, _use_monolithic_scheme); } template <int DisplacementDim> diff --git a/ProcessLib/ThermoMechanicalPhaseField/ThermoMechanicalPhaseFieldProcess.cpp b/ProcessLib/ThermoMechanicalPhaseField/ThermoMechanicalPhaseFieldProcess.cpp index 1b3cada6384ae8a7cbbac78bbe3585f6b25b46e8..ed3e85e2a50c54f0e5467f4fed22d70947ebb3b7 100644 --- a/ProcessLib/ThermoMechanicalPhaseField/ThermoMechanicalPhaseFieldProcess.cpp +++ b/ProcessLib/ThermoMechanicalPhaseField/ThermoMechanicalPhaseFieldProcess.cpp @@ -314,7 +314,7 @@ void ThermoMechanicalPhaseFieldProcess<DisplacementDim>:: GlobalExecutor::executeSelectedMemberOnDereferenced( &LocalAssemblerInterface::postNonLinearSolver, _local_assemblers, - pv.getActiveElementIDs(), getDOFTable(process_id), x, t, dt, + pv.getActiveElementIDs(), getDOFTable(process_id), x, xdot, t, dt, use_monolithic_scheme); }