我尝试用默认整数声明一个输入,但是似乎不可能。我是在犯错还是在openmdao核心中强制执行float。
这是我尝试过的代码片段;
预期的输出类似:array([1,1,1])
接收到的输出:[1。 1. 1。]
from openmdao.api import ExplicitComponent, Problem, IndepVarComp
import numpy as np
class CompAddWithArrayIndices(ExplicitComponent):
"""Component for tests for declaring with array val and array indices."""
def setup(self):
self.add_input('x_a', val=np.ones(6,dtype=int))
self.add_input('x_b', val=[1]*5)
self.add_output('y')
p = Problem(model=CompAddWithArrayIndices())
p.setup()
p.run_model()
print(p['x_a'])
print(p['x_b'])
#%%
from openmdao.api import ExplicitComponent, Problem, IndepVarComp
import numpy as np
class CompAddWithArrayIndices(ExplicitComponent):
"""Component for tests for declaring with array val and array indices."""
def setup(self):
self.add_input('x_a', val=np.zeros(3,dtype=int))
self.add_output('y')
prob = Problem()
ivc=IndepVarComp()
prob.model.add_subsystem('ivc', ivc,promotes=['*'])
ivc.add_output('x_a', val=np.ones(3,dtype=int))
prob.model.add_subsystem('comp1', CompAddWithArrayIndices(),promotes=['*'])
prob.setup()
prob.run_model()
print(prob['x_a'])
答案 0 :(得分:2)
通过add_inputs
或add_outputs
添加的变量将转换为float或float数组。如果希望变量为整数或任何其他离散类型,则必须使用add_discrete_input
和add_discrete_output
。这些变量将基于连接信息在系统之间传递,但不会尝试计算它们的派生变量。
离散变量支持已添加到OpenMDAO v2.5中,作为一项实验功能(尚在开发中)。在master分支上有提交ID 709401e535cf6933215abd942d4b4d49dbf61b2b,已解决了升级问题。请确保您使用的是该提交版本或更高版本的OpenMDAO的最新版本