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