diff --git a/ProcessLib/AbstractJacobianAssembler.h b/ProcessLib/AbstractJacobianAssembler.h index e11cb1917c75945caa7930cad3ba2dc7c8609ea5..b148e7cf952fe7f354eb1088b2f59aea268bf814 100644 --- a/ProcessLib/AbstractJacobianAssembler.h +++ b/ProcessLib/AbstractJacobianAssembler.h @@ -10,7 +10,9 @@ #pragma once +#include <Eigen/Dense> #include <vector> + #include "BaseLib/Error.h" namespace ProcessLib @@ -38,9 +40,10 @@ public: //! \f$b\f$ with coupling. virtual void assembleWithJacobianForStaggeredScheme( LocalAssemblerInterface& /*local_assembler*/, double const /*t*/, - double const /*dt*/, std::vector<double> const& /*local_xdot*/, - const double /*dxdot_dx*/, const double /*dx_dx*/, - int const /*process_id*/, std::vector<double>& /*local_M_data*/, + double const /*dt*/, Eigen::VectorXd const& /*local_x*/, + std::vector<double> const& /*local_xdot*/, const double /*dxdot_dx*/, + const double /*dx_dx*/, int const /*process_id*/, + std::vector<double>& /*local_M_data*/, std::vector<double>& /*local_K_data*/, std::vector<double>& /*local_b_data*/, std::vector<double>& /*local_Jac_data*/, diff --git a/ProcessLib/AnalyticalJacobianAssembler.cpp b/ProcessLib/AnalyticalJacobianAssembler.cpp index 1959c2ef151139493faf15ef3ea8516982fd1c06..991f5b8edc305f9cf201ec9d0a4009c5799d2ba7 100644 --- a/ProcessLib/AnalyticalJacobianAssembler.cpp +++ b/ProcessLib/AnalyticalJacobianAssembler.cpp @@ -28,14 +28,14 @@ void AnalyticalJacobianAssembler::assembleWithJacobian( void AnalyticalJacobianAssembler::assembleWithJacobianForStaggeredScheme( LocalAssemblerInterface& local_assembler, double const t, double const dt, - std::vector<double> const& local_xdot, const double dxdot_dx, - const double dx_dx, int const process_id, std::vector<double>& local_M_data, - std::vector<double>& local_K_data, std::vector<double>& local_b_data, - std::vector<double>& local_Jac_data, + Eigen::VectorXd const& local_x, std::vector<double> const& local_xdot, + const double dxdot_dx, const double dx_dx, int const process_id, + std::vector<double>& local_M_data, std::vector<double>& local_K_data, + std::vector<double>& local_b_data, std::vector<double>& local_Jac_data, LocalCoupledSolutions const& local_coupled_solutions) { local_assembler.assembleWithJacobianForStaggeredScheme( - t, dt, local_xdot, dxdot_dx, dx_dx, process_id, local_M_data, + t, dt, local_x, local_xdot, dxdot_dx, dx_dx, process_id, local_M_data, local_K_data, local_b_data, local_Jac_data, local_coupled_solutions); } diff --git a/ProcessLib/AnalyticalJacobianAssembler.h b/ProcessLib/AnalyticalJacobianAssembler.h index 814f1166f0937c7d084005b786f9b5878bc70095..c8d7feef0a402fd18e41a368100549e7e9aeae0b 100644 --- a/ProcessLib/AnalyticalJacobianAssembler.h +++ b/ProcessLib/AnalyticalJacobianAssembler.h @@ -43,8 +43,9 @@ public: void assembleWithJacobianForStaggeredScheme( LocalAssemblerInterface& local_assembler, double const t, - double const dt, std::vector<double> const& local_xdot, - const double dxdot_dx, const double dx_dx, int const process_id, + double const dt, Eigen::VectorXd const& local_x, + std::vector<double> const& local_xdot, const double dxdot_dx, + const double dx_dx, int const process_id, std::vector<double>& local_M_data, std::vector<double>& local_K_data, std::vector<double>& local_b_data, std::vector<double>& local_Jac_data, LocalCoupledSolutions const& local_coupled_solutions) override; diff --git a/ProcessLib/LocalAssemblerInterface.cpp b/ProcessLib/LocalAssemblerInterface.cpp index 9bc1452eb926af8d4bc9f459bf833e9810157892..65dee4cc301a18e2b58986b570ca92c5b5678c27 100644 --- a/ProcessLib/LocalAssemblerInterface.cpp +++ b/ProcessLib/LocalAssemblerInterface.cpp @@ -54,7 +54,7 @@ void LocalAssemblerInterface::assembleWithJacobian( } void LocalAssemblerInterface::assembleWithJacobianForStaggeredScheme( - double const /*t*/, double const /*dt*/, + double const /*t*/, double const /*dt*/, Eigen::VectorXd const& /*local_x*/, std::vector<double> const& /*local_xdot*/, const double /*dxdot_dx*/, const double /*dx_dx*/, int const /*process_id*/, std::vector<double>& /*local_M_data*/, diff --git a/ProcessLib/LocalAssemblerInterface.h b/ProcessLib/LocalAssemblerInterface.h index d619eceb7c186553666bd07bee063c88e0549a56..b6bdd65e5f0e75747ceff3e4c2d43458b2e5b473 100644 --- a/ProcessLib/LocalAssemblerInterface.h +++ b/ProcessLib/LocalAssemblerInterface.h @@ -68,8 +68,9 @@ public: std::vector<double>& local_Jac_data); virtual void assembleWithJacobianForStaggeredScheme( - double const t, double const dt, std::vector<double> const& local_xdot, - const double dxdot_dx, const double dx_dx, int const process_id, + double const t, double const dt, Eigen::VectorXd const& local_x, + std::vector<double> const& local_xdot, const double dxdot_dx, + const double dx_dx, int const process_id, std::vector<double>& local_M_data, std::vector<double>& local_K_data, std::vector<double>& local_b_data, std::vector<double>& local_Jac_data, LocalCoupledSolutions const& local_coupled_solutions); diff --git a/ProcessLib/VectorMatrixAssembler.cpp b/ProcessLib/VectorMatrixAssembler.cpp index 61f73d3ae1bedb2f787dc9462ea8c6dba3f992b2..c58d77a181b04639f686bd3041cf1d8414662083 100644 --- a/ProcessLib/VectorMatrixAssembler.cpp +++ b/ProcessLib/VectorMatrixAssembler.cpp @@ -142,13 +142,15 @@ void VectorMatrixAssembler::assembleWithJacobian( auto local_coupled_xs = getCoupledLocalSolutions(x, indices_of_processes); + auto const local_x = MathLib::toVector(local_coupled_xs); + ProcessLib::LocalCoupledSolutions local_coupled_solutions( std::move(local_coupled_xs0), std::move(local_coupled_xs)); _jacobian_assembler->assembleWithJacobianForStaggeredScheme( - local_assembler, t, dt, local_xdot, dxdot_dx, dx_dx, process_id, - _local_M_data, _local_K_data, _local_b_data, _local_Jac_data, - local_coupled_solutions); + local_assembler, t, dt, local_x, local_xdot, dxdot_dx, dx_dx, + process_id, _local_M_data, _local_K_data, _local_b_data, + _local_Jac_data, local_coupled_solutions); } auto const num_r_c = indices.size();