I run the optimization, and the output is:
LCoE should be impacted by turbine_aep, because there is the specific partial derivative defined by the jacobian in plant_finance.py (detected also by check_partials).
Then, I run the openmdao check on my code and the result is
The inputs not connected are all the variables that I left at the default values, but also the variables that I set in my optimization. I do not think that I have to care about the default values, but the inputs that I set resulting not connected is a problem, and I add IndepVarComp outputs to the group setup like this:
class call_to_group(om.Group):
# def initialize(self):
#
# pass
def setup(self):
indeps = self.add_subsystem("indeps", om.IndepVarComp(), promotes=["*"])
indeps.add_output('rotor_diameter', val=1.0, units='m')
indeps.add_discrete_output('turbine_number', val=1)
indeps.add_output('machine_rating', val=1.0, units='kW')
indeps.add_output('bos_per_kW', val=1.0, units="USD/kW")
indeps.add_output('opex_per_kW', val=1.0, units="USD/kW/yr")
indeps.add_output('turbine_aep', val=1e5, units='kW*h')
#
self.add_subsystem("bladeMass_calc", BladeMass(),
promotes_inputs=['rotor_diameter'],
promotes_outputs=['blade_mass']
)
self.add_subsystem('bladeCost_calc', BladeCost2015(),
promotes_inputs=['blade_mass'],
promotes_outputs=['blade_cost']
)
self.add_subsystem("rotorCostAndMass_calc", RotorCostAdder2015(),
promotes_inputs=['blade_cost', 'blade_mass'],
promotes_outputs=['rotor_cost', 'rotor_mass_tcc']
)
self.add_subsystem("turbineCapitalCosts_calc", TurbineCostAdder2015(),
promotes_inputs=['rotor_cost', 'rotor_mass_tcc', 'machine_rating'] #,
# promotes_outputs=['turbine_cost_kW']
)
#
inputsToPlantFinance = [
"machine_rating",
"turbine_number",
"bos_per_kW",
"opex_per_kW",
"turbine_aep",
"tcc_per_kW",
]
self.add_subsystem('LCoE_calc', PlantFinance(verbosity=False),
promotes_inputs=inputsToPlantFinance,
promotes_outputs=["lcoe"])
self.connect('turbineCapitalCosts_calc.turbine_cost_kW', 'tcc_per_kW')
I run again the openmadao check, and only the variables kept at the default value are found as inputs not connected:
I run again the optimization, but the result is still the same:
Why I have that DerivativesWarning, and the optimization does not even start?
Can I have some help also on this problem?
Thank you