Esempio n. 1
0
 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)
Esempio n. 2
0
 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)
Esempio n. 3
0
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))
Esempio n. 4
0
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
Esempio n. 5
0
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))
Esempio n. 6
0
    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))
Esempio n. 7
0
 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)