组件对象没有“ln\u solver”属性

2024-10-03 06:19:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在构建一个新的大型OpenMDAO组件。当我运行它时,OpenMDAO在安装阶段与AttributeError: 'myNewComponent' object has no attribute 'ln_solver'崩溃。这个信息是什么意思

import numpy as np
from openmdao.api import Group, Component, Problem, IndepVarComp, ParallelGroup
from openmdao.api import ScipyOptimizer
from openmdao.core.mpi_wrap import MPI
if MPI: 
    from openmdao.core.petsc_impl import PetscImpl as impl
else:
    from openmdao.api import BasicImpl as impl

class WindSEComp(Component):
    def __init__(self, nTurbs, rotor_diameter):

        super(WindSEComp, self).__init__()

        self.add_param('turbineX', val=np.ones(nTurbs), units='m', desc='x positions of turbines in original ref. frame')
        self.add_output('AEP', shape=1)

    def solve_nonlinear(self, params, unknowns, resids):
        mx_opt = params['turbineX']
        unknowns['AEP'] = np.sum(mx_opt)

    def linearize(self, params, unknowns, resids):
        mx_opt = params['turbineX']
        J = {}
        J['AEP', 'turbineX'] = 3 * mx_opt
        return J


prob = Problem(impl=impl, root=WindSEComp(nTurbs=4, rotor_diameter=126.0))
#prob.driver = ScipyOptimizer()
#prob.driver.add_desvar('turbineX')
#prob.driver.add_objective('AEP')

prob.setup()
prob.run()

Tags: fromimportselfaddapiasnpparams
1条回答
网友
1楼 · 发布于 2024-10-03 06:19:17

您正在尝试使用一个组件,就像一个组:它们是不同的。你想这样做:

top = Problem()
root = top.root = Group()
root.add('g', WindSEComp(nTurbs=4, rotor_diameter=126.0))
top.setup()
top.run()

相关问题 更多 >