def setup(self):
    self.add_input('aoa', desc='angle of attack', units='rad', tags=['mphys_input'])
    self.add_input('yaw', desc='yaw angle', units='rad', tags=['mphys_input'])
    self.add_input('ref_area', val=1.0, tags=['mphys_input'])
    self.add_input('moment_center', shape=3, tags=['mphys_input'])
    self.add_input('ref_length', val=1.0, tags=['mphys_input'])
    self.add_input('q_inf', val=1.0, tags=['mphys_input'])
    self.add_input('x_aero', shape_by_conn=True, distributed=True, desc='surface coordinates', tags=['mphys_coupling'])
    self.add_input('f_aero', shape_by_conn=True, distributed=True, desc='dimensional forces at nodes', tags=['mphys_coupling'])
    self.add_output('C_L', desc='Lift coefficient', tags=['mphys_result'])
    self.add_output('C_D', desc='Drag coefficient', tags=['mphys_result'])
    self.add_output('C_X', desc='X Force coefficient', tags=['mphys_result'])
    self.add_output('C_Y', desc='Y Force coefficient', tags=['mphys_result'])
    self.add_output('C_Z', desc='Z Force coefficient', tags=['mphys_result'])
    self.add_output('CM_X', desc='X Moment coefficient', tags=['mphys_result'])
    self.add_output('CM_Y', desc='Y Moment coefficient', tags=['mphys_result'])
    self.add_output('CM_Z', desc='Z Moment coefficient', tags=['mphys_result'])
    self.add_output('Lift', desc='Total Lift', tags=['mphys_result'])
    self.add_output('Drag', desc='Total Drag', tags=['mphys_result'])
    self.add_output('F_X', desc='Total X Force', tags=['mphys_result'])
    self.add_output('F_Y', desc='Total Y Force', tags=['mphys_result'])
    self.add_output('F_Z', desc='Total Z Force', tags=['mphys_result'])
    self.add_output('M_X', desc='Total X Moment', tags=['mphys_result'])
    self.add_output('M_Y', desc='Total Y Moment', tags=['mphys_result'])
    self.add_output('M_Z', desc='Total Z Moment', tags=['mphys_result'])
def setup(self):
    self.add_input('aoa', desc='angle of attack', units='rad', tags=['mphys_input'])
    self.add_input('yaw', desc='yaw angle', units='rad', tags=['mphys_input'])
    self.add_input('ref_area', val=1.0, tags=['mphys_input'])
    self.add_input('moment_center', shape=3, tags=['mphys_input'])
    self.add_input('ref_length', val=1.0, tags=['mphys_input'])
    self.add_input('q_inf', val=1.0, tags=['mphys_input'])
    self.add_input('x_aero', shape_by_conn=True, distributed=True, desc='surface coordinates', tags=['mphys_coupling'])
    self.add_input('f_aero', shape_by_conn=True, distributed=True, desc='dimensional forces at nodes', tags=['mphys_coupling'])
    self.add_output('C_L', desc='Lift coefficient', tags=['mphys_result'])
    self.add_output('C_D', desc='Drag coefficient', tags=['mphys_result'])
    self.add_output('C_X', desc='X Force coefficient', tags=['mphys_result'])
    self.add_output('C_Y', desc='Y Force coefficient', tags=['mphys_result'])
    self.add_output('C_Z', desc='Z Force coefficient', tags=['mphys_result'])
    self.add_output('CM_X', desc='X Moment coefficient', tags=['mphys_result'])
    self.add_output('CM_Y', desc='Y Moment coefficient', tags=['mphys_result'])
    self.add_output('CM_Z', desc='Z Moment coefficient', tags=['mphys_result'])
    self.add_output('Lift', desc='Total Lift', tags=['mphys_result'])
    self.add_output('Drag', desc='Total Drag', tags=['mphys_result'])
    self.add_output('F_X', desc='Total X Force', tags=['mphys_result'])
    self.add_output('F_Y', desc='Total Y Force', tags=['mphys_result'])
    self.add_output('F_Z', desc='Total Z Force', tags=['mphys_result'])
    self.add_output('M_X', desc='Total X Moment', tags=['mphys_result'])
    self.add_output('M_Y', desc='Total Y Moment', tags=['mphys_result'])
    self.add_output('M_Z', desc='Total Z Moment', tags=['mphys_result'])