components
のsolve_nonlinear
に未知数と残差を設定できます。パラメータの値を設定することはできますか?なぜ、なぜそうではないのですか?ここでopenmdaoのsolve_nonlinearのパラメータ値を変更することはできますか
編集
は "純粋なのpython" リーダー/ライターコンポーネントで私の試みです。私の問題は、トップレベルからパラメータを読み書きできないことです。
$ cat test.py
from openmdao.api import Component, Group, Problem
class reader():
def __init__(self):
self.file_to_read = 'test.in'
self.file_data = 0
def execute(self):
dat = open(self.file_to_read, 'r')
self.file_data = dat.read()
class writer():
def __init__(self):
self.file_to_write = 'test.out'
self.data = -99
def execute(self):
dat = open(self.file_to_write, 'w')
dat.write(str(self.data))
class ReadWriteComp(Component):
def __init__(self):
super(ReadWriteComp, self).__init__()
self.reader = reader()
self.writer = writer()
self.reader.execute()
def solve_nonlinear(self, params, unknowns, resids):
self.writer.data = self.reader.file_data
self.writer.execute()
root = Group()
root.add('testio', ReadWriteComp())
prob = Problem(root)
prob.setup()
prob['testio.writer.file_to_write'] = 'newname' # "Variable 'testio.writer.file_to_write' not found."
prob.run()
$ cat test.in
8
私はそれを試みたことはありません。私はあなたがこれを行うことによって派生情報を破壊することになるだろうと思う。 より一般的な問題を解決する具体的な方法について質問しているようです。あなたは正確に何をしようとしていますか? –
@RobFalck私は、読み取り、書き込み、およびラップコンポーネントを持つグループであるシミュレーションコードのラッパーを構築しています。私は1.Xでvartreesをエミュレートするために最善を尽くしています。 https://github.com/WISDEM/AeroelasticSE/blob/turbsim_connection/src/AeroelasticSE/FAST_mdao/FST8_group.py#L78私の問題は、この「vartree」のfst_vtオブジェクトでは、未知数がパラメータであることです。読者によって設定され、ライターによって使用される。 – kilojoules