我目前正在模拟一个结构优化问题,其中响应的梯度从 Nastran 中提取并提供给 OpenMDAO 中的 SLSQP 优化器。在后续迭代中约束的数量会发生变化,因为设计变量包括形状和尺寸变量,因此每次都会生成一个新的网格。OpenMDAO 中定义了一个约束组件,它读取从 Nastran 导出的响应数据。现在,这里的问题在于定义其输出变量“f_const”的形状。此输出变量的形状需要根据可用响应数组的形状进行调整,因为输出['f_const'] = np.loadtxt("nsatran_const.dat")。这里,nastran_const.dat 是包含从 Nastran 提取的响应数据的文件。该数据的形状在设计迭代开始时是未知的,并在随后的迭代中不断变化。因此,如果在开始时定义了某种形状的 f_const,那么它以后不会更改并且由于形状不匹配而产生错误。
在 openmdao 的文档中,我找到了https://openmdao.org/newdocs/versions/latest/features/experimental/dyn_shapes.html?highlight=varying%20shape 它解释说,输入/输出变量的形状可以动态设置通过将其链接到形状已知的任何连接变量或局部变量。这与我的情况不同,因为在计算开始之前,应力阵列的形状是未知的。f_const 的形状要在 setup 中定义,我不知道以后如何更改它。请在这方面指导我。