-
Notifications
You must be signed in to change notification settings - Fork 56
Description
Bug Description: What's going wrong?
TSI::Algorithm::output() mainly writes output for the thermo field and the structure field:
thermo_field()->output(forced_writerestart);
structure_field()->output(forced_writerestart);Besides that, TSI::Algorithm::output() also writes some cross-outputs, i.e., the displacement into the thermo field and the temperature into the structure field using the old output format, applying the mortar mapping if necessary. For that, it calls the disc_writers of the respective fields directly. The problem is that it does so regardless of whether or not the output methods of the individual fields actually wrote restart/old output and hence called new_step() already. If new_step() was not called before, this fails with a HDF5 error.
Expectations
It shouldn't fail.
Possible Solution
There are 3 possible solutions:
TSI::Algorithm::output()needs to determine if the individual fields callednew_stepalready/havedatawritten. Since theoutputmethods don't and shouldn't return anything, this would require extensive checks based on the input parameters.- Since the faulty cross-outputs are not needed for restarts, we could move the output of temperature in the structure field and displacement in the thermo field to runtime vtk output. The problem with that is that the vtk writers of the individual fields are not available in this method and would need to be callable from the adapters, I assume
- Remove this cross-output altogether. This would make
TSI_Algorithm::output()much slimmer (just calling output of the fields). Displaying the temperature on the deformed geometry for matching grids is trivial in Paraview; for non-matching grids, it can probably be interpolated somehow.
The last two approaches would also mean that we can get rid of the TSI specific old post_monitor writers, which would be helpful to afterwards remove the TermoWriter (since the TSI writer inherits from the thermo writer)
Steps to Reproduce
This behaviour can be reproduced for instance by modifying the volmortar3D_tsi_error.4C.yaml test:
IO:
STRUCT_DISP: false # false doesnt work
THERM_TEMPGRAD: no # no doesnt work
TSI DYNAMIC:
RESTARTEVERY: 0 # this leads to no restart output being written, hence no new_stepYour Environment
- Relevant repo SHA1s:
- Relevant configure flags or configure script:
- Operating system and version:
- Compiler and TPL versions:
Related Issues and Pull Requests
- Blocks [TSI] Use
WRITE_INITIAL_STATE#1678 (since no restart output is written atstep=0andvolmortar3D_tsi_error.4C.yamldoesn't setIO/THERM_TEMPGRADto notno. - Follows
- Related to
- Part of
- Composed of
Interested Parties
fyi @c-p-schmidt