-
Notifications
You must be signed in to change notification settings - Fork 17
/
test_models.py
153 lines (115 loc) · 5.27 KB
/
test_models.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
import numpy as np
from pytest import approx, raises
from py_wave_runup import models
class TestStockdon2006(object):
def test_reflective(self):
model = models.Stockdon2006(Hs=4, Tp=11, beta=0.1)
assert model.R2 == approx(2.54, abs=0.01)
assert model.setup == approx(0.96, abs=0.01)
assert model.sig == approx(1.65, abs=0.01)
assert model.sinc == approx(2.06, abs=0.01)
assert model.swash == approx(2.64, abs=0.01)
def test_dissipative(self):
model = models.Stockdon2006(Hs=4, Tp=11, beta=0.001)
assert model.R2 == approx(1.18, abs=0.01)
assert model.setup == approx(0.0096, abs=0.01)
assert model.sig == approx(1.65, abs=0.01)
assert model.sinc == approx(0.02, abs=0.01)
assert model.swash == approx(1.65, abs=0.01)
def test_wave_length(self):
model = models.Stockdon2006(Hs=4, Lp=200, beta=0.05)
assert model.R2 == approx(1.69, 0.1)
def test_list_input(self):
model = models.Stockdon2006(Hs=[1, 2], Lp=[100, 200], beta=[0.05, 0.1])
assert model.R2 == approx((0.59, 1.84), abs=0.1)
assert model.setup == approx((0.17, 0.70), abs=0.1)
assert model.sig == approx((0.6, 1.2), abs=0.1)
assert model.sinc == approx((0.37, 1.5), abs=0.1)
assert model.swash == approx((0.71, 1.92), abs=0.01)
def test_no_wave_length(self):
with raises(ValueError):
models.Stockdon2006(Hs=1, beta=0.1)
def test_different_list_input(self):
with raises(ValueError):
models.Stockdon2006(Hs=[1, 2], Lp=[100, 200], beta=[0.1])
class TestPower2018(object):
def test_reflective(self):
model = models.Power2018(Hs=4, Tp=11, beta=0.1, r=0.00075)
assert model.R2 == approx(4.79, abs=0.01)
def test_dissipative(self):
model = models.Power2018(Hs=4, Tp=11, beta=0.001, r=0.00075)
assert model.R2 == approx(33.75, abs=0.01)
def test_low_wave_conditions(self):
model = models.Power2018(Hs=1, Tp=8, beta=0.07, r=0.00075)
assert model.R2 == approx(1.12, abs=0.01)
def test_list_input(self):
model = models.Power2018(
Hs=[1, 2], Lp=[100, 200], beta=[0.05, 0.1], r=[0.00075, 0.00075]
)
assert model.R2 == approx((0.922, 2.88), abs=0.1)
def test_no_roughness(self):
model = models.Power2018(Hs=4, Tp=11, beta=0.1)
assert np.isnan(model.R2)
class TestHolman1986(object):
def test_reflective(self):
model = models.Holman1986(Hs=4, Tp=11, beta=0.1)
assert model.R2 == approx(3.09, abs=0.01)
assert model.setup == approx(0.8, abs=0.01)
def test_dissipative(self):
model = models.Holman1986(Hs=4, Tp=11, beta=0.001)
assert model.R2 == approx(0.82, abs=0.01)
assert model.setup == approx(0.8, abs=0.01)
def test_list_input(self):
model = models.Holman1986(Hs=[1, 2], Lp=[100, 200], beta=[0.05, 0.1])
assert model.R2 == approx((0.62, 2.06), abs=0.1)
assert model.setup == approx((0.2, 0.4), abs=0.01)
class TestNielsen2009(object):
def test_reflective(self):
model = models.Nielsen2009(Hs=4, Tp=11, beta=0.1)
assert model.R2 == approx(3.27, abs=0.01)
class TestRuggiero2001(object):
def test_reflective(self):
model = models.Ruggiero2001(Hs=4, Tp=11, beta=0.1)
assert model.R2 == approx(2.35, abs=0.01)
def test_dissipative(self):
model = models.Ruggiero2001(Hs=4, Tp=11, beta=0.001)
assert model.R2 == approx(0.23, abs=0.01)
class TestVousdoukas2012(object):
def test_reflective(self):
model = models.Vousdoukas2012(Hs=4, Tp=11, beta=0.1)
assert model.R2 == approx(2.14, abs=0.01)
def test_dissipative(self):
model = models.Vousdoukas2012(Hs=4, Tp=11, beta=0.001)
assert model.R2 == approx(0.47, abs=0.01)
class TestAtkinson2018(object):
def test_reflective(self):
model = models.Atkinson2017(Hs=4, Tp=11, beta=0.1)
assert model.R2 == approx(3.17, abs=0.01)
def test_dissipative(self):
model = models.Atkinson2017(Hs=4, Tp=11, beta=0.001)
assert model.R2 == approx(0.67, abs=0.01)
class TestSenechal2011(object):
def test_reflective(self):
model = models.Senechal2011(Hs=4, Tp=11, beta=0.1)
assert model.R2 == approx(1.97, abs=0.01)
assert model.sig == approx(1.37, abs=0.01)
def test_dissipative(self):
model = models.Senechal2011(Hs=4, Tp=11, beta=0.001)
assert model.R2 == approx(1.97, abs=0.01)
assert model.sig == approx(1.37, abs=0.01)
class TestBeuzenl2019(object):
def test_reflective(self):
model = models.Beuzen2019(Hs=4, Tp=11, beta=0.1)
assert model.R2 == approx(2.18, abs=0.01)
def test_dissipative(self):
model = models.Beuzen2019(Hs=4, Tp=11, beta=0.001)
assert model.R2 == approx(2.12, abs=0.01)
class TestPassarella2018(object):
def test_reflective(self):
model = models.Passarella2018(Hs=4, Tp=11, beta=0.1)
assert model.sig == approx(1.57, abs=0.01)
assert model.swash == approx(2.05, abs=0.01)
def test_dissipative(self):
model = models.Passarella2018(Hs=4, Tp=11, beta=0.001)
assert model.sig == approx(0.10, abs=0.01)
assert model.swash == approx(1.02, abs=0.01)