Skip to content

Commit

Permalink
Finish setting up models module (#29)
Browse files Browse the repository at this point in the history
* TST, CLN: Finish organisation of models folder structure
  • Loading branch information
KikeM authored Sep 19, 2020
1 parent 4dc3167 commit dbcd554
Show file tree
Hide file tree
Showing 8 changed files with 61 additions and 39 deletions.
4 changes: 2 additions & 2 deletions src/pybem/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@
del get_versions

# Core
from pybem.core import Propeller
from pybem.models.propeller import Propeller
from pybem.models.airfoils import Airfoil
from pybem.core import FlightConditions
from pybem.models.flight_conditions import FlightConditions


# Blade Element Method
Expand Down
2 changes: 2 additions & 0 deletions src/pybem/models/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
from .airfoils import Airfoil
from .propeller import Propeller
2 changes: 1 addition & 1 deletion src/pybem/models/airfoils.py
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ def compute_cl(self, alpha):

return cl

def compute_cd(self, cl = None, alpha=None):
def compute_cd(self, cl=None, alpha=None):
"""Compute drag coefficient.
Parameters
Expand Down
28 changes: 28 additions & 0 deletions src/pybem/models/flight_conditions.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
from math import pi

import numpy as np
import pandas as pd
from fluids.atmosphere import ATMOSPHERE_1976


class FlightConditions:
def __init__(self, airspeed, omega, altitude):
"""
Parameters
----------
V: float
airspeed in km/h
omega: float
Blade angular speed
altitude: float
Height from the ground, in meters.
"""

self.atmosphere = ATMOSPHERE_1976(Z=altitude)

self.v = airspeed * (1000.0 / 3600.0)
self.omega = omega * (2 * pi) / 60.0

@property
def rho(self):
return self.atmosphere.rho
50 changes: 16 additions & 34 deletions src/pybem/core.py → src/pybem/models/propeller.py
Original file line number Diff line number Diff line change
@@ -1,35 +1,19 @@
from math import pi
from scipy.interpolate import interp1d

import numpy as np
import pandas as pd
from fluids.atmosphere import ATMOSPHERE_1976

class Propeller:
"""Propeller definition.
class FlightConditions:
def __init__(self, airspeed, omega, altitude):
"""
Parameters
----------
V: float
airspeed in km/h
omega: float
Blade angular speed
altitude: float
Height from the ground, in meters.
"""

self.atmosphere = ATMOSPHERE_1976(Z=altitude)

self.v = airspeed * (1000.0 / 3600.0)
self.omega = omega * (2 * pi) / 60.0

@property
def rho(self):
return self.atmosphere.rho

Parameters
----------
r_hub : float
r_tip : float
r_dist : array-like of floats
beta_dist : array-like of floats
chord_dist : array-like of floats
"""

class Propeller:
def __init__(self, r_hub: float, r_tip: float, r_dist, beta_dist, chord_dist):
def __init__(self, r_hub, r_tip, r_dist, beta_dist, chord_dist):

# Get blade bounds
self.r_hub = r_hub
Expand All @@ -47,9 +31,8 @@ def __init__(self, r_hub: float, r_tip: float, r_dist, beta_dist, chord_dist):
self._beta = None
self._chord = None

def beta(self, r):
"""
Airfoil twist at location r.
def get_beta(self, r):
"""Airfoil twist at location r.
Parameters
----------
Expand All @@ -68,9 +51,8 @@ def beta(self, r):

return _beta

def chord(self, r):
"""
Airfoil chord at location r.
def get_chord(self, r):
"""Airfoil chord at location r.
Parameters
----------
Expand Down
2 changes: 1 addition & 1 deletion tests/models/test_airfoils.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ def test_airfoil_unseen_interpolation():

analytical = AnalyticalAirfoil()

alphas = np.linspace(0,1, num = 1000)
alphas = np.linspace(0, 1, num=1000)
polar_cl = []
polar_cd = []

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import pytest

from pybem.core import FlightConditions
from pybem.models.flight_conditions import FlightConditions

from numpy.testing import assert_allclose

Expand Down
10 changes: 10 additions & 0 deletions tests/models/test_propeller.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import pytest

from pybem import Propeller


@pytest.mark.xfail(
raises=NotImplementedError, reason="Propeller definition needs to be updated."
)
def test_propeller():
raise NotImplementedError

0 comments on commit dbcd554

Please sign in to comment.