Esempio n. 1
0
def surface_force(component=None, force_variables=None,
                  cg=(0, 0, 0)):
    ''' Compute the forces for a surface. Returns the forces, and
    moment about cg, and area for each component.

    optional arguments:
        components - (Component)
        force_variables - (list of str)
        cg - (list of float) (1-by-3)
    '''
    global _dataset

    if component is not None:
        assert isinstance(component, Component)
        zonelist = component.zonelist
    else:
        component = Component('All')
        zonelist = list(_dataset.zones())

    if force_variables is not None:
        for v in force_variables:
            _dataset.add_variable(v)

    for zone in zonelist:
        pres, fric, mmnt, area = zonal_forces(zone, cg)
        component.force_pressure[:] = component.force_pressure[:] + pres[:]
        component.force_friction[:] = component.force_friction[:] + fric[:]
        component.area = component.area + area
        component.moment = component.moment + mmnt

    return component