Как создать псевдоним для вывода для автоматического подключения?

#openmdao

#openmdao

Вопрос:

В настоящее время у меня есть этот код:

 self.add_subsystem('IntegrateForTheta2Ue6', utilities.CumulativeIntegrateTrapeziums(n=n),
                               promotes_inputs=[('x', 'panel_lengths'),
                                                ('x0', 'stagnation_point_position'),
                                                ('y', 'ue5'),
                                                ('y0', 'panel_start_external_tangential_velocity')],
                               promotes_outputs=[('cumulative_integral', 'intue5')])

self.add_subsystem('ThwaitesCalculateMomentumThickness', ThwaitesCalculateMomentumThickness(n=n),
                               promotes_inputs=['external_tangential_velocities',
                                                'intue5',
                                                'kinematic_viscosity'],
                               promotes_outputs=['momentum_thickness'])
 

При запуске он не выдает никаких ошибок, но при отладке становится ясно, что вывод для intue5 aka cumulative_integral не передается в ThwaitesCalculateMomentumThickness — он отображается как all . Когда я пытаюсь выполнить вышеуказанное self.connect('IntegrateForTheta2Ue6.intue5', 'ThwaitesCalculateMomentumThickness.intue5') , я получаю Attempted to connect from 'IntegrateForTheta2Ue6.intue5' to 'ThwaitesCalculateMomentumThickness.intue5', but 'IntegrateForTheta2Ue6.intue5' doesn't exist.

Я допускаю ошибку в своем псевдониме вывода или это ошибка?

Комментарии:

1. Я не уверен в ошибке, не зная больше, но для прямого подключения вы должны сделать : self.connect('IntegrateForTheta2Ue6.cumulative_integral', 'ThwaitesCalculateMomentumThickness.intue5') .

2. Вы вызываете run_model() перед проверкой выходных данных? С другой стороны, я не вижу никаких проблем, которые могли бы помешать неявному подключению на основе ваших продвигаемых имен.

Ответ №1:

Обновление до последней версии OpenMDAO сработало. Я полагаю, что я уже вызывал run_model(), поэтому я не уверен, почему это не сработало.