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))