Nothing
# testing overlap functions for 2D. Circle, square, annulus.
test_that(
'Overlap Errors',{
expect_error(calc_overlap_2D(alpha=-1))
expect_error(calc_overlap_2D(alpha=1, r=-1))
expect_error(calc_overlap_2D(alpha=1, r=0.5, rmin=-1))
expect_error(calc_overlap_2D(alpha=1, r=0.5, rmin=1))
expect_error(calc_overlap_2D(alpha=1, bound = "triangle"))
expect_error(circle_overlap_ia(3.4, 2, 1))
expect_error(calc_overlap_2D(alpha=1, r=1, rmin=2, bound="annulus"))
}
)
test_that(
'Overlap Square', {
#given
rad=0.5
alpha1=0.2
alpha2= 0.35
alpha3 = 1
theta=acos(0.5/0.7)
a1 = 0.5*(theta-sin(theta))*0.7^2
#when
overlap1 = calc_overlap_2D(alpha=alpha1, r=rad)
overlap2 = calc_overlap_2D(alpha=alpha2, r=rad)
overlap3 = calc_overlap_2D(alpha=alpha3, r=rad)
#then
expect_equal(overlap1, (pi*0.4^2/4)/0.25)
expect_equal(overlap2, (pi*0.7^2/4 - a1)/0.25)
expect_equal(overlap3, 1)
}
)
test_that(
'Overlap Circle', {
#given
rad=0.5
alpha1 = 0.25
alpha2 = 0.4
alpha3 = 2
theta1 = 2*acos(0.5)
theta2 = 2*acos(0.5)
a1 = 0.5*(theta1-sin(theta1))*0.5^2
a2 = 0.5*(theta2-sin(theta2))*0.5^2
o1 = a1+a2
theta1 = 2*acos(0.8)
theta2 = 2*acos(-0.28)
a1 = 0.5*(theta1-sin(theta1))*0.8^2
a2 = 0.5*(theta2 + sin((2 * pi - theta2)))*0.5^2
o2 = a1+a2
#when
overlap1 = calc_overlap_2D(alpha=alpha1, r=rad, bound="circle")
overlap2 = calc_overlap_2D(alpha=alpha2, r=rad, bound="circle")
overlap3 = calc_overlap_2D(alpha=alpha3, r=rad, bound="circle")
#then
expect_equal(overlap1, o1/(pi*rad^2))
expect_equal(overlap2, o2/(pi*rad^2))
expect_equal(overlap3, 1)
}
)
test_that(
'Overlap Annulus', {
#given
R_big = 2
r_lit = 1
total = pi*3
#First overlap
alpha1 = 0.25 # 0 < 0.5 < 1
alpha2 = 0.75 # 1 < 1.5 < 2
alpha5 = 1.2 # 2 < 2.4 < 3
alpha3 = 1.7 # 3 < 3.4 < 4
alpha4 = 3 # 4 < 6
theta1 = 2*acos(0.125)
theta2 = 2*acos(0.96875)
a1 = 0.5*(theta1-sin(theta1))*0.5^2
a2 = 0.5*(theta2-sin(theta2))*2^2
o1 = a1+a2
#Second overlap
theta1 = 2*acos(0.375)
theta2 = 2*acos(0.71875)
theta3 = 2*acos(((2*alpha2)^2+R_big^2-r_lit^2)/(2*(2*alpha2)*R_big))
theta4 = 2*acos((R_big^2+r_lit^2-(2*alpha2)^2)/(2*r_lit*R_big))
a1 = 0.5*(theta1-sin(theta1))*1.5^2
a2=0
if (2*alpha2 < 2*sqrt(2)){
a2 = R_big^2*0.5*(theta2 - sin(theta2))
} else {
a2 = R_big^2*0.5*(theta2 + sin((2*pi-theta2)))
}
a3 = 1.5^2*0.5*(theta3 - sin(theta3))
a4 = 0
if ((2*alpha2)^2 < r_lit^2+R_big^2){
a4 = r_lit^2*0.5*(theta4 - sin(theta4))
} else {
a4 = r_lit^2*0.5*(theta4 + sin((2*pi-theta4)))
}
o2 = a1+a2-a3-a4
#Third overlap
theta1 = 2*acos(0.85)
theta2 = 2*acos(-0.445)
a1 = 0.5*(theta1-sin(theta1))*(2*alpha3)^2
a2=0
if (alpha3*2 < (R_big*sqrt(2))){
a2 = R_big^2 * 0.5 * (theta2 - sin(theta2))
} else {
a2 = R_big^2 * 0.5 * (theta2 + sin((2 * pi - theta2)))
}
o3 = a1+a2
#Fifth overlap
theta1 = 2*acos(0.6)
theta2 = 2*acos(0.28)
theta3 = 2*acos(((2*alpha5)^2+R_big^2-r_lit^2)/(2*(2*alpha5)*R_big))
theta4 = 2*acos((R_big^2+r_lit^2-(2*alpha5)^2)/(2*r_lit*R_big))
a1 = 0.5*(theta1-sin(theta1))*2.4^2
a2=0
if (2*alpha5<2*sqrt(2)){
a2 = R_big^2*0.5*(theta2 - sin(theta2))
} else {
a2 = R_big^2*0.5*(theta2 + sin((2*pi-theta2)))
}
a3 = 2.4^2*0.5*(theta3 - sin(theta3))
a4 = 0
if ((2*alpha5)^2 < r_lit^2+R_big^2){
a4 = r_lit^2*0.5*(theta4 - sin(theta4))
} else {
a4 = r_lit^2*0.5*(theta4 + sin((2*pi-theta4)))
}
o5 = a1+a2-a3-a4
#when
overlap1 = calc_overlap_2D(alpha=alpha1, r=R_big, rmin=r_lit, bound="annulus")
overlap2 = calc_overlap_2D(alpha=alpha2, r=R_big, rmin=r_lit, bound="annulus")
overlap3 = calc_overlap_2D(alpha=alpha3, r=R_big, rmin=r_lit, bound="annulus")
overlap4 = calc_overlap_2D(alpha=alpha4, r=R_big, rmin=r_lit, bound="annulus")
overlap5 = calc_overlap_2D(alpha=alpha5, r=R_big, rmin=r_lit, bound="annulus")
#then
expect_equal(overlap1, o1/total)
expect_equal(overlap2, o2/total)
expect_equal(overlap3, (o3 - pi*r_lit^2)/total)
expect_equal(overlap4, 1)
expect_equal(overlap5, o5/total)
}
)
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.