Skip to content

Commit

Permalink
Fix formatting
Browse files Browse the repository at this point in the history
  • Loading branch information
chrisleaman committed Jul 7, 2021
1 parent 922b4a1 commit 0f4e566
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 37 deletions.
44 changes: 22 additions & 22 deletions py_wave_runup/datasets.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,28 +19,28 @@

def load_power18():
"""
Loads wave runup data included with Power et al (2018)
This function loads the supplementary data from:
Power, H.E., Gharabaghi, B., Bonakdari, H., Robertson, B., Atkinson, A.L.,
Baldock, T.E., 2018. Prediction of wave runup on beaches using
Gene-Expression Programming and empirical relationships. Coastal Engineering.
https://doi.org/10.1016/j.coastaleng.2018.10.006
Examples:
>>> from py_wave_runup import datasets
>>> df = datasets.load_power18()
>>> df.describe()
hs tp beta roughness r2
count 1390.000000 1390.000000 1390.000000 1390.000000 1390.000000
mean 1.893131 9.227035 0.120612 0.024779 2.318814
std 1.309243 3.589004 0.062236 0.043617 1.776918
min 0.018576 0.805805 0.009000 0.000003 0.027336
25% 0.895942 7.517556 0.088228 0.001000 1.103500
50% 1.848050 9.963089 0.108422 0.003750 1.923500
75% 2.391756 10.995500 0.129220 0.007500 3.406660
max 7.174100 23.680333 0.286551 0.125000 12.669592
Loads wave runup data included with Power et al (2018)
This function loads the supplementary data from:
Power, H.E., Gharabaghi, B., Bonakdari, H., Robertson, B., Atkinson, A.L.,
Baldock, T.E., 2018. Prediction of wave runup on beaches using
Gene-Expression Programming and empirical relationships. Coastal Engineering.
https://doi.org/10.1016/j.coastaleng.2018.10.006
Examples:
>>> from py_wave_runup import datasets
>>> df = datasets.load_power18()
>>> df.describe()
hs tp beta roughness r2
count 1390.000000 1390.000000 1390.000000 1390.000000 1390.000000
mean 1.893131 9.227035 0.120612 0.024779 2.318814
std 1.309243 3.589004 0.062236 0.043617 1.776918
min 0.018576 0.805805 0.009000 0.000003 0.027336
25% 0.895942 7.517556 0.088228 0.001000 1.103500
50% 1.848050 9.963089 0.108422 0.003750 1.923500
75% 2.391756 10.995500 0.129220 0.007500 3.406660
max 7.174100 23.680333 0.286551 0.125000 12.669592
"""

Expand Down
36 changes: 21 additions & 15 deletions py_wave_runup/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ def __init__(self, Hs=None, Tp=None, beta=None, Lp=None, h=None, r=None):
Must be defined if ``Lp`` is not defined.
Lp (:obj:`float` or :obj:`list`): Peak wave length
Must be definied if ``Tp`` is not defined.
h (:obj:`float` or :obj:`list`): Depth of wave measurement(s). If not
h (:obj:`float` or :obj:`list`): Depth of wave measurement(s). If not
given deep-water conditions are assumed.
r (:obj:`float` or :obj:`list`): Hydraulic roughness length. Can be
approximated by :math:`r=2.5D_{50}`.
Expand Down Expand Up @@ -61,14 +61,17 @@ def __init__(self, Hs=None, Tp=None, beta=None, Lp=None, h=None, r=None):
if self.h:
k = []
for T in self.Tp:
k.append(_newtRaph(T,self.h))
self.Lp = (2*np.pi)/k
k.append(_newtRaph(T, self.h))
self.Lp = (2 * np.pi) / k
else:
self.Lp = 9.81 * (self.Tp ** 2) / 2 / np.pi
else:
self.Lp = np.atleast_1d(Lp)
if self.h:
self.Tp = np.sqrt( (2*np.pi*self.Lp)/(9.81*np.tanh((2*np.pi*self.h)/self.Lp)) )
self.Tp = np.sqrt(
(2 * np.pi * self.Lp)
/ (9.81 * np.tanh((2 * np.pi * self.h) / self.Lp))
)
else:
self.Tp = np.sqrt(2 * np.pi * self.Lp / 9.81)

Expand All @@ -87,28 +90,31 @@ def _return_one_or_array(self, val):
return val.item()
else:
return val
def _newtRaph(self,T,h):

def _newtRaph(self, T, h):

# Function to determine k from dispersion relation given period (T) and depth (h) using
# the Newton-Raphson method.

if not np.isnan(T):
L_not = (9.81*(T**2))/(2*np.pi)
k1 = (2*np.pi)/L_not
L_not = (9.81 * (T ** 2)) / (2 * np.pi)
k1 = (2 * np.pi) / L_not

def fk(k):
return (((2*np.pi)/T)**2)-(9.81*k*np.tanh(k*h))
return (((2 * np.pi) / T) ** 2) - (9.81 * k * np.tanh(k * h))

def f_prime_k(k):
return (-9.81*np.tanh(k*h))-(9.81*k*(1-(np.tanh(k*h)**2)))
return (-9.81 * np.tanh(k * h)) - (
9.81 * k * (1 - (np.tanh(k * h) ** 2))
)

k2 = 100
i = 0
while abs((k2-k1))/k1 > 0.01:
i+=1
if i!=1:
k1=k2
k2 = k1-(fk(k1)/f_prime_k(k1))
while abs((k2 - k1)) / k1 > 0.01:
i += 1
if i != 1:
k1 = k2
k2 = k1 - (fk(k1) / f_prime_k(k1))
else:
k2 = np.nan

Expand Down

0 comments on commit 0f4e566

Please sign in to comment.