我可以設置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