diff --git a/ProcessLib/HydroMechanics/HydroMechanicsFEM.h b/ProcessLib/HydroMechanics/HydroMechanicsFEM.h index 3431216d2447dc4eeed67c664ae7c25e7c9c535f..5ac173925f9bc31aea995e55cefcb07116934753 100644 --- a/ProcessLib/HydroMechanics/HydroMechanicsFEM.h +++ b/ProcessLib/HydroMechanics/HydroMechanicsFEM.h @@ -155,9 +155,18 @@ public: std::vector<double>& local_b_data, std::vector<double>& local_Jac_data, LocalCoupledSolutions const& local_coupled_solutions) 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/HydroMechanics/HydroMechanicsProcess.cpp b/ProcessLib/HydroMechanics/HydroMechanicsProcess.cpp index 0ceeb1c0237fc9da145b5a06f1efc6dd5b435fc5..3a1bcd5fd4ebd6b939fbe6a9cf2ae808848fb92b 100644 --- a/ProcessLib/HydroMechanics/HydroMechanicsProcess.cpp +++ b/ProcessLib/HydroMechanics/HydroMechanicsProcess.cpp @@ -245,6 +245,14 @@ void HydroMechanicsProcess<DisplacementDim>::initializeConcreteProcess( MeshLib::getOrCreateMeshProperty<double>( const_cast<MeshLib::Mesh&>(mesh), "pressure_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>