Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def test_circuit_advanced_newton(self):
from openmdao.api import ArmijoGoldsteinLS, Problem, IndepVarComp
from openmdao.test_suite.scripts.circuit_analysis import Circuit
p = Problem()
model = p.model
model.add_subsystem('ground', IndepVarComp('V', 0., units='V'))
model.add_subsystem('source', IndepVarComp('I', 0.1, units='A'))
model.add_subsystem('circuit', Circuit())
model.connect('source.I', 'circuit.I_in')
model.connect('ground.V', 'circuit.Vg')
p.setup()
# you can change the NewtonSolver settings in circuit after setup is called
newton = p.model.circuit.nonlinear_solver
newton.options['iprint'] = 2
newton.options['maxiter'] = 10
newton.options['solve_subsystems'] = True
newton.linesearch = ArmijoGoldsteinLS()
newton.linesearch.options['maxiter'] = 10
newton.linesearch.options['iprint'] = 2
'fem_origin' : 0.35, # normalized chordwise location of the spar
't_over_c' : 0.15, # maximum airfoil thickness
'thickness_cp' : np.ones((3)) * .0075,
'wing_weight_ratio' : 1.,
'exact_failure_constraint' : False,
}
# Create the problem and assign the model group
prob = Problem()
ny = surf_dict['num_y']
loads = np.zeros((ny, 6))
loads[0, 2] = 1e4
indep_var_comp = IndepVarComp()
indep_var_comp.add_output('loads', val=loads, units='N')
indep_var_comp.add_output('load_factor', val=1.)
struct_group = SpatialBeamAlone(surface=surf_dict)
# Add indep_vars to the structural group
struct_group.add_subsystem('indep_vars',
indep_var_comp,
promotes=['*'])
prob.model.add_subsystem(surf_dict['name'], struct_group)
try:
from openmdao.api import pyOptSparseDriver
prob.driver = pyOptSparseDriver()
prob.driver.options['optimizer'] = "SNOPT"
def test_doe_fail_analysis_error(self):
problem = Problem(impl=impl)
root = problem.root = Group()
root.add('indep_var', IndepVarComp('x', val=1.0))
root.add('const', IndepVarComp('c', val=2.0))
if MPI:
fail_rank = 1 # raise exception from this rank
npardoe = self.N_PROCS
else:
fail_rank = 0
npardoe = 1
root.add('mult', ExecComp4Test("y=c*x", fail_rank=fail_rank,
fails=[3,4]))
root.connect('indep_var.x', 'mult.x')
root.connect('const.c', 'mult.c')
num_levels = 25
problem.driver = FullFactorialDriver(num_levels=num_levels,
#self.add('pitch_system_mass', IndepVarComp('pitch_system_mass', 0.0), promotes=['*'])
#self.add('spinner_mass', IndepVarComp('spinner_mass', 0.0), promotes=['*'])
#self.add('transformer_mass', IndepVarComp('transformer_mass', 0.0), promotes=['*'])
#self.add('vs_electronics_mass', IndepVarComp('vs_electronics_mass', 0.0), promotes=['*'])
#self.add('yaw_mass', IndepVarComp('yaw_mass', 0.0), promotes=['*'])
# Tower and Frame3DD options
self.add('stress_standard_value', IndepVarComp('stress_standard_value', 0.0), promotes=['*'])
self.add('frame3dd_matrix_method', IndepVarComp('frame3dd_matrix_method', 0, pass_by_obj=True), promotes=['*'])
self.add('compute_stiffness', IndepVarComp('compute_stiffness', False, pass_by_obj=True), promotes=['*'])
self.add('project_lifetime', IndepVarComp('project_lifetime', 0.0), promotes=['*'])
self.add('lumped_mass_matrix', IndepVarComp('lumped_mass_matrix', 0, pass_by_obj=True), promotes=['*'])
self.add('slope_SN', IndepVarComp('slope_SN', 0, pass_by_obj=True), promotes=['*'])
self.add('number_of_modes', IndepVarComp('number_of_modes', NFREQ, pass_by_obj=True), promotes=['*'])
self.add('compute_shear', IndepVarComp('compute_shear', True, pass_by_obj=True), promotes=['*'])
self.add('shift_value', IndepVarComp('shift_value', 0.0), promotes=['*'])
self.add('frame3dd_convergence_tolerance', IndepVarComp('frame3dd_convergence_tolerance', 1e-7), promotes=['*'])
self.add('max_taper_ratio', IndepVarComp('max_taper_ratio', 0.0), promotes=['*'])
self.add('min_diameter_thickness_ratio', IndepVarComp('min_diameter_thickness_ratio', 0.0), promotes=['*'])
# Environment
#self.add('air_density', IndepVarComp('air_density', 0.0), promotes=['*'])
#self.add('air_viscosity', IndepVarComp('air_viscosity', 0.0), promotes=['*'])
self.add('wind_reference_speed', IndepVarComp('wind_reference_speed', 0.0), promotes=['*'])
self.add('wind_reference_height', IndepVarComp('wind_reference_height', 0.0), promotes=['*'])
self.add('shearExp', IndepVarComp('shearExp', 0.0), promotes=['*'])
self.add('wind_bottom_height', IndepVarComp('wind_bottom_height', 0.0), promotes=['*'])
self.add('wind_beta', IndepVarComp('wind_beta', 0.0), promotes=['*'])
self.add('cd_usr', IndepVarComp('cd_usr', np.inf), promotes=['*'])
# Environment
self.add('water_depth', IndepVarComp('water_depth', 0.0), promotes=['*'])
self.add('compute_stiffness', IndepVarComp('compute_stiffness', False, pass_by_obj=True), promotes=['*'])
self.add('project_lifetime', IndepVarComp('project_lifetime', 0.0), promotes=['*'])
self.add('lumped_mass_matrix', IndepVarComp('lumped_mass_matrix', 0, pass_by_obj=True), promotes=['*'])
self.add('slope_SN', IndepVarComp('slope_SN', 0, pass_by_obj=True), promotes=['*'])
self.add('number_of_modes', IndepVarComp('number_of_modes', NFREQ, pass_by_obj=True), promotes=['*'])
self.add('compute_shear', IndepVarComp('compute_shear', True, pass_by_obj=True), promotes=['*'])
self.add('shift_value', IndepVarComp('shift_value', 0.0), promotes=['*'])
self.add('frame3dd_convergence_tolerance', IndepVarComp('frame3dd_convergence_tolerance', 1e-7), promotes=['*'])
self.add('max_taper_ratio', IndepVarComp('max_taper_ratio', 0.0), promotes=['*'])
self.add('min_diameter_thickness_ratio', IndepVarComp('min_diameter_thickness_ratio', 0.0), promotes=['*'])
# Environment
#self.add('air_density', IndepVarComp('air_density', 0.0), promotes=['*'])
#self.add('air_viscosity', IndepVarComp('air_viscosity', 0.0), promotes=['*'])
self.add('wind_reference_speed', IndepVarComp('wind_reference_speed', 0.0), promotes=['*'])
self.add('wind_reference_height', IndepVarComp('wind_reference_height', 0.0), promotes=['*'])
self.add('shearExp', IndepVarComp('shearExp', 0.0), promotes=['*'])
self.add('wind_bottom_height', IndepVarComp('wind_bottom_height', 0.0), promotes=['*'])
self.add('wind_beta', IndepVarComp('wind_beta', 0.0), promotes=['*'])
self.add('cd_usr', IndepVarComp('cd_usr', np.inf), promotes=['*'])
# Environment
self.add('water_depth', IndepVarComp('water_depth', 0.0), promotes=['*'])
self.add('water_density', IndepVarComp('water_density', 0.0), promotes=['*'])
self.add('water_viscosity', IndepVarComp('water_viscosity', 0.0), promotes=['*'])
self.add('wave_height', IndepVarComp('wave_height', 0.0), promotes=['*'])
self.add('wave_period', IndepVarComp('wave_period', 0.0), promotes=['*'])
self.add('mean_current_speed', IndepVarComp('mean_current_speed', 0.0), promotes=['*'])
self.add('wave_beta', IndepVarComp('wave_beta', 0.0), promotes=['*'])
# Design standards
self.add('gamma_freq', IndepVarComp('gamma_freq', 0.0), promotes=['*'])
def setup(self):
gd = self.options['grid_data']
control_options = self.options['control_options']
time_units = self.options['time_units']
if len(control_options) < 1:
return
opt_controls = [name for (name, opts) in control_options.items() if opts['opt']]
if len(opt_controls) > 0:
ivc = self.add_subsystem('indep_controls', subsys=om.IndepVarComp(),
promotes_outputs=['*'])
self.add_subsystem(
'control_interp_comp',
subsys=SolveIVPControlInterpComp(time_units=time_units, grid_data=gd,
control_options=control_options,
output_nodes_per_seg=self.options['output_nodes_per_seg']),
promotes_inputs=['*'],
promotes_outputs=['*'])
for name, options in control_options.items():
if options['opt']:
num_input_nodes = gd.subset_num_nodes['control_input']
ivc.add_output(name='controls:{0}'.format(name),
val=options['val'],
def setup(self):
RefBlade = self.options['RefBlade']
topLevelFlag = self.options['topLevelFlag']
NINPUT = len(RefBlade['ctrl_pts']['r_in'])
NAF = len(RefBlade['outer_shape_bem']['airfoil_position']['grid'])
verbosity = self.options['verbosity']
tex_table = self.options['tex_table']
generate_plots = self.options['generate_plots']
show_plots = self.options['show_plots']
show_warnings = self.options['show_warnings']
discrete = self.options['discrete']
# Independent variables that are unique to TowerSE
if topLevelFlag:
geomIndeps = IndepVarComp()
geomIndeps.add_output('bladeLength', 0.0, units='m')
geomIndeps.add_output('hubFraction', 0.0)
geomIndeps.add_output('r_max_chord', 0.0)
geomIndeps.add_output('chord_in', np.zeros(NINPUT),units='m')
geomIndeps.add_output('theta_in', np.zeros(NINPUT), units='deg')
geomIndeps.add_output('precurve_in', np.zeros(NINPUT), units='m')
geomIndeps.add_output('presweep_in', np.zeros(NINPUT), units='m')
# geomIndeps.add_output('precurveTip', 0.0, units='m')
# geomIndeps.add_output('presweepTip', 0.0, units='m')
geomIndeps.add_output('precone', 0.0, units='deg')
geomIndeps.add_output('tilt', 0.0, units='deg')
geomIndeps.add_output('yaw', 0.0, units='deg')
geomIndeps.add_discrete_output('nBlades', 3)
geomIndeps.add_discrete_output('downwind', False)
geomIndeps.add_discrete_output('turbine_class', val='I', desc='IEC turbine class')
geomIndeps.add_discrete_output('blade_in_overwrite', val={}, desc='IEC turbine class')
# Tower and substructure
self.add('tow',TowerSE(nLC, NSECTION+1, nFull, nDEL, wind='PowerWind'), promotes=['material_density','E','G','tower_section_height',
'tower_outer_diameter','tower_wall_thickness',
'tower_outfitting_factor','tower_buckling_length','downwind',
'max_taper','min_d_to_t','rna_mass','rna_cg','rna_I','hub_cm',
'tower_mass','tower_cost','tower_I_base','hub_height','tip_position',
'foundation_height','monopile','soil_G','soil_nu',
'suctionpile_depth','tip_deflection_margin',
'gamma_f','gamma_m','gamma_b','gamma_n','gamma_fatigue'
])
# Tower and Frame3DD options
self.add('hub_height', IndepVarComp('hub_height', 0.0), promotes=['*'])
self.add('foundation_height', IndepVarComp('foundation_height', 0.0), promotes=['*'])
#self.add('yaw', IndepVarComp('yaw', 0.0), promotes=['*'])
self.add('stress_standard_value', IndepVarComp('stress_standard_value', 0.0), promotes=['*'])
self.add('frame3dd_matrix_method', IndepVarComp('frame3dd_matrix_method', 0, pass_by_obj=True), promotes=['*'])
self.add('compute_stiffness', IndepVarComp('compute_stiffness', False, pass_by_obj=True), promotes=['*'])
self.add('project_lifetime', IndepVarComp('project_lifetime', 0.0), promotes=['*'])
self.add('lumped_mass_matrix', IndepVarComp('lumped_mass_matrix', 0, pass_by_obj=True), promotes=['*'])
self.add('slope_SN', IndepVarComp('slope_SN', 0, pass_by_obj=True), promotes=['*'])
self.add('number_of_modes', IndepVarComp('number_of_modes', NFREQ, pass_by_obj=True), promotes=['*'])
self.add('compute_shear', IndepVarComp('compute_shear', True, pass_by_obj=True), promotes=['*'])
self.add('shift_value', IndepVarComp('shift_value', 0.0), promotes=['*'])
self.add('frame3dd_convergence_tolerance', IndepVarComp('frame3dd_convergence_tolerance', 1e-7), promotes=['*'])
self.add('max_taper_ratio', IndepVarComp('max_taper_ratio', 0.0), promotes=['*'])
self.add('min_diameter_thickness_ratio', IndepVarComp('min_diameter_thickness_ratio', 0.0), promotes=['*'])
# Environment
'tower_outer_diameter','tower_wall_thickness',
'tower_outfitting_factor','tower_buckling_length','downwind',
'max_taper','min_d_to_t','rna_mass','rna_cg','rna_I','hub_cm',
'tower_mass','tower_cost','tower_I_base','hub_height','tip_position',
'foundation_height','monopile','soil_G','soil_nu',
'suctionpile_depth','tip_deflection_margin',
'gamma_f','gamma_m','gamma_b','gamma_n','gamma_fatigue'
])
# Tower and Frame3DD options
self.add('hub_height', IndepVarComp('hub_height', 0.0), promotes=['*'])
self.add('foundation_height', IndepVarComp('foundation_height', 0.0), promotes=['*'])
#self.add('yaw', IndepVarComp('yaw', 0.0), promotes=['*'])
self.add('stress_standard_value', IndepVarComp('stress_standard_value', 0.0), promotes=['*'])
self.add('frame3dd_matrix_method', IndepVarComp('frame3dd_matrix_method', 0, pass_by_obj=True), promotes=['*'])
self.add('compute_stiffness', IndepVarComp('compute_stiffness', False, pass_by_obj=True), promotes=['*'])
self.add('project_lifetime', IndepVarComp('project_lifetime', 0.0), promotes=['*'])
self.add('lumped_mass_matrix', IndepVarComp('lumped_mass_matrix', 0, pass_by_obj=True), promotes=['*'])
self.add('slope_SN', IndepVarComp('slope_SN', 0, pass_by_obj=True), promotes=['*'])
self.add('number_of_modes', IndepVarComp('number_of_modes', NFREQ, pass_by_obj=True), promotes=['*'])
self.add('compute_shear', IndepVarComp('compute_shear', True, pass_by_obj=True), promotes=['*'])
self.add('shift_value', IndepVarComp('shift_value', 0.0), promotes=['*'])
self.add('frame3dd_convergence_tolerance', IndepVarComp('frame3dd_convergence_tolerance', 1e-7), promotes=['*'])
self.add('max_taper_ratio', IndepVarComp('max_taper_ratio', 0.0), promotes=['*'])
self.add('min_diameter_thickness_ratio', IndepVarComp('min_diameter_thickness_ratio', 0.0), promotes=['*'])
# Environment
self.add('air_density', IndepVarComp('air_density', 0.0), promotes=['*'])
self.add('air_viscosity', IndepVarComp('air_viscosity', 0.0), promotes=['*'])
self.add('wind_reference_speed', IndepVarComp('wind_reference_speed', 0.0), promotes=['*'])
self.add('wind_reference_height', IndepVarComp('wind_reference_height', 0.0), promotes=['*'])
h = np.sqrt(mu*p)
unknowns['vp'] = h/rp
unknowns['va'] = h/ra
if __name__ == '__main__':
prob = Problem(root=Group())
root = prob.root
root.add('mu_comp', IndepVarComp('mu', val=0.0, units='km**3/s**2'),
promotes=['mu'])
root.add('r1_comp', IndepVarComp('r1', val=0.0, units='km'),
promotes=['r1'])
root.add('r2_comp', IndepVarComp('r2', val=0.0, units='km'),
promotes=['r2'])
root.add('dinc1_comp', IndepVarComp('dinc1', val=0.0, units='deg'),
promotes=['dinc1'])
root.add('dinc2_comp', IndepVarComp('dinc2', val=0.0, units='deg'),
promotes=['dinc2'])
root.add('leo', system=VCircComp())
root.add('geo', system=VCircComp())
root.add('transfer', system=TransferOrbitComp())
root.connect('r1', ['leo.r', 'transfer.rp'])
root.connect('r2', ['geo.r', 'transfer.ra'])