def setUp(self): config = { 'drag coefficient': 0.7, 'members': [{ 'end1': [0, 0, 0], 'end2': [0, 0, -10], 'diameter': [[0, 3, 5, 10], [2.2, 2.2, 5, 5]], 'strip width': 0.5, }], } self.model = ViscousDragModel(config)
def setUp(self): config = { 'drag coefficient': 0.7, 'inertia coefficient': 2.0, 'members': [{ 'end1': [0, 0, 0], 'end2': [0, 0, -10], 'diameter': 2.3, 'strip width': 1, }], } self.model = ViscousDragModel(config)
def Morison_added_mass(w, draft, radius, Cm=2.0): """Calculate added mass and damping from Morison strip model of uniform cylinder""" from whales.viscous_drag import ViscousDragModel Morison_model = ViscousDragModel({ 'inertia coefficient': Cm, 'members': [{ 'end1': [0, 0, 0], 'end2': [0, 0, -draft], 'diameter': 2 * radius, 'strip width': 1.0, }] }) A1 = Morison_model.Morison_added_mass() A = np.tile(A1, (len(w), 1, 1)) return LinearSystem(A, zeros_like(A), zeros_like(A))
def excitation_force(w, z1, z2, diameter, Cm=2): """Calculate the excitation force. Specific for now to vertical cylinders of varying diameter. ``z1``, ``z2``: coordinates of ends of element ``diameter``: array (2 x Npoints) diameter at each z value """ config = { 'end1': [0, 0, z1], 'end2': [0, 0, z2], 'diameter': diameter, 'strip width': 1.0, } Morison_model = ViscousDragModel({ 'inertia coefficient': Cm, 'members': [config], }) X = Morison_model.Morison_inertial_force(w) return X
def added_mass(w, z1, z2, diameter, Cm=2): """Calculate the added mass/damping. Specific for now to vertical cylinders of varying diameter. ``z1``, ``z2``: coordinates of ends of element ``diameter``: array (2 x Npoints) diameter at each z value """ config = { 'end1': [0, 0, z1], 'end2': [0, 0, z2], 'diameter': diameter, 'strip width': 1.0, } Morison_model = ViscousDragModel({ 'inertia coefficient': Cm, 'members': [config], }) A1 = Morison_model.Morison_added_mass() A = np.tile(A1, (len(w), 1, 1)) return LinearSystem(A, zeros_like(A), zeros_like(A))
def __init__(self, config, frequency_values): self.config = config self.w = frequency_values # Build structural model self.structure = FloatingTurbineStructure(config['structure']) # Get hydrodynamic/static information h = config['hydrodynamics'] rho = config['constants']['water density'] first_order = WAMITData(h['WAMIT path'], water_density=rho) if 'QTF path' in h: second_order = SecondOrderData(h['QTF path'], water_density=rho) else: second_order = None self.hydro_info = HydrodynamicsInfo(first_order, second_order) # Get mooring line behaviour l = config['mooring']['linear'] self.mooring_static = np.asarray(l['static force']) self.mooring_stiffness = np.asarray(l['stiffness']) # Extra damping self.B_extra = np.asarray(h.get('extra damping', np.zeros(6))) if self.B_extra.ndim == 1: self.B_extra = np.diag(self.B_extra) # Viscous drag model if 'Morison elements' in h: self.morison = ViscousDragModel(h['Morison elements']) else: self.morison = None self.Bv = np.zeros((6, 6)) self.Fvc = np.zeros(6) self.Fvv = np.zeros((len(self.w), 6)) # Wave-drift damping self.Bwd = np.zeros((6, 6))
def setUp(self): config = { 'drag coefficient': 0.7, 'members': [{ # # Member in x-direction # 'end1': [0, 0, 0], # 'end2': [1, 0, 0], # 'diameter': 1, # 'strip width': 1, # }, { # Member in z-direction 'end1': [0, 0, 0], 'end2': [0, 0, 1], 'diameter': 1, 'strip width': 1, # }, { # # Member in xy plane at 30deg from x axis # 'end1': [0, 0, 0], # 'end2': [np.cos(30*np.pi/180), np.sin(30*np.pi/180), 0], # 'diameter': 1, # 'strip width': 1, }], } self.model = ViscousDragModel(config)