【发布时间】:2016-01-14 16:53:17
【问题描述】:
OpenMDAO 1.4 是否支持使用pass_by_obj 进行单位转换?我有一个小型复制案例:
from openmdao.api import Component, Problem, Group, IndepVarComp
pass_by_obj=True
class PassByObjParaboloid(Component):
def __init__(self):
super(PassByObjParaboloid, self).__init__()
self.fd_options['force_fd'] = True
self.add_param('x', val=1.0, pass_by_obj=pass_by_obj, units='mm')
self.add_output('f_xy', val=0.0)
def solve_nonlinear(self, params, unknowns, resids):
print params['x']
assert params['x'] == 1000.0
unknowns['f_xy'] = params['x']
def linearize(self, params, unknowns, resids):
raise Exception()
top = Problem()
root = top.root = Group()
root.add('p1', IndepVarComp('x', 1.0, pass_by_obj=pass_by_obj, units='m'))
root.add('p', PassByObjParaboloid())
root.connect('p1.x', 'p.x')
top.setup()
top.run()
使用pass_by_obj=True,assert 会失败。 top.setup() 报道:
Unit Conversions
p1.x -> p.x : m -> mm
所以我希望完成单位转换。
【问题讨论】:
标签: openmdao