From 70f9e01588134eaddf746e1e28deb0c7a77e42ff Mon Sep 17 00:00:00 2001 From: Dmitri Naumov <dmitri.naumov@ufz.de> Date: Tue, 13 Aug 2019 18:38:59 +0200 Subject: [PATCH] [PL] THM; split push back btw. init and postTS. --- .../ThermoHydroMechanicsFEM.h | 16 +++++++++++++--- .../ThermoHydroMechanicsProcess.cpp | 8 ++++++++ 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/ProcessLib/ThermoHydroMechanics/ThermoHydroMechanicsFEM.h b/ProcessLib/ThermoHydroMechanics/ThermoHydroMechanicsFEM.h index b7df421dbce..18fb21dcb04 100644 --- a/ProcessLib/ThermoHydroMechanics/ThermoHydroMechanicsFEM.h +++ b/ProcessLib/ThermoHydroMechanics/ThermoHydroMechanicsFEM.h @@ -88,9 +88,19 @@ public: std::vector<double>& local_rhs_data, std::vector<double>& local_Jac_data) override; - void preTimestepConcrete(std::vector<double> const& /*local_x*/, - double const /*t*/, - double const /*delta_t*/) override + void initializeConcrete() override + { + unsigned const n_integration_points = + _integration_method.getNumberOfPoints(); + + for (unsigned ip = 0; ip < n_integration_points; ip++) + { + _ip_data[ip].pushBackState(); + } + } + + void postTimestepConcrete(std::vector<double> const& /*local_x*/ + ) override { unsigned const n_integration_points = _integration_method.getNumberOfPoints(); diff --git a/ProcessLib/ThermoHydroMechanics/ThermoHydroMechanicsProcess.cpp b/ProcessLib/ThermoHydroMechanics/ThermoHydroMechanicsProcess.cpp index 5e6fb80989a..9cab4ed92ff 100644 --- a/ProcessLib/ThermoHydroMechanics/ThermoHydroMechanicsProcess.cpp +++ b/ProcessLib/ThermoHydroMechanics/ThermoHydroMechanicsProcess.cpp @@ -202,6 +202,14 @@ void ThermoHydroMechanicsProcess<DisplacementDim>::initializeConcreteProcess( MeshLib::getOrCreateMeshProperty<double>( const_cast<MeshLib::Mesh&>(mesh), "temperature_interpolated", MeshLib::MeshItemType::Node, 1); + + // Initialize local assemblers after all variables have been set. + const int process_id = 0; + ProcessLib::ProcessVariable const& pv = getProcessVariables(process_id)[0]; + + GlobalExecutor::executeSelectedMemberOnDereferenced( + &LocalAssemblerInterface::initialize, _local_assemblers, + pv.getActiveElementIDs(), *_local_to_global_index_map); } template <int DisplacementDim> -- GitLab