-
Notifications
You must be signed in to change notification settings - Fork 7
Description
There is an issue discovered recently where the x_dot (velocity) fields computed in Albany/written to Exodus file are incorrect. There seem to be 2 instances of this problem:
1.) The entire x_dot field is 0, when it should be non-zero.
2.) The x_dot field appears correct except at the boundary where a transient Dirichlet BC is applied.
Issue 1.) can be reproduced by running https://github.com/sandialabs/LCM/blob/main/tests/TransientHeat2D/input_be.yaml and https://github.com/sandialabs/LCM/blob/main/tests/TransientHeat2D/input_rk.yaml for the TransientHeat2D problem, where the DBCs applied are all 0 except at the bottom of the domain, where a 1*t time-dependent DBC is prescribed. The x_dot should therefore be 1.0 for all times at the bottom boundary. The correct behavior is observed when using a Backward Euler stepper, but not when using an RK Implicit Midpoint stepper, as shown below.
Issue 2.) can be reproduced by running the LCM/Cuboid problem https://github.com/sandialabs/LCM/blob/main/tests/LCM/Cuboid/cuboid_newmark_tempus.yaml . With the current mesh utilized, the z-velocity field (x_dot) jumps from 0 (top figure below) to 2 (bottom figure below) between time-steps. Since again we have a 1*t time-dependent DBC prescribed, this time at the top of the domain, again x_dot should be 1.0 for all times at the top boundary. This seems to happen independent of which 2nd-order-in-time stepper is used (all variants of Newmark in Tempus, Trapezoidal Rule in Piro). A "fix" is to specify an initial condition that is consistent with the DBC being imposed. However, the DBC value should trump the initial condition and will in general not be constant or known, so this "fix" is not viable in general.
The same issues are present in Albany main, not just LCM. After a lot of detective work, I don't see how x_dot could be modified on the Albany side; it appears to be modified on the Trilinos side, even for issue 2.) (which is a bit surprising since the solvers don't know anything about the DBCs/DBC boundaries and the problem happens for all steppers). For 1.), it seems likely that Tempus is not calculating x_dot correctly for certain steppers.