From 726ce877c2b941f9bf002001e8b85a5794ac1142 Mon Sep 17 00:00:00 2001 From: Christoph Lehmann <christoph.lehmann@ufz.de> Date: Wed, 24 Apr 2024 17:31:45 +0200 Subject: [PATCH] [PL] Pass initial dt to first output computation Some time-dependent material models are not running with the dt=1 (at restart) and require "proper" time step sizes. --- ProcessLib/TimeLoop.cpp | 17 +++++++---------- ProcessLib/TimeLoop.h | 2 +- 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/ProcessLib/TimeLoop.cpp b/ProcessLib/TimeLoop.cpp index fb97d6f59a6..2ce9cb19695 100644 --- a/ProcessLib/TimeLoop.cpp +++ b/ProcessLib/TimeLoop.cpp @@ -495,12 +495,6 @@ void TimeLoop::initialize() updateDeactivatedSubdomains(_per_process_data, _start_time); - // Output initial conditions - { - preOutputInitialConditions(_start_time); - outputSolutions(0, _start_time, &Output::doOutput); - } - auto const time_step_constraints = generateOutputTimeStepConstraints( calculateUniqueFixedTimesForAllOutputs(_outputs)); @@ -508,6 +502,12 @@ void TimeLoop::initialize() computeTimeStepping(0.0, _current_time, _accepted_steps, _rejected_steps, time_step_constraints); + // Output initial conditions + { + preOutputInitialConditions(_start_time, _dt); + outputSolutions(0, _start_time, &Output::doOutput); + } + calculateNonEquilibriumInitialResiduum( _per_process_data, _process_solutions, _process_solutions_prev); } @@ -752,7 +752,7 @@ TimeLoop::~TimeLoop() } } -void TimeLoop::preOutputInitialConditions(const double t) const +void TimeLoop::preOutputInitialConditions(const double t, const double dt) const { for (auto const& process_data : _per_process_data) { @@ -766,9 +766,6 @@ void TimeLoop::preOutputInitialConditions(const double t) const auto const process_id = process_data->process_id; auto& pcs = process_data->process; - // dummy value to handle the time derivative terms more or less - // correctly, i.e. to ignore them. - double const dt = 1; process_data->time_disc->nextTimestep(t, dt); pcs.preTimestep(_process_solutions, _start_time, dt, process_id); diff --git a/ProcessLib/TimeLoop.h b/ProcessLib/TimeLoop.h index 43c5c112529..e96047a9792 100644 --- a/ProcessLib/TimeLoop.h +++ b/ProcessLib/TimeLoop.h @@ -122,7 +122,7 @@ private: private: std::vector<std::function<double(double, double)>> generateOutputTimeStepConstraints(std::vector<double>&& fixed_times) const; - void preOutputInitialConditions(const double t) const; + void preOutputInitialConditions(const double t, const double dt) const; std::vector<GlobalVector*> _process_solutions; std::vector<GlobalVector*> _process_solutions_prev; std::vector<Output> _outputs; -- GitLab