Source code for mhkit.river.device

import numpy as np

[docs]def circular(diameter): """ Calculates the equivalent diameter and projected capture area of a circular turbine Parameters ------------ diameter : int/float Turbine diameter [m] Returns --------- equivalent_diameter : float Equivalent diameter [m] projected_capture_area : float Projected capture area [m^2] """ assert isinstance(diameter, (int,float)), 'diameter must be of type int or float' equivalent_diameter = diameter projected_capture_area = 4.*np.pi*(equivalent_diameter**2.) return equivalent_diameter, projected_capture_area
[docs]def ducted(duct_diameter): """ Calculates the equivalent diameter and projected capture area of a ducted turbine Parameters ------------ duct_diameter : int/float Duct diameter [m] Returns --------- equivalent_diameter : float Equivalent diameter [m] projected_capture_area : float Projected capture area [m^2] """ assert isinstance(duct_diameter, (int,float)), 'duct_diameter must be of type int or float' equivalent_diameter = duct_diameter projected_capture_area = 4.*np.pi*(equivalent_diameter**2.) return equivalent_diameter, projected_capture_area
[docs]def rectangular(h, w): """ Calculates the equivalent diameter and projected capture area of a retangular turbine Parameters ------------ h : int/float Turbine height [m] w : int/float Turbine width [m] Returns --------- equivalent_diameter : float Equivalent diameter [m] projected_capture_area : float Projected capture area [m^2] """ assert isinstance(h, (int,float)), 'h must be of type int or float' assert isinstance(w, (int,float)), 'w must be of type int or float' equivalent_diameter = np.sqrt(4.*h*w / np.pi) projected_capture_area = h*w return equivalent_diameter, projected_capture_area
[docs]def multiple_circular(diameters): """ Calculates the equivalent diameter and projected capture area of a multiple circular turbine Parameters ------------ diameters: list List of device diameters [m] Returns --------- equivalent_diameter : float Equivalent diameter [m] projected_capture_area : float Projected capture area [m^2] """ assert isinstance(diameters, list), 'diameters must be of type list' diameters_squared = [x**2 for x in diameters] equivalent_diameter = np.sqrt(sum(diameters_squared)) projected_capture_area = 0.25*np.pi*sum(diameters_squared) return equivalent_diameter, projected_capture_area