Fixing bug in link pressure
This commit is contained in:
@ -1302,6 +1302,7 @@ void FixDeform::set_volume()
|
|||||||
double p2 = pressure->vector[fixed];
|
double p2 = pressure->vector[fixed];
|
||||||
double p1i = set[i].prior_pressure;
|
double p1i = set[i].prior_pressure;
|
||||||
double p2i = set[fixed].prior_pressure;
|
double p2i = set[fixed].prior_pressure;
|
||||||
|
double denominator;
|
||||||
|
|
||||||
if (e3 == 0) {
|
if (e3 == 0) {
|
||||||
e1 = 0.0;
|
e1 = 0.0;
|
||||||
@ -1314,7 +1315,12 @@ void FixDeform::set_volume()
|
|||||||
if (!linked_pressure) {
|
if (!linked_pressure) {
|
||||||
// Calculate first strain rate by expanding stress to linear order, p1(t+dt) = p2(t+dt)
|
// Calculate first strain rate by expanding stress to linear order, p1(t+dt) = p2(t+dt)
|
||||||
// Calculate second strain rate to preserve volume
|
// Calculate second strain rate to preserve volume
|
||||||
e1 = -e3 / (1 + e3 * dt) * (p2 - p2i) - e2i * (p1 - p2) / (p2 - p2i + (p1 - p1i) / e1i * e2i);
|
denominator = (p2 - p2i + (p1 - p1i) / e1i * e2i);
|
||||||
|
if (denominator != 0.0 && e1i != 0.0) {
|
||||||
|
e1 = (-e3 / (1 + e3 * dt) * (p2 - p2i) - e2i * (p1 - p2)) / denominator;
|
||||||
|
} else {
|
||||||
|
e1 = e2i;
|
||||||
|
}
|
||||||
e2 = (1.0 - (1 + e3 * dt) * (1 + e1 * dt)) / ((1 + e3 * dt) * (1 + e1 * dt) * dt);
|
e2 = (1.0 - (1 + e3 * dt) * (1 + e1 * dt)) / ((1 + e3 * dt) * (1 + e1 * dt) * dt);
|
||||||
|
|
||||||
shift = 0.5 * L1i * (1.0 + e1 * dt);
|
shift = 0.5 * L1i * (1.0 + e1 * dt);
|
||||||
|
|||||||
Reference in New Issue
Block a user