Skip to content

Incorrect x_dot (velocity) field with some steppers #96

@ikalash

Description

@ikalash

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.

Image

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.

Image
Image

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.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions