Skip to content

Commit

Permalink
Fix trilinear case 9
Browse files Browse the repository at this point in the history
  • Loading branch information
mewilhel committed Nov 12, 2020
1 parent 3c6b022 commit 8e92c45
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 14 deletions.
20 changes: 10 additions & 10 deletions src/forward_operators/trilinear.jl
Original file line number Diff line number Diff line change
Expand Up @@ -606,6 +606,13 @@ function trilinear_case_6(x::MC{N,T}, y::MC{N,T}, z::MC{N,T}, q::Interval{Float6
cv_ay1, cv_ay2, cv_ay3, cv_ay4, cv_ay5, cv_ay6 = xzUL, xzLU, xzLL, xzUU, xzLU, -θcv/delY
cv_az1, cv_az2, cv_az3, cv_az4, cv_az5, cv_az6 = xyUL, xyLU, xyLL, xyUU, xyUU, xyLL

cv1 = cv_ax1*x.cc + cv_ay1*y.cc + cv_az1*z.cv + cv_b1
cv2 = cv_ax2*x.cc + cv_ay2*y.cc + cv_az2*z.cc + cv_b2
cv3 = cv_ax3*x.cv + cv_ay3*y.cc + cv_az3*z.cv + cv_b3
cv4 = cv_ax4*x.cv + cv_ay4*y.cc + cv_az4*z.cc + cv_b4
cv5 = cv_ax5*x.cv + cv_ay5*y.cc + cv_az5*z.cc + cv_b5
cv6 = cv_ax6*x.cc + cv_ay6*ifelse(cv_ay6 > 0.0, y.cv, -y.cc) + cv_az6*z.cv + cv_b6

# define cc and coefficients
cc_b1 = -2.0*xyzUUL
cc_b2 = -(xyzUUU + xyzULU)
Expand All @@ -618,19 +625,12 @@ function trilinear_case_6(x::MC{N,T}, y::MC{N,T}, z::MC{N,T}, q::Interval{Float6
cc_ay1, cc_ay2, cc_ay3, cc_ay4, cc_ay5, cc_ay6 = xzUL, xzUU, xzLL, xzLU, xzLU, θcc/delY
cc_az1, cc_az2, cc_az3, cc_az4, cc_az5, cc_az6 = xyUU, xyUL, xyLU, xyLL, xyUL, xyLU

cv1 = cv_ax1*x.cv + cv_ay1*y.cc + cv_az1*z.cc + cv_b1
cv2 = cv_ax2*x.cc + cv_ay2*y.cc + cv_az2*z.cv + cv_b2
cv3 = cv_ax3*x.cc + cv_ay3*y.cc + cv_az3*z.cc + cv_b3
cv4 = cv_ax4*x.cv + cv_ay4*y.cc + cv_az4*z.cv + cv_b4
cv5 = cv_ax5*x.cc + cv_ay5*y.cc + cv_az5*z.cv + cv_b5
cv6 = cv_ax6*x.cv + cv_ay6*ifelse(cv_ay6 > 0.0, y.cv, -y.cc) + cv_az6*z.cc + cv_b6

cc1 = cc_ax1*x.cv + cc_ay1*y.cv + cc_az1*z.cc + cc_b1
cc2 = cc_ax2*x.cv + cc_ay2*y.cv + cc_az2*z.cv + cc_b2
cc3 = cc_ax3*x.cc + cc_ay3*y.cv + cc_az3*z.cc + cc_b3
cc4 = cc_ax4*x.cc + cc_ay4*y.cv + cc_az4*z.cv + cc_b4
cc5 = cc_ax5*x.cc + cc_ay5*y.cv + cc_az5*z.cv + cc_b5
cc6 = cc_ax6*x.cv + cc_ay6*ifelse(cc_ay6 > 0.0, y.cc, -y.cv) + cc_az6*z.cv + cc_b6
cc6 = cc_ax6*x.cv + cc_ay6*ifelse(cc_ay6 > 0.0, y.cc, -y.cv) + cc_az6*z.cc + cc_b6

@unpack_trilinear_end()
end
Expand Down Expand Up @@ -826,7 +826,7 @@ function trilinear_case_9(x::MC{N,T}, y::MC{N,T}, z::MC{N,T}, q::Interval{Float6
cv_b3 = -(xyzLUU + xyzLLU)
cv_b4 = -(xyzULU + xyzLLU)
cv_b5 = -(xyzLUL + xyzUUL)
cv_b6 = -θcv*xL/delX - xyzLLL - xyzUUU + xyzULU
cv_b6 = -θcv*xL/delX - xyzUUL - xyzULU + xyzLLL

cv_ax1, cv_ax2, cv_ax3, cv_ax4, cv_ax5, cv_ax6 = yzLL, yzUU, yzUU, yzLU, yzUL, θcv/delX
cv_ay1, cv_ay2, cv_ay3, cv_ay4, cv_ay5, cv_ay6 = xzUL, xzLL, xzLU, xzUU, xzLL, xzUU
Expand All @@ -838,7 +838,7 @@ function trilinear_case_9(x::MC{N,T}, y::MC{N,T}, z::MC{N,T}, q::Interval{Float6
cc_b3 = -(xyzUUU + xyzULU)
cc_b4 = -(xyzUUU + xyzUUL)
cc_b5 = -(xyzLUL + xyzUUL)
cc_b6 = θcc*xU/delX - xyzULL - xyzLUU + xyzLLU
cc_b6 = θcc*xU/delX - xyzLUL - xyzLLU + xyzULL

cc_ax1, cc_ax2, cc_ax3, cc_ax4, cc_ax5, cc_ax6 = yzLL, yzLU, yzUU, yzUU, yzUL, -θcc/delX
cc_ay1, cc_ay2, cc_ay3, cc_ay4, cc_ay5, cc_ay6 = xzLL, xzLU, xzUU, xzUL, xzUL, xzLU
Expand Down
8 changes: 4 additions & 4 deletions test/forward_mccormick.jl
Original file line number Diff line number Diff line change
Expand Up @@ -1993,7 +1993,7 @@ end
MC{3,NS}(2.0, Interval{Float64}(1.0,3.0), 2); MC{3,NS}(-2.0, Interval{Float64}(-3.0,3.0), 2);
MC{3,NS}(-2.0, Interval{Float64}(-4.0, 1.0), 2); MC{3,NS}(-0.5, Interval{Float64}(-1.0,1.0), 2);
MC{3,NS}(-3.4, Interval{Float64}(-4.0, -2.0), 2); MC{3,NS}(-3.4, Interval{Float64}(-4.0, -2.0), 2);
MC{3,NS}(-2.4, Interval{Float64}(-3.0, 0.4), 2); MC{3,NS}(-4.0, Interval{Float64}(-7.0,-3.0), 2)
MC{3,NS}(-2.4, Interval{Float64}(-3.0, -0.4), 2); MC{3,NS}(-4.0, Interval{Float64}(-7.0,-3.0), 2)
]

z = [MC{3,NS}(1.4, Interval{Float64}(1.0, 3.5), 3); MC{3,NS}(1.4, Interval{Float64}(-1.0, 3.5), 3);
Expand Down Expand Up @@ -2118,13 +2118,13 @@ end
#@show q8b
#@show q8bv

# TODO: SWITCHED RELAXATIONS
# improves and likely valid
q9 = trilinear(x[15], y[15], z[15])
q9v = (x[15]*y[15])*z[15]
#@test isapprox(q9.cv, 0.0, atol = 1E-3)
#@test isapprox(q9.cc, 0.0, atol = 1E-3)
@show q9
@show q9v
#@show q9
#@show q9v

# improves and likely valid
q10 = trilinear(x[16], y[16], z[16])
Expand Down

0 comments on commit 8e92c45

Please sign in to comment.